Java: Wieso sind die wall- bzw. water-Blöcke nicht zu sehen?
Moin erst einmal,
ich glaube nicht, dass irgendjemand das beantworten kann (erwarte ich auch nicht), aber ganz vielleicht gibt es ja jemand, der seit 20 Jahren jeden Tag Java-Codes schreibt und hier auf Anhieb sieht, was falsch ist.
Also, joa, zu den Infos: Ich bin gerade dabei, eine Map für mein Spiel zu machen und das Programm sollte eigentlich aus einer Textdatei ablesen, an welches Feld (von dem 16x12-Spielfeld) welcher Block (0 = grass, 1 = wall, 2 = water) kommen soll.
Ähm, aber die wall- bzw. water-Blöcke sind nicht zu sehen. Im Folgenden seht ihr Bilder vom relevanten Code.
Falls ihr irgendwelche Rückfragen habt oder mehr Bilder braucht, bitte fragt! Danke!
Könntest du vielleicht das Projekt irgendwo hochladen, damit wir es debuggen können?
weißt du wie? oder wo? ich nicht
z. B. hier
das kostet
Am besten auf github.com oder so hochladen. Kostet da auch nichts :)
habe gestern fast eine stunde lang versucht herauszufinfden wie github funktioniert. hat nicht funktioniert
1 Antwort
Es gibt zwar ein paar überdenkenswerte Entscheidungen:
- Uneindeutige oder fehlerhafte Bezeichner wie gp, tile, getTileImage
- Fehlende Stringenz bei der Array-Syntax (eckige Klammern mal Java-typisch hinter dem Datentyp, dann wieder C-typisch hinter dem Variablennamen)
- Die spaltenweise Speicherung der Matrix ([col][row]), statt zeilenweise ([row][col])
- Fehlende Kapselung der Felder von GamePanel und Tile
- Eine fehlende Freigabe aller Ressourcen, sollte das Einlesen der Textdatei scheitern (try-with-resources wäre angebracht, im Ausnahmefall wäre zudem eine Logging-Aktion sinnvoll)
doch logische Fehler beim Sammeln der Daten und ihrer Auswertung sehe ich erst einmal nicht.
Mit größerer Wahrscheinlichkeit liegt die Fehlerquelle bei den Dateien selbst.
a) Möglicherweise zeigen alle Bilddateien dieselbe Textur.
b) Beim Lesezugriff auf die Textdatei wird eine Ausnahme ausgelöst (vllt. kann sie nicht gefunden werden / es fehlen Leseberechtigungen / ...). Da du kein Logging o.ä. für diesen Fall eingebaut hast, bleibt dieser Fehler erst einmal verborgen. Die Matrix bleibt bei ihrem Initialzustand (alle Felder sind mit 0 besetzt), also wird nur die Grastextur gezeichnet.