Java: Snake nachprogrammieren Demo
Letzte Woche habe ich versucht das iPhone Spiel Foold-it! in Java nach zu programmieren und heute habe ich eine weitere kleine Demojavaanwendung fertiggestellt, die sich an dem altbekannten Spiel Snake orientiert.
Irgendwie bin ich auf dem Geschmack gekommen Retro Games nach zu programmieren, das macht echt Spaß. heute will ich euch meine kleine Version von Snake "Sneaky" zeigen. Wie auch Fill IT ist dies ein reines Demospiel um das Prinzip deutlich zu machen. Deswegen habe ich auch hier nur die Basisfunktionalität eingebaut.
Als Vorbild habe ich mir hier das Snake genommen, das man von den ganz alten Nokia Handys kennt. Geniales und einfaches Spielprinzip mit Suchtfaktor!
Meine Umsetzung unterscheidet sich deswegen kaum. Es ist lediglich etwas bunter geworden, der Kopf der Schlange ist Rot und der Punkt der eingesammelt werden soll ist grün! Desweiteren habe ich eine Punkte Anzeige implementiert und auch einen Zähler die die Spielzeit in Sekunden anzeigt!
Wie auch in dem letzten Projekt könnt ihr euch sowohl die fertig kompilierte Binary laden oder gleich den Quelltext!
Mit dem Kommentieren des Quelltextes habe ich mir diesemal mehr Mühe gegeben, und viel mehr geschrieben, sodass ihr euch ganz gut zurecht finden werdet!
An dieser Stelle sei auch hier gesagt, dass ich noch ein Java Anfänger bin und der Code deswegen sehr wahrscheinlich nicht perfekt seit wird aber zum Üben dennoch sehr geeignet!
Wenn ihr Bugs oder Fehler findet, könnt ihr diese Gerne als Kommentar oder per Mail an mich senden, gern auch mit Lösung (ihr habt ja den Quelltext!
) Aber auch Verbesserungsvorschläge, was den Code angeht sind gern gesehen!
Ihr könnt es natürlich auch gern weiter entwickeln, schickt mir dann einen Screenshot oder sowas
Um den Quelltext verstehen zu können reichen auch Grundkenntnisse in Java und in diesen Themengebieten:
- Objektorientierte Programmierung (OOP)
- Grafische Programmierung (GUI)
- Vererbung
- Eventbehandlung
Download: Source Download: Binary (WIN/MAC/LINUX)
Januar 3rd, 2011
Hallo BigBasti!
Du hast mir erstmal sehr geholfen,
kam an einer stelle nicht weiter,
dennoch habe ich vll eine verbeserung, du hast für das eventhandling eine “If-Verzweigung” verwendent, was auch nicht schlecht ist,
aber was noch ressourcensparender wäre ist “switch”
Mit dem kannst du angeben, was bei einem tastendruck passieren soll und dabei musst du nicht erst durch die ganze If-verzwigung gehen.
In deinem Beispiel:
public void keyReleased(KeyEvent e) {
//Auf Tastendruck reagieren
if(e.getKeyCode() == KeyEvent.VK_RIGHT){
Game.snake.setDir(“right”);
}else if(e.getKeyCode() == KeyEvent.VK_LEFT){
Game.snake.setDir(“left”);
}else if(e.getKeyCode() == KeyEvent.VK_UP){
Game.snake.setDir(“top”);
}else if(e.getKeyCode() == KeyEvent.VK_DOWN){
Game.snake.setDir(“bottom”);
}
}
Geht er die ganze Zeit durch die If schleife, was evtl, wenn es ein größerer Code wäre und ein schlechter Computer zum leichten laggen führen würde.
Daher mein Vorschlag:
SWITCH!
Januar 3rd, 2011
Hallo Transporter,
danke für deinen Hinweis, aber hier muss ich aber etwas widersprechen, denn wenn es um einen Vergleich von vier Werten geht macht es hier keinen Unterschied ob wir mit Switch oder If arbeiten, teilweise würde If sogar perfomanter arbeiten.
Auf Switch zu wechseln lohnt es sich wenn man mehr Vergleiche hat, und/oder wenn der Code lesbarer sein soll, was natürlich nie schaden würde.
Heute würde ich an dieser Stelle auch zu Switch greifen, aber performance-mäßig würde das hier keinen Unterschied machen
lg, Sebastian
November 5th, 2011
die steuerung ist etwas lahm aber sonst ganz cool