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. wo ist die 2nd taste ich kann nicht auf die operatoren zugreifen ich hab ti nspire cas und finde die da nicht
    hilfe

  2. hi

    ich hab dein spiel programmiert .
    es läuft aber nich richtig
    bei mir blinkt immer eine null und ein plus wandert von dem bildschirm links unten aus er ecke ein plus nach links und stöst dann gegen ein mal zeichen
    und es spelen sich am oberen bildschirm rand immer die zahlen von0-keine ahnung ab und werden immer langsamer

    ich hab den ti-82 stats

  3. Echt der Hammer das Spiel!
    Respekt für diese Leistung!
    Das mit dem Programmieren in langweiligen Mathe-Stunden kenn ich…
    Aber ich hätte nie so ein Programm schreiben können
    Wegen finanzieller Entlastung der Eltern hat die ganze Klasse leider nur den TI-82-Stats bekommen.
    Das Programm läuft zwar, dennoch hätte ich ein paar Fragen:
    1.Sollte die Schlange als blinkende 0 dargestellt werden
    2.Warum bewegt sie sich nicht von Anfang an – man kann nämlich auch einfach nichts drücken und kassiert dabei Punkte
    3.Wenn ich das * fresse, passiert nichts.Warum?
    4.Bewegt sich das * auch einmal an eine andere Stelle?

    lg aus Tirol,
    philippw
    ^^calculator noster amamus^^

  4. Was passiert, wenn du das schleißende ” weglässt?

    Sry, mit dem Voy200 kenn ich mich nicht aus, aber hier sind n paar Zusatzinfos:
    https://en.wikibooks.org/wiki/TI-Basic_Programs
    https://en.wikibooks.org/wiki/TI-Basic

    Zitat Wikipedia:
    “Versions of TI-BASIC

    The main versions of TI-BASIC in use today are the following two:

    * The TI-BASIC that comes with the TI-89, TI 89 Titanium, TI-92, TI-92 Plus and Voyage 200 calculators. This is the more powerful version of TI-BASIC.

    * The TI-BASIC that comes with the TI-83, TI-83+, TI-83+ Silver Edition, TI-84+ and TI-84+ Silver Edition calculators. This is a less powerful version of TI-BASIC than the previous one, but still can be used to make many different types of programs.”

  5. Moinmoin.
    Ich teste es grade.

    Ich hab erstmal (zum testen) nur Output (2,3,”hi”) (und sehr viele andere konstellationen) ausprobiert, und er sagt mir, es würde eine “)” fehlen.

    Kann es sein, dass der ti voy200 den output-befehl anders implementiert?

    lg aus dem sonnigen norden,
    Urinator (lat. der Pisser)

  6. jub, dass ist das Leerzeichen-Zeichen.

    Von hier aus kann ich dir leider nicht sagen, was dein Problem ist, ohne deinen Code zu sehen. Alle Klammern korrekt wieder geschlossen, alle Anführungszeichen wieder beendet?

    Der Stern steht für das Mal-Zeichen ja.

    Ich kann dir sonst von hier aus leider nicht weiterhelfen ^^
    Im Zweifelsfall hier einfach genau deinen Code posten, aber es ist vermutlich besser, erstmal selbst nochmal alls zu checken ;)

  7. sehr gute mal etwas in der art zu machen
    bei mir ist ein fehler in der 30. Zeile bei der letzten Klammer
    das ) is falsch..

    *dieser stern ist der ein mal zeichen?
    und
    Output(Y,X,” “) in das zwischen den ” eine normale lücke also Alpha+0?

    bin noch ein anfänger hab einen 83+ seit 3Tagen

  8. Bei mir funktionierts FAST
    aber anstatt ner schlange ist bei mir immer nur eine 0 auf dem bildschirm und bewegen kann ich auch nichts…
    ich hab einen TI 82 STATS

  9. Also ich habs ja auch mal versucht (mit deinem Programm)und es klappte auch nicht.
    Aber mal ganz im ernst: Ist ein schwanzloser Snake-Klon nicht ein wenig, nun ja, witzlos ??!

    xD Ich mein ja nur.. Spiel mal Blockdude ohne Steine…

    gern geschehen ^^

    P.S.: Deine Basics an sich sind aber mal echt große klasse ;)

  10. Wenn man 2nd + MATH (also Test) drückt, dann kann man die verschiedenen Operatoren wählen.
    Direkt daneben, in dem Feld LOGIC (2nd + MATH + Nach Rechts) findet man die AND/OR-Sachen.

    Im Zweifelsfall findet man alle Befehle auch unter 2nd + 0 im Catalog ;)

  11. Hi,
    der Code ist cool(endlich mal was, wenn man kein Verbindungskabel hat)
    Aber wie mache ich = und die und “and” und “or”?

    Gruß,
    TaschenrechnerFreak

  12. Hast du alle Kommas und Anführungszeichen beachtet?

    Sonst poste hier mal die 5 Zeilen um den Fehler herum hier…an dem Code oben liegts vermutlich nicht, da er ja bei anderen funktioniert hat ^^

    Aber ohne deinen Code kann ich den Fehler auch nicht sehen ^^

  13. Bei mir gehts nit (TI-48plus9
    ichfind den fehler nicht
    Fehlermaldung in zeile 58 die rechte klammer
    was ist da falsch?????

  14. Hehe, hat sich schon erledigt, jz klappts :) war doch nur n doofer veripper^^
    Danke,machst echt gute Tuts! Lg

  15. Schade, irgentwas klappt da bei mir nicht. Wenn ich das programm ausführ schaff ichs bis zu der Anzeige ” Snake press enter” und die +e am rand, wenn ich dann aber enter drück kommt der tolle syntax Error :( bin nochma alles durchgegangen ein tippfehler ist mir nicht aufgefallen. Ich habe den Ti 82 stats. Lg und Danke im Vorraus (PS: den outputbefehl mit Visit https://www.haukeluebbers.de hatte ich absichtlich weggelassen weil er bei mir warscheilnich über den displayrand gekommen wär)

  16. Hi Nocke!
    Da ist mir wohl ein Fehler unterlaufen, vielen Dank für den Hinweis.
    Zwei Zeilen über dem
    :End:0->Q
    habe ich nun ein
    :If(X<E):Then
    ergänzt.
    Jetzt sollte es eigentlich klappen…

    • Mit dem TI 83+ – mit den anderen kenn ich mich leider nicht aus…vielleicht sind einige Befehle unterschiedlich, aber an sich müsste die Grundsyntax gleich bleiben

  17. Wurzel_aus war nur eine Pseudo-Funktion, da ich das echte Wurzel-Zeichen nicht darstellen konnte. Um die Wurzel-Funktion auf dem Taschenrechner zu finden, musst du 2nd + x² drüken ;)