Spiele auf einem Sharp EL 9900

Mittlerweile habe ich viel mehr Spiele geschrieben, siehe hier. 🙂

Ich bin stolzer Besitzer eines Sharp EL 9900. Dieser GTR hat zwar kein Farbdisplay oder Touchscreen, kann dafür aber auch rechnen und ist mit ca. 65€ auch für einen Normalsterblichen erschwinglich.

Nachdem ich mich einige Zeit mit dem Taschenrechner beschäftigt hatte, fragte ich mich, ob man nicht neben normalen Programmen, die ich bereits programmiert hatte (Lineare Funktionen-Berechner etc.), nicht auch Spiele programmieren könnte. Ich fing also an, im Internet zu suchen. Die einzige brauchbare Site war diese, auf der ich zumindest ein Mastermind-Spiel finden konnte.

Damit gab ich mich natürlich nicht zufrieden, darum programmierte ich ein Schiffe-versenken-Spiel, das man zu zweit spielen muss. Dieses kann man sich hier (ganz unten) auf meiner Homepage downloaden. Danach versuchte ich, das Spiel umzuschreiben, sodass man gegen den GTR spielen konnte, was mir aber nur teilweise gelang, weil ich nach einiger Zeit auch keine Lust mehr hatte.

Nachtrag: Den Download vom Schiffeversenken gibt es schon seit einiger Zeit nicht mehr, war auch kein so tolles Spiel. Ich habe jetzt ein Minesweeper und ein Vier gewinnt-Spiel geschrieben, das man zu zweit spielen kann. Hier ist der Code vom Minesweeper (ist etwas länger). 😀 Der Pfeil bezeichnet die [STO]-Taste. Um manche Befehle zu erhalten, muss man sich weiter durch die Menüs kramen… die Bedienungsanleitung hilft da. Das Spiel ist etwas langsam und verschlingt einiges an Speicher, wenn man mit einem sehr großen Feld spielt. Die Größe verstellt man zuerst mit den Pfeiltasten, bestätigt wird mit der 5. Danach auch immer Cursor mit Pfeiltasten bewegen und mit der 5 klicken.

AxisOFF
0→Xmin
0→Ymin
126→Xmax
64→Ymax
Text(24,5,"v1.3.2")
Text(0,9,"(C) 2009 BY MAIK")
Text(14,4,"MINESWEEPER")
Wait
9→X
9→Y
Goto SET

Label SET
ClrG
Line(0,64-Y*6,X*4,64-Y*6)
Line(X*4,64,X*4,64-Y*6)
Key K
X-(X>2)*(K=11)→X
X+(X<31)*(K=10)→X
Y-(Y>2)*(K=12)→Y
Y+(Y<10)*(K=13)→Y
If K=5Goto CMAT
Goto SET

Label CMAT
ClrG
Line(1,11,1,14)
Line(126,11,126,14)
Line(126,14,1,14)
Line(1,11,126,11)
round(X*Y/6.4,0)→W
X→H
Y→M
{M*3+4,H+2}→dim(mat A)
fill(0,mat A)
For I,1,W,1
rndInt(2,H+1)→X
rndInt(2,M+1)→Y
I+((mat A(Y,X)=1)*-1)→I
mat A(Y,X)→L
1→mat A(Y,X)
-99→mat A(Y+M+1,X)
For J,X-1,X+1,1
For K,Y-1,Y+1,1
mat A(K+M+1,J)+(L=0)*1→mat A(K+M+1,J)
Next
Next
Line(123/W*(I-1)+2,12,123/W*I+2,12)
Line(123/W*(I-1)+2,13,123/W*I+2,13)
Next
0→mat A(1,1)
Text(4,9,"<PRESS ENTER TO START>")
Wait
ClrG
1→X
1→Y
Line(0,64-M*6,H*4,64-M*6)
Line(H*4,64,H*4,64-M*6)
Goto GAME

Label GAME
If mat A(1,1)=H*M-WGoto WIN
PxlCHG(X*4-4,Y*6-4)
PxlCHG(X*4-0,Y*6-4)
PxlCHG(X*4-2,Y*6-6)
PxlCHG(X*4-2,Y*6-2)
Key K
PxlCHG(X*4-4,Y*6-4)
PxlCHG(X*4-0,Y*6-4)
PxlCHG(X*4-2,Y*6-6)
PxlCHG(X*4-2,Y*6-2)
If K=11GotoL
If K=12GotoO
If K=10GotoR
If K=13GotoU
If K=5GotoDA
Goto GAME

Label L
X-(X-1>0)→X
Goto GAME
Label O
Y-(Y-1>0)→Y
Goto GAME
Label R
X+(X<H)→X
Goto GAME
Label U
Y+(Y<M)→Y
Goto GAME

Label DA
If mat A(Y+M+2,X+1)≥1Goto DA2
If mat A(Y+1,X+1)=0Goto DA3
Goto LOOSE

Label DA2
(mat A(Y+M*2+3,X+1)≠1)+mat A(1,1)→mat A(1,1)
Text(X-1,((mat A(Y+M+2,X+1)≠1)*11+(mat A(Y+M+2,X+1)=1)*Y)-1,"1")
Text(X-1,((mat A(Y+M+2,X+1)≠2)*11+(mat A(Y+M+2,X+1)=2)*Y)-1,"2")
Text(X-1,((mat A(Y+M+2,X+1)≠3)*11+(mat A(Y+M+2,X+1)=3)*Y)-1,"3")
Text(X-1,((mat A(Y+M+2,X+1)≠4)*11+(mat A(Y+M+2,X+1)=4)*Y)-1,"4")
Text(X-1,((mat A(Y+M+2,X+1)≠5)*11+(mat A(Y+M+2,X+1)=5)*Y)-1,"5")
Text(X-1,((mat A(Y+M+2,X+1)≠6)*11+(mat A(Y+M+2,X+1)=6)*Y)-1,"6")
Text(X-1,((mat A(Y+M+2,X+1)≠7)*11+(mat A(Y+M+2,X+1)=7)*Y)-1,"7")
Text(X-1,((mat A(Y+M+2,X+1)≠8)*11+(mat A(Y+M+2,X+1)=8)*Y)-1,"8")
1→mat A(Y+2*M+3,X+1)
Goto GAME

Label DA3
X→C
Y→D
For X,C-(C≠1),C+(C≠H),1
For Y,D-(D≠1),D+(D≠M),1
Text(X-1,((mat A(Y+M+2,X+1)≠1)*11+(mat A(Y+M+2,X+1)=1)*Y)-1,"1")
Text(X-1,((mat A(Y+M+2,X+1)≠2)*11+(mat A(Y+M+2,X+1)=2)*Y)-1,"2")
Text(X-1,((mat A(Y+M+2,X+1)≠3)*11+(mat A(Y+M+2,X+1)=3)*Y)-1,"3")
Text(X-1,((mat A(Y+M+2,X+1)≠4)*11+(mat A(Y+M+2,X+1)=4)*Y)-1,"4")
Text(X-1,((mat A(Y+M+2,X+1)≠5)*11+(mat A(Y+M+2,X+1)=5)*Y)-1,"5")
Text(X-1,((mat A(Y+M+2,X+1)≠6)*11+(mat A(Y+M+2,X+1)=6)*Y)-1,"6")
Text(X-1,((mat A(Y+M+2,X+1)≠7)*11+(mat A(Y+M+2,X+1)=7)*Y)-1,"7")
Text(X-1,((mat A(Y+M+2,X+1)≠8)*11+(mat A(Y+M+2,X+1)=8)*Y)-1,"8")
Text(X-1,((mat A(Y+M+2,X+1)≠0)*11+(mat A(Y+M+2,X+1)=0)*Y)-1,"^")
(mat A(Y+M*2+3,X+1)≠1)+mat A(1,1)→mat A(1,1)
1→mat A(Y+2*M+3,X+1)
Next
Next
C→X
D→Y
Goto GAME

Label LOOSE
For X,1,H,1
For Y,1,M,1
Text(X-1,((mat A(Y+1,X+1)=0)*11+(mat A(Y+1,X+1)=1)*Y)-1,"*")
Next
Next
Wait
ClrG
Text(0,0,"GAME OVER!")
Text(0,1,"1: AGAIN")
Text(0,2,"2: QUIT")
Key K
While K>1
Key K
WEnd
9→X
9→Y
If K=1Goto SET
Zm_Default
AxisON
{1,1}→dim(mat A)
ClrT
Print "PROGRAM CLOSED
End

Label WIN
ClrG
Text(11,0,"YOU WON!")
Wait
Goto LOOSE

Das Programm ist wirklich von mir. Wer hätte sonst so viel Langeweile, um sich das alles auszudenken? Normalerweise kommen dahinter nämlich noch 60 Zeilen für ein Minesweeper-Logo. 😉

Advertisements

Über lemaik

Ich bin Gründer von "Web der Wunder" und interessiere mich sehr für die Informatik. Ich schreibe eigene Programme, die ich dann zum Teil auf meiner Homepage veröffentliche und programmiere Internetseiten. Außerdem mag ich Tischtennis und das Internet. ;-)
Dieser Beitrag wurde unter Sonstiges, Spiele abgelegt und mit , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

58 Antworten zu Spiele auf einem Sharp EL 9900

  1. Golem31 schreibt:

    ich finde das min und max nicht bei mir gibt es nur minimum maximum oder. min( max(
    pls help me!

  2. Golem31 schreibt:

    eine Frage ich schreibe das Minesweeper ab und dinde nirgends wo in den menüs das / zeichen
    Wo ist das?

  3. Wow schreibt:

    Hi Maik wo hast du das gelernt? wahrscheinlich hast du dir das alles selber beigebracht aber
    woher weisst du dann für was die ganzen Befehle sind? Du wusstes das ja wahrscheinlich nicht alles von Anfang an. Oder hast du dir ein Buch gekauft? (PS bist echt der Beste)

    • lemaik schreibt:

      Hallo Moritz, ich habe mir das zum größten Teil tatsächlich selbst beigebracht. Eine gute Referenz für die Befehle ist die Bedienungsanleitung des Taschenrechners.

      Leider stehen dort aber keine Programmiertechniken drin, wie zum Beispiel dass Verschachtelung von Loops nicht gut funktioniert, man aber stattdessen alles über If ... Then Goto machen sollte. Oder dass Matrizen sich prima eignen, um mehr als 26 verschiedene Daten zu speichern. Oder dass das Zeichnen einzelner Pixel länger dauert als das Zeichnen von Linien (weshalb man für große Bilder lieber das Window so skalieren sollte, dass eine Einheit ein Pixel ist).

      Diese und weiter Dinge sind dann eher Erfahrungswerte. Ein Buch dazu wäre mir nicht bekannt, es sollte aber vielleicht mal jemand eines darüber schreiben! 😉

Was sagst du dazu?

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s