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. Muss man den kompletten Quellcode von dem Spiel abschreiben oder geht das auch mit TI-Connect o.ä. und wenn ja,wie?
    LG Marius

      • @Wasn lös hier,
        das Semikolon war ein Fehler meinerseits: alte Programmierer-Angewohnheit Befehle mit einem Semikolon zu beenden, aber natürlich nicht bei TI-BASIC.
        Habs entfernt, danke für den Hinweis :)

        @ PhilDrummer: Glückwunsch zum 200. Kommentar auf meinem Blog :D Und danke für die Hilfe, ich kann nicht immer alles zeitnah beantworten :)

  2. Hi, wenn ich Snake öffne geht es bei mir bis zu press enter und wenn ich dann enter drücke kommt syntax error, wenn ich dann auf goto drücke komme ich zu dem
    If ((Y=D and X=E) or (Y7) or (X<2) or

    ClrHome

    • Hi Anfänger,
      ERR: DOMAIN bedeutet, dass X oder Y zu groß sind, bzw. außerhalb des Displays geschrieben werden soll.
      Hast du X und Y auch am Anfang Werte zugewiesen, also wie hier im Code in Zeile 5 und 6?
      Sonst gehe nochmal durch das gesamte Programm und achte besonders auf diese beiden Variablen.
      Viel Erfolg :)

  3. Hi ich fin die tutorials toll aber gibt es da noch genauere Erklärungen dass man z.b. eigene Programme und spiele erfinden kann ?

  4. Na toll, dein Programm ist ja mal ein Reinfall..xD
    Ohne Schwanz ist es ja nicht schwer zu machen.

    Ich “programmiere” viel mit meinem ti voyage 200.

    so mein größtes Programm ist ein kaufmann simulator,
    oder das 2 spieler schiffe versenken.

    Leider ist der speicher viel zu klein, ich muss immer viele
    alte programme löschen wenn ich was neues machen will.

  5. bei mir funkt es bis es links oben bei den punkten 3 anzeigt und dann kommt err:domain und ich lande dann in zeile 84 ich denke dass er bei z 84 einen output ausserhalb des bildscirms machen will (hab ti 83 plus)

  6. Bei mir geht das irgendwie nicht

    es startet alles gut aber wenn ich dann versuch mit den pfeiltasten zu bedinen passiert nix

  7. Das müssen Tippfehler gewesen sein, bei anderen hat das Programm ja funktioniert ;) Aber es freut mich, dass es auch bei euch letztendlich geklappt hat :)
    Viel Glück mit deinem Tutorial :)

  8. Hey Dubbel, dein Pogramm hatte ein paar Macken, ich habs mit nem Freund korrigiert, jetzt kann man das Futter einsammeln und kriegt dafür 100 Punkte und der Stern ändert die Position. Ich wollte eigentlich auch noch machen, dass er automatisch losläuft, hab aber grad nen paar Aufträge zu erledigen, wenn ich mal nen bischen Zeit hab, mach ich das noch.

    Wer den Code haben will, kann mir ne Mail schicken.

    Gruß Nils O.

    PS: Ich arbeite grad an nem eigenen TI-Basic Tutorial, wenns fertig ist, könnt ihrs auf meiner Homepage mal checken!

  9. Interessant…da ich gerade mein Abi mach hab ich auch in Mathe nicht mehr so viel Zeit für meinen TR, und kenne mich deshalb mit der Graphenprogrammierung nicht so aus ^^ (das “beeindruckenste” was ich mal gemacht habe war die Simulation eines Tunnels, durch den man durchfliegt (mit Fantasie ^^))…

    Wenn du Lust hast könntest du das Tutorial unter deinem Namen erweitern, oder vielleicht den Code für ein kleines Spiel veröffentlichen ;D

  10. hey dubble, vielen vielen dank für das gute tutorial, ich bin könnte zwar dieses snake auch programmieren…aba ich denke du kannst mir doch noch oft helfen….

    ps. ich mache meine spiele (ti 84 plus) meistens auf dem Graphen…weist du was ich meine oder soll ich dazu was posten…
    (können ja auch per email kommunizieren…)

  11. Hi ich bin´s noch mal.
    Warum macht ihr euch das Leben schwerer als es sowieso schon ist (zumindest manchmal)?
    Ihr schreibt zu viel. Gleich beim “Additionierer” kann man eine Zeile so umwandeln, dass das Programm kürzer ist.
    Das merkt man dann in der Summe stark, wenn man große Programme schreibt (Beispiel Formelsammlung mit automatischer erkennung von gesuchten zahlen, sowie deren ausgabe und navigationsmenü zwischen fächern und themen).
    Ich spreche hier wieder mal von einer Kleinigkeit nähmlich:

         : Disp "SUMME"
         : Disp A + B
    

    Und schwubs wird daraus

         : Disp "SUMME",A+B
    

    funktionier genauso gut und benötigt weniger platz.

    PS: Sonst aber super beitrag^^(und lustige idee)

  12. Normalerweise mit den Pfeiltasten.

    Wir haben in Zeile 27 getKey->A zugewiesen, also ist da der Wert der aktuell gedrückten Taste drin. 27 ist glaube ich die nach oben Pfeiltaste.

    Ich werde gleich mal ein kleines Beispielprogramm posten, mit dem man die Zahl der gedrückten Taste ausgeben kann.

  13. glaub hab den fehler schon endekt hab 2 zeilen vergessen reinzuschreiben nur sind sie mitten drin und bevor ich alles darunter lösche wüsste ich gerne ob man mitten drin neue zeilen machen kann und wenn ja wie

  14. hallo dubbel ich habe ein problem mit dem game
    nämlich wenn ich enter drücke und das spiel losgehen sollte kommt sofort game over ohne das ich überhaupt etwas machen kann