Java
Java: Snake nachprogrammieren Demo
Posted on .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! :D) 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) GitHub: Snake_2009
Sebastian Gross
http://www.bigbasti.comSebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.
Author Transporter
Posted at 12:24 3. Januar 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!
Author admin
Posted at 21:07 3. Januar 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
Author schulbus
Posted at 20:20 5. November 2011.
die steuerung ist etwas lahm aber sonst ganz cool
Author Hans Peter
Posted at 15:17 22. Februar 2012.
Warum verwendest du hier Endlosschleifen die du dann per if Bedingung mit break abbrichst? wäre doch viel schöner die Bedingung gleich in die while Schleife zu packen! (Game class)
Author Sebastian Gross
Posted at 15:28 22. Februar 2012.
Hallo Hans,
in dem Code wirst du noch viele weitere Stellen finden, die „nicht so optimal“ sind 😉
Dieses kleine Spiel stellt meine ersten Gehversuche mit Java dar, dem entsprechend sind da auch viele Patzer drin 🙂
Gruß, Basti