practic 1/87, S. 30-31
Lutz Wolfien
Computer-Spielprogramm
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
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