in Programming, TI-BASIC

TI BASIC Tutorial 4

Nach langem Warten und unzähligen verzweifelten Fanmails [/ironie] hier nun der 4 und letzte Teil des Tutorials.

Laut meinem Plan müsste nun die erste Eingabe kommen (Ich habe allerdings bemerkt, dass auch schon im letzten Tutorial ein Input reingerutscht ist, hab ich wohl übersehen ^^).

In der Theorie sieht die so aus:

Input "Eingabe:",A

In diesem Beispiel würde nun das, was der User eingibt, in der Variable A gespeichert. Mit dieser Variable kann man dann machen was man will, zum Beispiel sie ausgeben.

Wir werden nun mal einen kleinen Additionierer schreiben, also ein Taschenrechner, der nur Plus rechnen kann.

ClrHome
Disp "ADDITIONIERER"
Input "VARIABLE A:",A
Input "VARIABLE B:",B
Disp "SUMME:"
Disp A+B

Doch hier muss der User seine Eingabe ja immer mit ENTER bestätigen: Für ein actionreiches Spiel reicht es also nicht.

Dafür gibts die Funktion

getKey->A

(A ist natürlich nur eine Variable)
Wenn wir nun schreiben:

Lbl A:
getKey->A
If (A > 0)
Disp A
Goto A

Die if-Verzweigung muss hier rein, da sonst die ganze Zeit 0 ausgegeben würde, denn wenn keine Taste gedrückt wurde, ist der Wert von getKey 0.

Wenn man nun verschiedene Tasten drückt kann man die Zahlencodes für sie sehen.
Die Pfeiltasten haben z.B. für oben 25, für rechts 26, für links 24 und für unten 34. 34?
Ja richtig gelesen, denn der Code für die Tasten berechnet sich folgendermaßen:
Die erste Zahl ist die Zeile und die zweite ist die Spalte in der die Taste steht.
Y= ist ja die erste Taste ganz oben. Logischerweise hat sie den Code 11. WINDOW 12, 2nd 21 usw.
Da die Unten-Pfeiltaste zur dritten Zeile gerechnet wird, hat sie den Wert 34.
Diese Eingabemöglichkeit wird auch in dem Spiel von mir ganz unten verwendet.

Noch was zum Schluss:
Wenn ihr, während ihr im Editor seid, auf
PRGM->EXEC geht, eins auswählt und ENTER drückt, wird dieses Programm dann gestartet, wenn euer Programm bei diesem Befehl (prgmNAMEDESPRGMS) ankommt. Natürlich nur wenn dieses Programm auf dem Taschenrechner auch existiert.

Ganz zum Schluss veröffentliche ich hier nochmal den Quellcode für eines meiner Spiele: ein kleiner Snake Klon, mit KI und ohne Schwanz:

ClrHome
Output(3,5,"SNAKE")
Output(4,3,"PRESS ENTER")
Output(8,2,"CODE BY DUBBEL")
6->X
5->Y
5->B
7->D
15->E
0->P
7->N
5->O
Pause
ClrHome
Output(1,1,"++++++++++++++++")
Output(2,1,"+              +")
Output(3,1,"+              +")
Output(4,1,"+              +")
Output(5,1,"+              +")
Output(6,1,"+              +")
Output(7,1,"+              +")
Output(8,1,"++++++++++++++++")
Output(N,O,"*")

Lbl A:
0->C
0->G
getKey->A
If(A=26)
Then
Output(Y,X," ")
1->B
X+1->X
1->C
End
If(A=24)
Then
Output(Y,X," ")
2->B
X-1->X
1->C
End
If(A=25)
Then
Output(Y,X," ")
3->B
Y-1->Y
1->C
End
If(A=34)
Then
Output(Y,X," ")
4->B
Y+1->Y
1->C
End

If(C=0):Then
Output(Y,X, " ")

If(B=1):Then
X+1->X:End
If(B=2):Then
X-1->X:End
If(B=3):Then
Y-1->Y:End
If(B=4):Then
Y+1->Y:End
End

Output(D,E," ")
If(Q=1):Then
If(Y>D):Then
D +1->D:1->G:End
If(Y<D):Then 
D -1->D:1->G:End
If (G=0):Then
If(X>E):Then
E+1->E:End
If(X<E):Then 
E-1->E:End
End:0->Q
Else
1->Q:End
Output(D,E,"+")
If((Y=D and X=E) or (Y<2) or (Y>7) or (X<2) or (x>15)):Then
ClrHome
Output(1,5,"GAME OVER!")
Output(2,9,P)
Output(3,7,"PUNKTE")
Output(4,4,"PRESS ENTER")
Output(6,5,"VISIT:")
Output(7,7,"WWW.")
Output(8,1,"HAUKELUEBBERS.DE")
Pause
prgmSNAKE
Else
Output(Y,X,"O")
End
P +1->P
If(N=Y and O=X):Then
P +100->P
randInt(2,7)->N
randInt(2,14)->O
End
Output(N,O,"*")

Output(1,7,P)
√(113.1337^5)
453.45/45.5^2
66/66^5*3
Goto A

 

Write a Comment

Comment

169 Comments

  1. Hey , super game , ich wollte auch ein Spiel programmieren , aber ich kriege das nicht hin das nach einer sec der wert auch um 1 steigt. Hier mein Ansatz : 0=S S+1->S Lbl A Output (5,7,S) If S S Goto A Das klappt aber nach 10 sec ist er schon bei 100 …

  2. Hi!
    Super gemacht der ganze Block :)
    Ich hätte eine Frage zu Snake: Ich kann leider nicht nach rechts lenken.
    Die Steuerungszeilen habe ich schon überprüft, finde aber nichts :/
    Danke für das ganze Tutorial :)
    Ps: Viele Grüße aus Esens ;)

  3. Erstmal vielen dank für das Spiel.
    Ich habe ein Problem, das Spiel funktioniert allerdings ist die Schlange unendlich riesig (d.h sie lässt sich steuern und bewegt sich fort, aber das Hinterteil bleibt auf der Startposition).

    Wenn ich Tod bin erscheint err:Syntax

  4. Kann man denn Variablen irgendwo fest speichern und ihnen auch einen Namen geben? Dies bräuchte ich z.B. für Leben, dass diese beim Nächsten spielen wieder abgerufen werden können. Man braucht ja auch ab und zu mehr als 26 (A-Z) Variablen. Freue mich über antworten

  5. Hi
    Erstmal super top tutorial.
    Nur bei mir gibt’s ein Problem bei snake
    Ich hab den Ti 84 plus C Silver Edition
    Der hat zwar farb Display aber bei mir ist das Display nicht so groß oder die Schrift ist größer ,da bei mir weniger drauf passt kann ich die ganzen plusse in Zeile 15 und 23 nicht eingeben.

    • Hi,

      ich kann das leider nicht testen, da ich nur einen TI-83 Plus habe.

      Du kannst das Spielfeld natürlich verkleinern/vergrößern, so dass es passt. Dann musst du aber auch die Kollisionsabfragen (Zeile 86) dementsprechend ändern.

      Viel Spaß,
      Hauke

  6. Hallo erstmal!
    Ich habe 2 fragen:
    1. Ist das normal wenn währent dem spiel da noch snake press enter steht? Und 2. Bei mir geht die schlange bzw. Das O nicht nach oben kann mir jemand weiterhelfen?
    Danke schon mal im fohrraus :)

    • Hallo Tobi.

      1. Ja, mit dem derzeitigen Code ist es normal. Ich habe ein ClrHome nach dem ersten Pause vergessen – ist nun korrigiert.

      2. Wenn deine Schlange nicht nach oben gehen kann, dann ist vermutlich was mit der Steuerung in den Zeilen 71-81 falsch. Vermutlich dort, wo wir D-1 setzen, da die Schlange ja nach oben geht, wenn wir diese Variable verkleinern.

  7. Hey,
    Ich habe ein kleines Problem ….:-)
    Ich bin mir ziemlich sicher ,das ich den Code richtig abgeschrieben habe.Jedoch kommt immer ein Domain Fehler in Zeile 82.Ich was was ein Dommain Fehler bedeutet, aber beheben kann ich ihn trotzdem nicht….
    Ps: Ich habe einen TI 82 Stats

  8. Das Spiel ist super.

    Ich habe ein paar “Tippfehler” bemerkt und sie behoben und dann lief das Spiel einwandfrei.

    Danke für die Idee: Jetzt habe ich das Grundgerüst für ein Packman game.

    @georg Im programmeditor:
    [PRGM] » [ >] » [ 6 ]

    • Hi Apix HD,
      danke für deine Kommentare. Ich finde es immer super, wenn User sich gegenseitig helfen. :)

      Weißt du zufällig noch, wo die Tippfehler waren? Dann kann ich die gleich korrigieren.

      Viele Grüße,
      Hauke

  9. Ich habe einen TI-NSPIRE CX.
    Ich finde bei meiner Programierung nicht den Befehl Output.
    Kann mir jemand helfen?
    Danke im Voraus

  10. Hey, wenn Ich das Spiel starte und dann bei press enter ‘enter’ drücke, kommt sofort ‘game over’… Was läuft falsch?

  11. Moin, 1. Super sache die du hier machst!!!
    2. Könntest du den quellcode zum Spiel “Snake” erklären? also wieso du was, dann und dann eingibst. Wäre sehr geil von dir :)