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. Der Code ist genau derselbe wie der den du oben gepostet hast, ich hab den Code jetzt schon 4mal neu geschrieben, immer dasselbe. Trotzdem Danke

  2. Ja, es geht in Zeile 13 tatsächlich um “Pause”, ich werde das gleich ändern

    Bei deinem anderen Problem kann ich dir von hier aus nicht helfen, poste am besten mal deinen Code im TR hier, meistens fällt den Leuten dann der Vertipper auf ;)

  3. ich hätte noch eine Frage, in Zeile 13 das P ause ist das richtig so oder soll das Pause heissen? weil P ause gibt’s auf meinem TR nicht.

  4. hi Dubbel,
    mein TI-82 Stats hat ein Problem in Zeile 82 mit dem Else. Weisst du woran das liegen könnte?
    Wenn ich das Programm starte komm ich bin zum “Press Enter bildschirm dann kommt:
    Err:Syntax
    1:Quit
    2:Goto
    bei Goto geht er dann bis zur Fehlerzeile

  5. hi
    bei mir funktioniert das spiel im prinzip. wenn ich jedoch nach rechts drücke geht der nach links und wenn ich links drücke passiert nichts. weißt du wo der fehler liegen könnte? bzw. könntest du mir sagen wo zeilen sind wo ich mal nach einem tippfehler schauen sollte? dank schonmal^^

  6. Ich denke, es ist sinnvoller, wenn du das selber für den Voyage 200 programmierst.
    Alle Befehle raussuchen dauert ewig, und ich müsste dir die ganze Zeit Testversionen schicken, die du dann wieder eingeben müsstest – umständlich.

    Aber wenn du das Spiel auch für den V200 umsetzen würdest, könnten wir den Code hier veröffentlichen, natürlich unter deinem Namen :)

  7. @Dubbel :noch eine frage: wäre es möglich, dass du das ganze mal für einen voyage 200 programmierst.ich weiß du kennst dich nich damit aus aber die befehle gibts im I-net und wenn du dann den code fertig hast kann ich ihn ja mal an meinem ti testen (voyage 200)

  8. @christian: Gute Idee, mach ich beizeiten, bin gerade etwas im Klausurenstress…aber die Herbstferien sind ja auch nichtmehr soo weit weg :)

    @Bug: Wow, nicht schlecht :D
    Wenn du Lust hast kann du ja den Quellcode mal veröffentlichen, und etwas dazu schreiben ;)

  9. hey, ich habs verstanden, das snakeprogramm, und hab sogar einen schwanz hinzuprogrammiert, und häng gerade an dem multiplayer, aber egal :)

    klick oben unter TI BASIC Tutorial 4 auf tibasic, und dann les dir das programm inpong oder so durch, da sind kommentare daei, und es ist nach einem ähnlichen schema geschrieben, wenn du das verstanden hast, dann probier es nochmal mit snake

  10. mann ich habe wieder zu schnell getippt:
    also der kommentar ging an dubbel
    und es wäre halt hilfreich zu wissen wozu die einzelnen befehle dienen da ich ja ein neuling bin und es bringt mir nichts wenn ich das abtippe aber nicht weiß was wozu gehörtoder wie funktioniert

  11. ich wei´ß es ist aufwendig aber könntest du mir eine genaue erklärung zu diesem Program ‘Snake’ schicken. denn ich möchte selber programmieren lernen und es wäre hilfreich wozu die einzelnen befehle dienen .
    wenn es dir keine umstände macht könntest u mir es dann bitte per e-mail schicken?
    christian.roeskens@ewetel.net
    danke

  12. hi, ich bin neu inder welt des programmierens, habe schon einen taschenrechner geschrieben und das Programm aus tutorial 3 etwas erweitert, doch ich versteh dein programm nicht…

    könntest du vll. mal ein paar kommentare hinzufügen, so wie in tutorial 3, damit ich es auch verstehen würde… denn ich versteh so einiges nicht, und vll. ist das was ich denke zu verstehen falsch…

    wäre sehr nett… und schonmal im vorraus danke für die tutorials und deine hilfe.

    MfG
    Bug

    PS: de tutorials sind echt klasse

  13. Bei mir funktioniert das spiel nicht, ich hab jetzt alles nach den Kommentaren verändert und trotzdem geht das Teil nur bis 21 Punkte, egal was ich drücke.
    Was soll eigentlich die Schlange darstellen.

  14. Ich habe den TI-82 und in Zeile 74 muss es heissen:

    If(Y<D):Then
    

    nicht:

    If(Y>D):Then
    

    …und in Zeile 100:
    :If(N=Y and O=X):Then

    nicht:
    :If(N=Y and 0=X):Then

    @philippw, dann passiert auch was, wenn du das Teil frisst…

    Ansonsten: Super Spiel!
    Vielen Dank

  15. Es gibt eine Code-Funktion

    Wenn ihr den Code zwischen [ code ] hier steht euer Code [ / code] – nur ohne die Leerzeichen – schreibt, werden alle Zeichen zugelassen.

    Das ist eine Vorsichtsmaßnahme und unerlaubtes Javascipt (XSS) auf diesem Blog zu verhindern. :)

  16. Tut mir leid, aber die Zeichen stellt der nicht da, wenn ich auf Kommentar abschicken klicke, Sorry

  17. Ich meinte:

    Ich habe den TI-82 und in Zeile 74 muss es heissen:
    : If (YD):Then

    und in Zeile 100:
    If(N=Y and O=X):Then

    nicht:
    If(N=Y and 0=X):Then

    @philippw, dann passiert auch was, wenn du das Teil frisst…

  18. Hmm…ohne deinen Code zu kennen kann ich dir leider nicht wirklich helfen. Was für einen TR hast du und was hast du genau geschrieben in den 5 Zeilen um die Fehlermeldung herum?

  19. coole idee
    ich habe jedoch ein problem bei der 84 zeile, wen ich das programm ausführe und es 3 nullen lädt, kommt eine fehlermeldung und verweisst mich auf diese zeile?, woran könnte das liegen?