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
Muss man den kompletten Quellcode von dem Spiel abschreiben oder geht das auch mit TI-Connect o.ä. und wenn ja,wie?
LG Marius
steht am ende der 89sten Zeile…
Mit *Alpha* + (-) ;)
@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 :)
Wie mache ich das Zeichen ; ?
finde es im Catalog nicht
achso danke
Du meinst
If((Y=D and X=E) or (Y<2) or (Y>7) or (X<2) or (x>15)):Then
in Zeile 85?Am Ende sind zwei schließende Klammern
ich habe den TI 82-Stats
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
Fehler in Zeile 97, letzte Klammer !?
ERR:DOMAIN
TI-84 +
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 :)
Geht jetzt, aber wenn ich “unten” drücke verlängert sich die Schlange nur, jedoch geht nicht nach unten.
Hi ich fin die tutorials toll aber gibt es da noch genauere Erklärungen dass man z.b. eigene Programme und spiele erfinden kann ?
Mit diesen Grundbausteinen kannst du eigentlich fast alles programmieren. Du musst sie einfach neu zusammensetzen.
Ein weiteres (deutsches) Tutorials gibts hier
Viel Spaß :)
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.
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)
ich hab den ti 82 stats
Bei mir geht das irgendwie nicht
es startet alles gut aber wenn ich dann versuch mit den pfeiltasten zu bedinen passiert nix
Ach ne sorry, hatte Ich schon gepostet!
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 :)
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!
wie ist deine Email, ich möchte auch dass mein Snake klon Futter frisst.
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
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…)
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:
Und schwubs wird daraus
funktionier genauso gut und benötigt weniger platz.
PS: Sonst aber super beitrag^^(und lustige idee)
ok danke hab jetzt den fehler erkannt hab den pfeil vergessen
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.
jetz hab ich alles richtigaber wie lenkt man bei dem game??????
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
ps: ich weiss nicht wo der fehler liegt es kommt nämlich kein err oder sowas
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