home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 04 / zahlwurm.bas < prev    next >
Encoding:
BASIC Source File  |  1980-01-03  |  5.0 KB  |  222 lines

  1. REM Zahlenwurm Version 1  Turbo BASIC
  2. REM Spiel zum Kennenlernen des Zahlenraumes 1 - 9
  3. REM Copyright 1988 by B. Freier & PASCAL Int.
  4.  
  5.  
  6. start:
  7.  
  8. SCREEN 1           'Setzen des Bildschirmmodus
  9. COLOR 15,0                    'Farbzuordnung
  10. CLS
  11. DIM schirm%(1:40,1:22)      'Array für das Spielfeld
  12. FOR x%=1 TO 40        'wird gleich auf 0 gesetzt
  13. FOR y%=1 TO 22
  14. schirm%(x%,y%)=0
  15. NEXT y%
  16. NEXT x%
  17. RANDOMIZE TIMER        'Starten des Zufallsgenerators
  18.  
  19.  
  20.  
  21. REM Initialisierungen und Voreinstellungen
  22.  
  23. level!=0.3      'Verweildauer,eventuell anpassen
  24. untergrenze%=49           'Untergrenze für Ziffern
  25. obergrenze%=57               'Obergrenze für Ziffern
  26. waag%=18            'Waagrechte Koordinate
  27. senk%=2                'Senkrechte Koordinate
  28. randzeichen%=15       'ASCII-Zeichen für Umrandung
  29. kopfzeichen%=2        'ASCII-Zeichen für Figur
  30. geschafft%=0          'Schalter, wenn Stufe fertig
  31. kollision%=0           'Schalter, falls angestoßen
  32.  
  33.  
  34.  
  35. REM Spielfeldaufbau        'Setzen des Randes
  36.  
  37. FOR i%=1 TO 40
  38. FOR j%=1 TO 22
  39.   IF (i%=1) OR (j%=1) OR (i%=40) OR (j%=22) THEN_
  40.    schirm%(i%,j%)= randzeichen%:LOCATE j%,i%:_
  41.    PRINT CHR$(randzeichen%);
  42. NEXT j%
  43. NEXT i%
  44.  
  45.  
  46.  
  47. REM Grundstellung     'Ausgangsposition des Kopfes
  48.  
  49. schirm%(waag%,senk%)=kopfzeichen%
  50. LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);
  51.  
  52.  
  53.  
  54. REM Speiseaufbau         'Verteilen der Zahlen
  55.  
  56. speisezahl%=0
  57. x%=untergrenze%
  58. DO UNTIL x%>obergrenze%
  59.   i%=INT(RND*36+3):j%=INT(RND*18+3)    
  60.                   'nicht an den Rand
  61.     IF schirm%(i%,j%)=0 THEN speisezahl%=_
  62.     speisezahl%+1:schirm%(i%,j%)=x%:LOCATE j%,i%:_
  63.     PRINT CHR$(x%);:x%=x%+1
  64. LOOP                    'Schleifenende
  65.  
  66.  
  67.  
  68. abfrage:
  69.  
  70. WHILE INSTAT            'Tastaturpuffer leeren
  71. nix$=INKEY$
  72. WEND
  73.  
  74.  
  75.  
  76. steuercodes:                'Einlesen der Eingaben
  77.  
  78. eingabe$=INKEY$
  79. IF LEN(eingabe$)=1 THEN GOTO falschetaste
  80. IF LEN(eingabe$)<>2 THEN GOTO steuercodes
  81.                       'Cursortaste
  82. eingabe$=RIGHT$(eingabe$,1)
  83. IF eingabe$=CHR$(72) THEN         'Aufwärtspfeil
  84.    GOSUB auf
  85. ELSEIF eingabe$=CHR$(80) THEN         'Abwärtspfeil
  86.   GOSUB ab
  87. ELSEIF eingabe$=CHR$(75) THEN           'Linkspfeil
  88.   GOSUB links
  89. ELSEIF eingabe$=CHR$(77) THEN          'Rechtspfeil
  90.   GOSUB rechts
  91. ELSE                     'andere Taste
  92.    PRINT CHR$(7);:GOTO falschetaste
  93. END IF
  94. IF kollision%=-1 THEN GOTO kollisionsbehandlung
  95.                    'ist angestoßen
  96. IF geschafft%=-1 THEN GOTO schlussanzeige
  97.                       'alles geschafft
  98. GOTO steuercodes
  99.  
  100.  
  101.  
  102. kollisionsbehandlung:        'Leider angestoßen
  103.  
  104. CLS
  105. LOCATE 5,5
  106. PRINT "Schade, Du bist angestossen !";
  107. SOUND 1700,4
  108.  
  109.  
  110.  
  111. wiederholung:               'Wiederholungsfrage
  112.  
  113. LOCATE 11,7:PRINT "Noch ein Spiel (J/N)";
  114. eingabe$=INKEY$
  115. IF eingabe$="" THEN GOTO wiederholung
  116. IF UCASE$(eingabe$)="N" THEN GOTO beendigung
  117. IF UCASE$(eingabe$)="J" THEN GOTO start
  118. GOTO wiederholung
  119.  
  120.  
  121.  
  122. schlussanzeige:              'Alles geschafft
  123.  
  124. CLS
  125. LOCATE 5,5
  126. PRINT "Prima, Du hast es geschafft !"
  127. SOUND 900,8
  128. GOTO wiederholung
  129.  
  130.  
  131.  
  132. falschetaste:           'Falsche Taste gedrückt
  133.  
  134. CLS
  135. LOCATE 5,5
  136. PRINT "Das war eine falsche Taste!"
  137. LOCATE 7,3                
  138. PRINT "Benutze nur die Pfeiltasten !"
  139.                 'Hinweis für Besserung
  140. GOTO wiederholung
  141.  
  142.  
  143.  
  144. beendigung:           'Reguläres Programmende
  145.  
  146. SCREEN 0
  147. CLS
  148. END             'Ende des Hauptprogrammes
  149.  
  150. links:             'Unterprogramm Linkspfeil
  151. DO WHILE NOT INSTAT
  152. waag%=waag%-1
  153. IF schirm%(waag%,senk%)=untergrenze% THEN_
  154.  untergrenze%=untergrenze%+1:speisezahl%=_
  155.  speisezahl%-1:SOUND 500,1:schirm%(waag%,senk%)=0_
  156.  ELSE SOUND 300,1
  157. IF schirm%(waag%,senk%)=0 THEN _
  158.   LOCATE senk%,waag%+1:PRINT CHR$(32);:_
  159.   LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);_
  160.   ELSE kollision%=-1:EXIT LOOP
  161. DELAY level!
  162. IF speisezahl%=0 THEN geschafft%=-1:EXIT LOOP
  163. LOOP
  164. RETURN
  165.  
  166.  
  167.  
  168. rechts:            'Unterprogramm Rechtspfeil
  169.  
  170. DO WHILE NOT INSTAT
  171. waag%=waag%+1
  172. IF schirm%(waag%,senk%)=untergrenze% THEN_
  173.  untergrenze%=untergrenze%+1:speisezahl%=_
  174.  speisezahl%-1:SOUND 500,1:schirm%(waag%,senk%)=0_
  175.  ELSE SOUND 300,1
  176. IF schirm%(waag%,senk%)=0 THEN _
  177.   LOCATE senk%,waag%-1:PRINT CHR$(32);:_
  178.   LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);_
  179.   ELSE kollision%=-1:EXIT LOOP
  180. DELAY level!
  181. IF speisezahl%=0 THEN geschafft%=-1:EXIT LOOP
  182. LOOP
  183. RETURN
  184.  
  185.  
  186.  
  187. ab:               'Unterprogramm Abwärtspfeil
  188.  
  189. DO WHILE NOT INSTAT
  190. senk%=senk%+1
  191. IF schirm%(waag%,senk%)=untergrenze% THEN_
  192.  untergrenze%=untergrenze%+1:speisezahl%=_
  193.  speisezahl%-1:SOUND 500,1:schirm%(waag%,senk%)=0_
  194.  ELSE SOUND 300,1
  195. IF schirm%(waag%,senk%)=0 THEN _
  196.   LOCATE senk%-1,waag%:PRINT CHR$(32);:_
  197.   LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);_
  198.   ELSE kollision%=-1:EXIT LOOP
  199. DELAY level!
  200. IF speisezahl%=0 THEN geschafft%=-1:EXIT LOOP
  201. LOOP
  202. RETURN
  203.  
  204.  
  205.  
  206. auf:              'Unterprogramm Aufwärtspfeil
  207.  
  208. DO WHILE NOT INSTAT
  209. senk%=senk%-1
  210. IF schirm%(waag%,senk%)=untergrenze% THEN_
  211.  untergrenze%=untergrenze%+1:speisezahl%=_
  212.  speisezahl%-1:SOUND 500,1:schirm%(waag%,senk%)=0_
  213.  ELSE SOUND 300,1
  214. IF schirm%(waag%,senk%)=0 THEN _
  215.   LOCATE senk%+1,waag%:PRINT CHR$(32);:_
  216.   LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);_
  217.   ELSE kollision%=-1:EXIT LOOP
  218. DELAY level!
  219. IF speisezahl%=0 THEN geschafft%=-1:EXIT LOOP
  220. LOOP
  221. RETURN
  222.