BigBastis Blog

Java: Snake nachprogrammieren Demo

Introduction

user

Sebastian Gross

Sebastian 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.


LATEST POSTS

Handling too long scrollspy menus 10th June, 2015

Java: Create ZIP archive 23rd March, 2015

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.

nokia_snake_thumbAls Vorbild habe ich mir hier das Snake genommen, das man von den ganz alten Nokia Handys kennt. Geniales und einfaches Spielprinzip mit Suchtfaktor!

sneaky1Meine 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

profile

Sebastian Gross

http://www.bigbasti.com

Sebastian 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.

Comments
user

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!

user

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

user

Author schulbus

Posted at 20:20 5. November 2011.

die steuerung ist etwas lahm aber sonst ganz cool

user

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)

user

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

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

View Comments (5) ...
Navigation