Hi,
In diesem Workshop geht es wie ich angekündigt hab um das alte Handygame "Snake", Ziel ist es das Programm wietestgehend selbstständig nachzumachen
Vorwort
Für alle die nicht wissen was Snake überhaupt ist, hier eine kurze Erklärung:
Ihr werdet später sehn, dass es wenig gibt was einer größeren sachlichen Erklärung bedarf.
Bei dieser Arbeit geht es vorallem darum logische Vorgänge zu verstehn und die Problematik einiger Vorgänge zu durchschaun und zu lösen.
Alles durch ein Tutorial vorgekaut zu bekommen wäre sinnlos, da man nicht nachdenken muss und folglich nichts neues lernt.
Grundvorraussetzungen
An alle Copy&Paster:
Bitte spart euch die Arbeit ab hier weiterzulesen und ladet euch einfach den vollständigen SourceCode aus dem Anhang.
Also, falls ihr alle Voraussetzung erfüllt und genug Bereitschaft habt die Arbeit durchzuziehen kann's ja losgehn :)
Solltet ihr wirklich mal ernsthafte Probleme, trotz meinen Hinweisen, haben könnt ihr auf meine Codesequenzen im unteren Teil des Abschnittes zurückgreifen.
Das Grundgerüst
Damit man eure Ansätze mit meinen Codebeispielen vergleichen kann, solltet ihr ein ähnliches Grundgerüst haben ;)
Dafür brauch ihr als erstes eine GUI, die ungefähr so aussehn sollte:
[Only registered and activated users can see links. Click Here To Register...]
Die Maße sind:
Zusätzlich braucht ihr eine Schleife, die sich wiederholt solange kein Fehler gemacht wird.
Ich hab den einfachsten Weg gewählt und einfach eine Endlosschleife genommen.
Wenn man verliert beendet sich das Programm einfach durch "Exit".
Ihr könnt das auch gerne anders lösen, allerdings kann es dann gut sein, dass euer Script nichtmehr mit dem Meinem verglichen werden kann.
Gut, da wir nun das Einfache geklärt hätten kann es weitergehn ;)
Bis jetzt sollte alles verständlich sein, solltet ihr trotzdem schon Probleme bekommen haben schaut euch bitte erstmal die Grundlagen an (was ich aber nicht glaube^^)
Bewegung und Steuerung
Bewgung
Natürlich muss sich die Schlange auch bewegen können, nur wie stell ich das am besten an und worauf muss ich achten?
Nunja, wie ihr das anstellt bleibt euch überlassen (sonst wäre es ja kein Workshop und auch nicht EUER eigenes Programm ;))
Hier allerdings einige Tipps, die euch helfen werden:
Soblad ihr einen funktionierenden Ansatz für eine Richtung habt könnt ihr das Prinzip auf die anderen Richtungen übertragen.
Steuerung
Die Steuerung ist dagegen ehr Schreibkram, auch dafür ein paar Tipps:
Solltet ihr etwas nicht verstanden haben oder euch ein Tipp gefehlt hat zögert nicht mir eine PM zu schicken oder hier im Thread zu fragen.
Es ist nicht unbedingt leicht abzuschätzen welche Fragen jmnd. hat der das Programm noch nicht geschrieben hat :rolleyes:
Futter erstellen und Fressen
Futterkörner an einer zufälligen Position erstellen
Dieser Teil beansprucht nicht viel Zeit aber hier spielen die Fenster und Körpermaße die größte Rolle ;)
Worauf muss ich beim erstellen des Futterkorns achten?
So sollte das Fenster danach aussehn:
[Only registered and activated users can see links. Click Here To Register...]
Fressen
Das Fressen bedarf keiner weiter großen Tipps (es muss nur darauf geachtet werden, dass dem Körper-Array ein neues Teil hinzugefügt wird)
Auf den Rest sollte man leicht selber kommen ;)
Die Grafik für das Korn findet ihr im Anhang bei den ResourceDaten.
Körpermangement
Das folgen des Körpers
Jetzt kommt der wohl anspruchsvollste Teil (zumindest hab ich ihn so empfunden, vllt. ist es aber mit den Tipps leichter ;) )
Es geht wie die Überschrifft schon sagt um die Bewegung des restlichen Körpers, Ziel ist es, dass der Körper dem Kopf folgt.
Hier die Tipps:
Game Over
Irgendwann kommt der traurige Zeitpunkt wo das Spiel vorbei ist :mad:
Die Funktion dafür stellt nach den anderen Dingen die ihr bis jetzt gemacht habt keine Schwierigkeit mehr dar.
Alles was ihr jetzt noch braucht ist eine ForSchleife und den KörperArray.
Das Programm soll überprüfen ob sich der Kopf auf der Position eines der Körpersegmente befindet.
Falls Ja soll sich Snake schließen ansonsten soll es einfach normal weiterlaufen.
Die beiden Aufgaben können am besten in einer Funktion zusammengefasst werden ;)
-Codebeispiele-
Nur dann benutzen, wenn ihr absolut verzweifelt seid und es selber nicht auf die Reihe bekommt!
In diesem Workshop geht es wie ich angekündigt hab um das alte Handygame "Snake", Ziel ist es das Programm wietestgehend selbstständig nachzumachen
Vorwort
Für alle die nicht wissen was Snake überhaupt ist, hier eine kurze Erklärung:
Warum ein Workshop und kein Tutorial?Quote:
Bei dem Spiel Snake geht es um eine Schlange, wie der Name unschwer vermuten lässt ;).
Im laufe des Spiel muss diese Schlange, die Anfangs ehr ein kleiner Wurm ist, Futterkörner fressen umzu wachsen.
Dabei muss der Spieler darauf achten sich nicht selber zu beissen, ansonsten ist das Spiel vorbei und man hat verloren.
Ihr werdet später sehn, dass es wenig gibt was einer größeren sachlichen Erklärung bedarf.
Bei dieser Arbeit geht es vorallem darum logische Vorgänge zu verstehn und die Problematik einiger Vorgänge zu durchschaun und zu lösen.
Alles durch ein Tutorial vorgekaut zu bekommen wäre sinnlos, da man nicht nachdenken muss und folglich nichts neues lernt.
Grundvorraussetzungen
- grundlegende AutoIT Kenntnisse
- AutoIT Compiler und einen geeigneten Editor (SciTe, etc.)
- Die ResourceDaten aus dem Anhang (Grafiken)
- logisches Denkvermögen und Interesse
An alle Copy&Paster:
Bitte spart euch die Arbeit ab hier weiterzulesen und ladet euch einfach den vollständigen SourceCode aus dem Anhang.
Also, falls ihr alle Voraussetzung erfüllt und genug Bereitschaft habt die Arbeit durchzuziehen kann's ja losgehn :)
Solltet ihr wirklich mal ernsthafte Probleme, trotz meinen Hinweisen, haben könnt ihr auf meine Codesequenzen im unteren Teil des Abschnittes zurückgreifen.
Das Grundgerüst
Damit man eure Ansätze mit meinen Codebeispielen vergleichen kann, solltet ihr ein ähnliches Grundgerüst haben ;)
Dafür brauch ihr als erstes eine GUI, die ungefähr so aussehn sollte:
[Only registered and activated users can see links. Click Here To Register...]
Die Maße sind:
- Fenster: 300*300px
- Kopf und Körpersegmente: 10*10px Die KörperTeile befinden sich in einem Array.
Zusätzlich braucht ihr eine Schleife, die sich wiederholt solange kein Fehler gemacht wird.
Ich hab den einfachsten Weg gewählt und einfach eine Endlosschleife genommen.
Wenn man verliert beendet sich das Programm einfach durch "Exit".
Ihr könnt das auch gerne anders lösen, allerdings kann es dann gut sein, dass euer Script nichtmehr mit dem Meinem verglichen werden kann.
Gut, da wir nun das Einfache geklärt hätten kann es weitergehn ;)
Bis jetzt sollte alles verständlich sein, solltet ihr trotzdem schon Probleme bekommen haben schaut euch bitte erstmal die Grundlagen an (was ich aber nicht glaube^^)
Bewegung und Steuerung
Bewgung
Natürlich muss sich die Schlange auch bewegen können, nur wie stell ich das am besten an und worauf muss ich achten?
Nunja, wie ihr das anstellt bleibt euch überlassen (sonst wäre es ja kein Workshop und auch nicht EUER eigenes Programm ;))
Hier allerdings einige Tipps, die euch helfen werden:
- Differenziert die einzelnen Bewegungsrichtungen und probiert nicht sie in einer Funktion zusammenzufassen
- Das Programm muss erkennen wann die Schlange den Rand des Fensters erreicht hat und darauf reagieren (Die Schlange kommt am anderen Ende des Fensters wieder herraus)
- Additon und Subtraktion spielen eine wichtige Rolle
- Die Schlange muss sich auch ohne eine Eingabe vom Spieler in die eingeschlagene Richtung fortbewegen
- Der Kopf muss sich immmer in gleichgroßen Schritten bewegen (am besten seine eigene Größe)
Soblad ihr einen funktionierenden Ansatz für eine Richtung habt könnt ihr das Prinzip auf die anderen Richtungen übertragen.
Steuerung
Die Steuerung ist dagegen ehr Schreibkram, auch dafür ein paar Tipps:
- Variablen helfen bei der Differenzierung/Bestimmung der Richtungen
- Es muss irgendwie erkannt werden welche Taste gedrückt wurde und die jeweilige Taste mit der dazugehörigen Bewegungsfunktion verknüpft werden(Ich hab die Pfeiltasten genommen)
- Du musst eine Pause einsetzen, da ansonsten der Kopf einfach so durchrast und gar nicht mehr erkannt werden kann o0 (aber bitte kein Sleep abgesehn von Tests, Timer und Do...Until... ftw. ;) Überlegt was der Vorteil dieser Schreibweise ist und nutzt ihn intelligent aus)
- Es geht nur um den Kopf!
- Überlegt 2mal ob die Positionen an denen die Schlange am anderen Ende des Fenster wieder herauskommt auch richtig ist (ich hatte nen recht dummen Fehler, der darauf beruhte, dass ich nicht ordentlich über den richtigen Einsetzpunkt nachgedacht hab :o Folge war, dass die Schlange nach durchschreiten des Fensterrandes ein Bewegungschschritt zuspät wieder am anderen Ende erschien^^300-10=290)
Solltet ihr etwas nicht verstanden haben oder euch ein Tipp gefehlt hat zögert nicht mir eine PM zu schicken oder hier im Thread zu fragen.
Es ist nicht unbedingt leicht abzuschätzen welche Fragen jmnd. hat der das Programm noch nicht geschrieben hat :rolleyes:
Futter erstellen und Fressen
Futterkörner an einer zufälligen Position erstellen
Dieser Teil beansprucht nicht viel Zeit aber hier spielen die Fenster und Körpermaße die größte Rolle ;)
Worauf muss ich beim erstellen des Futterkorns achten?
- Das Futterkorn muss genauso groß sein wie der Kopf
- Das Futterkorn muss sich ein einem Raster befinden, so dass der Schlangenkopf sich genau auf die Position des Korn's bewegen kann (Die Größe des Bewegungschrittes des Kopfes, nen bisschen Multiplikation und "Random" sind hier von Bedeutung)
So sollte das Fenster danach aussehn:
[Only registered and activated users can see links. Click Here To Register...]
Fressen
Das Fressen bedarf keiner weiter großen Tipps (es muss nur darauf geachtet werden, dass dem Körper-Array ein neues Teil hinzugefügt wird)
Auf den Rest sollte man leicht selber kommen ;)
Die Grafik für das Korn findet ihr im Anhang bei den ResourceDaten.
Körpermangement
Das folgen des Körpers
Jetzt kommt der wohl anspruchsvollste Teil (zumindest hab ich ihn so empfunden, vllt. ist es aber mit den Tipps leichter ;) )
Es geht wie die Überschrifft schon sagt um die Bewegung des restlichen Körpers, Ziel ist es, dass der Körper dem Kopf folgt.
Hier die Tipps:
- Der Kopf bleibt unbeeinflusst von dieser Funktion, seine Position spielt aber eine Rolle
- Die Funktion wird am besten direkt nach der Bewegung des Kopfes ausgeführt
- Man brauch die alte Position des Kopfes bevor er weiterbewegt wurde.
- Das Körpersegment x nimmt die Position des Segments x-1 an nachdem x-1 die alte Position von x-1-1 angenommen hat usw.; DIE SEGMENTE BEFINDEN SICH IN EINEM ARRAY *hust* (Brainfuck o0 :D)
Game Over
Irgendwann kommt der traurige Zeitpunkt wo das Spiel vorbei ist :mad:
Die Funktion dafür stellt nach den anderen Dingen die ihr bis jetzt gemacht habt keine Schwierigkeit mehr dar.
Alles was ihr jetzt noch braucht ist eine ForSchleife und den KörperArray.
Das Programm soll überprüfen ob sich der Kopf auf der Position eines der Körpersegmente befindet.
Falls Ja soll sich Snake schließen ansonsten soll es einfach normal weiterlaufen.
Die beiden Aufgaben können am besten in einer Funktion zusammengefasst werden ;)
-Codebeispiele-
Nur dann benutzen, wenn ihr absolut verzweifelt seid und es selber nicht auf die Reihe bekommt!