Forum

> > Off Topic > AI_Battel kleines Spiel zum Üben
Forums overviewOff Topic overviewLog in to reply

German AI_Battel kleines Spiel zum Üben

8 replies
To the start Previous 1 Next To the start

old AI_Battel kleines Spiel zum Üben

Feuer der veraenderung
User Off Offline

Quote
Hi,
vor 3 Wochen kam mir auf der Fahrt nach Hause die Idee ein sehr kleines und simples Spiel zu programmieren, welches so aufgebaut ist das sich relativ leicht 2 Bots schreiben lassen, welche das Spiel gegeneinander spielen.


Bilder >


Das Spiel ist in Java geschrieben und um es "spielen" zu können sollte man über eine Entwicklungsumgebung (optimalerweise Eclipse) für Java verfügen, da es sich nur um den Source Code handelt.

Das ganze ist wie gesagt nichts großartiges und bis jetzt kaum getestet (was ihr tun sollt ). Der Source Code sieht nicht schön aus scheint aber zu funktionieren.

Erklärung wie alles funktioniert >


Wie gesagt es ist nichts großartiges oder aufwändiges, aber vielleicht gibt es ja irgendjemanden der das Programm gebrauchen kann .
Version 6.11.2014
http://www.wikiupload.com/Y3VK73T0Q8PETRF

Bugs, Verbesserungsvorschläge usw. können entweder in den Thread oder per PM an mich

Changelog >

Bugs >


Die momentane Version scheint stabil zu sein

mfG Feuer der veränderung
edited 12×, last 06.11.14 02:43:21 pm

old Re: AI_Battel kleines Spiel zum Üben

ohaz
User Off Offline

Quote
Habe mir mal ein wenig den Sourcecode angeschaut. Ein paar Tips die eventuell Probleme lösen könnten oder allgemein zu schönerem Code führen:
• Nutze nicht einen reinen String für die Befehle. Nimm lieber eine Queue. Die fügt automatisch hinten ein und nimmt vorne raus - das ist ja im Prinzip genau das was du willst. Du kannst dann in einer while schleife darüber gehen, mit peek testen ob es noch einen Eintrag gibt, diesen mit .pop() holen und darauf arbeiten.
• Damit du in Parametern nicht immer eine Zahl hinter den Parameter hängen musst kannst du (z.b.) die folgende Funktion auch so schreiben:
1
2
3
4
5
6
7
8
Dein Code:
public void adminUebergabe (Administrator admin1) {
	admin=admin1;
}
Die schönere Variante:
public void adminUebergabe (Administrator admin) {
	this.admin=admin;
}
• Mit Strings zu arbeiten ist allgemein ziemlich... sch*** langsam, aber das sollte hier nochmal OK sein. Wenn das Spiel größer wird, arbeite lieber mit normalen Objekten die den Befehl repräsentieren. Die kann man auch cool in die Queue packen und rausholen - das spart dir eine menge Tokenizing und Strings zusammenbauen / auseinandernehmen. Ausserdem viel besser erweiterbar
• allgemein schönerer Codestil: Normalerweise heißen die Funktionen die eine Variable des Objektes zurückgeben nicht give... sondern get....
• irgendwie scheint dein tokenizer ziemlich oft zu sterben - auch da würde ein einfaches Objekt das einen Befehl darstellt besser sein
• aus irgendeinem mir jetzt auf dem ersten Blick unersichtlichem Problem wird das Teil ziemlich schnell sehr lahm. Liegt vielleicht auch daran dass du mit ziemlich explodierender Stringgröße arbeitest.
• Administrator.java Zeile 10 bester Kommentar
Edit: Achja, es heißt Battle, nicht Battel

old Re: AI_Battel kleines Spiel zum Üben

Feuer der veraenderung
User Off Offline

Quote
Danke .

Das es ab einer bestimmten größe ziemlich lahm wird ist mir auch schon aufgefallen , werde demnächst mal unter den ganzen Strings aufräumen (und es wahrscheinlich so machen wie du es vorgeschlagen hast).

ohaz has written
1
2
3
4
5
6
7
8
Dein Code:
public void adminUebergabe (Administrator admin1) {
     admin=admin1;
}
Die schönere Variante:
public void adminUebergabe (Administrator admin) {
     this.admin=admin;
}

Ich persönlich finde es immer etwas verwirrend wenn Parameter so heißen wie Exemplarvariablen

An meinem Codingstyle muss ich noch arbeiten (und auch daran sinnvolle Kommentare zu schreiben)

edit:
Kurzes Zwischenergebniss:
Konnte die Geschwindigkeit durch entfernen eines unnötigen repaint() 's erhöhen und versuche jetzt das ganze Rundenende System so wie ohaz es vorgeschlagen hat umzuschreiben.

Ansonsten noch eine kurze Umfrage: Welche Informationen sollen auf dem Spielbildschirm angezeigt werden? Soll ich die Möglichkeit des Scrollens und Zoomens mit einbauen? Oder reicht die Darstellung des Spiels nur mit der Veränderung der Feldfarben aus?
edited 1×, last 03.11.14 09:11:19 am
To the start Previous 1 Next To the start
Log in to replyOff Topic overviewForums overview