practic 1/87, S. 30-31

Lutz Wolfien

Computer-Spielprogramm

practic-87-11.jpg

Computer werden zum alltäglichen Handwerkszeug einer ständig wachsenden Anzahl von Beschäftigten aller Berufe. Vom Fahrkartendrucker über die elektronische Platzkartenreservierung, Auskunftsautomaten, Schreibcomputer und CAD/CAM-Arbeitsstationen reicht eine immer größer werdende Palette.

Im Fünfjahrplanzeitraum 1986/90 sind fast eine Million Lehrlinge zu befähigen, die moderne Rechentechnik und Informationsverarbeitung zu beherrschen. Schon jetzt gibt es viele Pionierhäuser, Stationen Junger Techniker und Berufsschulen, die mit Computern ausgerüstet sind. Die Anzahl von Computerklubs bei den verschiedensten Einrichtungen wächst ständig. Die Produktion von einfachen, erweiterungsfähigen Computern für die Bevölkerung erreicht jetzt eine Größenordnung, die der Beschäftigung mit dieser Technik Massencharakter verleiht.

Mit dieser Ausgabe beginnend, wollen wir der Informatik und Computertechnik einen festen Platz einräumen, ohne traditionelle Gebiete im Inhalt unserer Zeitschrift zu vernachlässigen.

Schwerpunkte unserer Beiträge sehen wir in allgemein nützlicher Software. Es werden nicht immer komplette Programme sein. In vielen Fällen reicht der Lösungsweg zur Abarbeitung einer speziellen Aufgabenstellung. Auf dem Gebiet der Hardware werden wir u.a. Peripheriegeräte (Schnittstellen) und Anwendungsmöglichkeiten bringen.

Computerspiele sind gut geeignet, einem großen Personenkreis die Scheu vor der umfangreichen Tastatur und den vielen Spezialworten im Umgang mit einem Computer zu nehmen. Früher oder spater taucht der Wunsch auf, die Geheimnisse der „Black-box“ zu ergründen und ein vorliegendes Programm zu verandern oder eigene Vorstellungen zu verwirklichen. In einem Spielprogramm kann die Wirkung der einzelnen Befehle schnell ohne ökonomische Auswirkungen ausprobiert werden.

Das vorliegende Programm wurde für den Z 1013 erarbeitet. Auf anderen Computern lassen sich einige Befehle kürzer und damit einfacher darstellen.

Der Computer zeichnet in zufälligen Abständen die gleiche Anzahl Pünktchen (Sterne: 240 POKE P, 213) und Kreise (Planeten: 220 POKE P, 140) auf den Bildschirm.

Bei der Version 1 sind es 60…75 und bei Version 2 90…110. Etwa in Bildmitte erscheint auf Tastendruck die Sternschnuppe. Sie läßt sich mit den Cursortasten nach links und rechts bewegen. Da der Z 1013 keine Cursortasten nach oben und unten hat, wurde die „LT-Taste“ als Aufwärtstaste (330) und die „Space“-Taste als Abwärtstaste (340) programmiert.

Im Bild 1 sind die einzelnen Bildelemente zur Verdeutlichung gekennzeichnet: a: Stern, b: Planet, c: zurückgelegter Weg der Sternschnuppe (Schweif). Die Aufgabe des Spielers besteht darin, mit möglichst wenig

practic-87-12.jpg

Schritten in der Version 1 alle Sternchen oder in der Version 2 eine durch den Rechner bestimmte Teilmenge (Anzahl) aufzusammeln.

Jeder eingesammelte Stern wird gezählt (Zeile d in Bild 1). Wurde ein Stern oder der eigene Schweif überfahren, erfolgt eine Fehlerzählung (Zeile e in Bild 2). Nach Beendigung eines Durchlaufes erfolgt eine Punktbewertung (720).

Jeder Spielfeldaufbau erfolgt neu in veränderter Form mit veränderter Anzahl von Sternen und Planeten.

Im oben beschriebenen Programm hat man zwischen den einzelnen Schritten unbegrenzt Zeit zu überlegen. Wesentlich spannender wird es, wenn die im Monitor vorhandene Inkey-Routine genutzt wird, um einen automatischen Vorlauf der Sternschnuppe zu erreichen. Wird in Zeile 128 eine Zahl größer als 500 gewählt, wird die Schrittgeschwindigkeit geringer. Überschreitet man einen seitlichen Spielfeldrand, erscheint die Sternschnuppe auf der gegenüberliegenden Seite in der nächsten Zeile.

  010 REM STERNSCHNUPPE
  020 OUTCHAR 12
  030 PRINT;PRINT;PRINT
  040 PRINT"* * S t e r n s c h n u p p e *"
  050 FOR I=1 TO 32
  060 OUTCHAR 42
  070 NEXT I
  080 FOR I=1 TO 8
  090 PRINT
  100 NEXT I
  110 PRINT "Version 1 oder Version 2 ?"
  120 PRINT;INPUT "V="V
  130 OUTCHAR 12
  140 IF V<1 GOTO 120
  150 IF V>2 GOTO 120
  160 REM BILDAUFBAU
  165 FOR I=1 TO V
  170 P=HEX(EC20);Q=HEX(EDEF)
  180 O=HEX(EF40); S=0;T=0
  190 U=0;N=0
  200 A=RND(12)
  210 B=RND(12)
  220 POKE P,140
  230 P=P+B
  240 POKE P,213
  250 P=P+A;T=T+1
  260 IF P<O GOTO 200
  270 NEXT I
  280 GOSUB 500
  285 REM SPIEL
  290 S=S+1
  300 W=INCHAR
  310 IF W=8 Q=Q-1;GOTO 360
  320 IF W=9 Q=Q+1;GOTO 360
  330 IF W=32Q=Q+32;GOTO360
  340 IF W=85Q=Q-32;GOTO360
  350 GOTO 300
  360 A=PEEK(Q)
  370 IF A#32 GOSUB 395
  380 POKE Q,42
  390 GOTO 290
  395 REM PUNKTE UND FEHLERZAEHLUNG
  400 PRINT
  410 IF A=213 U=U+1
  420 IF A#213 GOTO 470
  430 PRINT U,"-Punkte von ",T
  440 PRINT;PRINT
  450 IF U=T GOTO 600
  460 RETURN
  470 N=N+1
  480 PRINT "Das ist der",#2,N,".Fehler"
  490 RETURN
  500 REM FENSTER
  510 POKE HEX(1B),HEX(80)
  520 POKE HEX(1C),HEX(EF)
  530 POKE HEX(1D),0
  540 POKE HEX(1E),HEX(F0)
  550 CALL HEX(F6D1)
  560 RETURN
  600 POKE HEX(1B),0
  610 POKE HEX(1C),HEX(EC)
  620 POKE HEX(1D),0
  630 POKE HEX(1E),HEX(F0)
  640 CALL HEX(F6D1)
  645 REM AUSWERTUNG
  650 OUTCHAR 12
  660 PRINT U," Punkte"
  670 PRINT;PRINT
  680 PRINT N," Fehler"
  690 PRINT;PRINT
  700 PRINT S," Schritte"
  710 PRINT;PRINT;PRINT;PRlNT
  720 J=((350-S)*U)/(N+1)
  730 PRINT;PRINT;PRINT
  740 PRINT"Damit hast Du:"
  750 PRINT;PRINT J;PRINT
  760 PRINT "Punkte erreicht."
  770 PRINT;PRINT
  780 FOR I=1 TO 32
  790 OUTCHAR 203
  800 NEXT I
  810 PRINT;PRINT;PRINT
  820 PRINT " Noch einmal? Dann bitte"
  830 PRINT;PRINT "Taste>J< druecken!"
  840 W=INCHAR
  850 IF W=74 GOTO 10
  860 OUTCHAR 12
  870 PRINT;PRINT;PRINT;PRINT;TAB(6)
  880 PRINT "Bis bald"
  890 STOP
  122 INPUT "Geschwindigkeit ( 1 - 9 )" G
  124 IF G > 9 GOTO 122
  126 IF G < 1 GOTO 122
  128 G = 500 / G
  275 X = HEX (3600); GOSUB 900
  300 CALL HEX (3600); W - PEEK ( HEX (3A00) )
  301 IFW = 0W = Y
  302 Y = W
  303 IF Q < O POKE (HEX (3A00) ), 20
  306 IF Q > HEX (EC00) POKE (HEX (3A00) ), 20
  305 FOR I = 1 TO G; NEXT I
  900 POKE X, HEX (CD)
  910 POKE (X+1), HEX (30)
  920 POKE (X+2), HEX (F1)
  930 POKE (X+3), HEX (32)
  940 POKE (X+4), 0
  950 POKE (X+5), HEX (3A)
  960 POKE (X+6) HEX (C9)
  970 RETURN