home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 05 / zahlwurm.bas < prev    next >
Encoding:
BASIC Source File  |  1988-02-22  |  6.8 KB  |  266 lines

  1. REM Der Zahlenwurm Teil II - Erweiterungen
  2. REM Spiel zum Kennenlernen des Zahlenraumes 1 - 9
  3. REM (C) 1988 B. Freier & PASCAL Int.
  4.  
  5. SCREEN 1
  6. COLOR 15,0
  7. REM Spielerklaerung            
  8. CLS
  9. LOCATE 2,6:PRINT "Z A H L E N S C H L A N G E"
  10. LOCATE 6,1
  11. PRINT"Bei diesem Spiel geht es darum, eine"
  12. LOCATE 7,1
  13. PRINT"Schlange durch einen Raum zu fuehren,"
  14. LOCATE 8,1
  15. PRINT"in dem die Zahlen von 1 bis 9 stehen."
  16. LOCATE 9,1
  17. PRINT"Die Schlange muss die Zahlen genau in"
  18. LOCATE 10,1
  19. PRINT"der richtigen Reihenfolge fressen,"
  20. LOCATE 11,1
  21. PRINT"wobei mit jeder Ziffer die Laenge der"
  22. LOCATE 12,1:PRINT"Schlange zunimmt."
  23. LOCATE 13,1
  24. PRINT"Die Aussenwand sowie die Schlange"
  25. LOCATE 14,1
  26. PRINT"selbst duerfen nicht angeknabbert wer-";
  27. LOCATE 15,1
  28. PRINT"den. Ein Bremsen ist ebenfalls nicht"
  29. LOCATE 16,1
  30. PRINT"moeglich, da sie sich dadurch selbst"
  31. LOCATE 17,1:PRINT"verschluckt."
  32. LOCATE 19,3:PRINT"Steuerung mit den Pfeiltasten"
  33. LOCATE 20,3:PRINT"oder mit dem Joystick moeglich."
  34. LOCATE 21,3:PRINT"Start mit einer dieser Tasten."
  35. LOCATE 24,6:PRINT"Bitte eine Taste druecken !";
  36.  
  37. WHILE NOT INSTAT:WEND
  38.  
  39. REM Levelabfrage      'Benutzer bestimmt Tempo
  40.  
  41. CLS
  42. LOCATE 4,3
  43. PRINT "Welche Schwierigkeitsstufe: (1..5)";
  44. LOCATE 6,9: PRINT"1  ganz langsam"
  45. LOCATE 8,9: PRINT"2  langsam"
  46. LOCATE 10,9: PRINT"3  mittel"
  47. LOCATE 12,9: PRINT"4  schnell"
  48. LOCATE 14,9: PRINT"5  sehr schnell"
  49. LOCATE 18,3
  50. PRINT"Bitte die gewaehlte Ziffer druecken !";
  51.  
  52.  
  53.  
  54. leveleingabe:          'Auswertung der Eingaben
  55.  
  56. eingabe$=INKEY$
  57. IF eingabe$="" THEN GOTO leveleingabe
  58. IF VAL(eingabe$)<1 OR VAL(eingabe$)>5 THEN_
  59.   GOTO leveleingabe
  60. stufe%=VAL(eingabe$)
  61. level! = 0.1 / stufe% + 0.1
  62.                     'Geschwindigkeit der Stufen
  63.  
  64.  
  65. start:
  66. REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
  67.  
  68. DIM posi%(1:300,1:2)     'Array für Schlangenteile
  69.  
  70. REM Initialisierungen und Voreinstellungen
  71. untergrenze%=49           'Untergrenze für Ziffern
  72. obergrenze%=57           'Obergrenze für Ziffern
  73. waag%=18            'Waagrechte Koordinate
  74. senk%=2                'Senkrechte Koordinate
  75. anfang%=6        'Anfangslänge der Schlange
  76. schluss%=1            'Schwanzende am Anfang
  77. randzeichen%=15       'ASCII-Zeichen für Umrandung
  78. kopfzeichen%=2    'ASCII-Zeichen für Schlangenkopf
  79. schlange%=79    'ASCII-Zeichen für Schlangenkörper
  80. geschafft%=0          'Schalter, wenn Stufe fertig
  81. kollision%=0           'Schalter, falls angestoßen
  82. mehr%=-1       'Schalter für Wachstum der Schlange
  83.  
  84.  
  85.  
  86. REM Spielfeldaufbau        'Setzen des Randes
  87. REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
  88.  
  89. LOCATE 24,7:PRINT "Schwierigkeitsstufe : ";stufe%;
  90.  
  91.  
  92.  
  93. REM Grundstellung     'Ausgangsposition des Kopfes
  94. schirm%(waag%,senk%)=kopfzeichen%
  95. posi%(6,1)=waag%:posi%(6,2)=senk%
  96. LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);
  97. hilf%=14
  98. FOR i%=19 TO 23     'Ausgangsposition der Schlange
  99.   schirm%(i%,2)=schlange%
  100.   posi%(i%-hilf%,1)=i%
  101.   posi%(i%-hilf%,2)=2
  102.   hilf%=hilf%+2
  103.   LOCATE 2,i%:PRINT CHR$(schlange%);
  104. NEXT i%
  105.  
  106.  
  107. REM Speiseaufbau         'Verteilen der Zahlen
  108. REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
  109.  
  110.  
  111.  
  112. abfrage:
  113. REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
  114.  
  115.  
  116.  
  117. steuercodes:                'Einlesen der Eingaben
  118. REM BITTE AUS DEM LETZTEN HEFT VON ÜBERNEHMEN !!
  119.  
  120. IF geschafft%=-1 THEN GOTO naechsterlevel      
  121.                                   'alles geschafft
  122. GOTO steuercodes
  123.  
  124.  
  125.  
  126. kollisionsbehandlung:        'Leider angestoßen
  127. REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
  128.  
  129.  
  130.  
  131. wiederholung:               'Wiederholungsfrage
  132. REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
  133.  
  134.  
  135.  
  136. naechsterlevel:              'Eine Stufe höher
  137. IF stufe%=5 THEN GOTO schlussanzeige
  138. CLS
  139. stufe%=stufe%+1
  140. LOCATE 5,5
  141. PRINT "Prima, Du hast es geschafft !"
  142. PLAY "O3 T180 CFCFGAGFG"  'Kleine Melodie mit PLAY
  143. LOCATE 7,5
  144. PRINT "Du kommst in die naechste"
  145. LOCATE 9,5
  146. PRINT "Schwierigkeitsstufe : ";stufe%
  147. level!=0.3/stufe%+0.1
  148. goto wiederholung
  149.  
  150.  
  151.  
  152. schlussanzeige:              'Alles geschafft
  153. CLS
  154. LOCATE 5,5
  155. PRINT "Prima, Du hast es geschafft !"
  156. PLAY "O3 T180 CFCFGAGFG"  'Kleine Melodie mit PLAY
  157. GOTO wiederholung
  158.  
  159.  
  160.  
  161. falschetaste:           'Falsche Taste gedrückt
  162. REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
  163.  
  164.  
  165.  
  166. beendigung:           'Reguläres Programmende
  167. REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
  168.  
  169.  
  170.  
  171. links:             'Unterprogramm Linkspfeil
  172. DO WHILE NOT INSTAT
  173. waag%=waag%-1
  174. IF schirm%(waag%,senk%)=untergrenze% THEN_
  175.  untergrenze%=untergrenze%+1:speisezahl%=_
  176.  speisezahl%-1:SOUND 500,1:mehr%=-1 ELSE_
  177.  SOUND 300,1
  178. IF schirm%(waag%,senk%)=0 OR schirm%(waag%,senk%)_
  179.   =untergrenze%-1 THEN schirm%(waag%+1,senk%)=_
  180.   schlange%:schirm%(waag%,senk%)=kopfzeichen%:_
  181.   LOCATE senk%,waag%+1:PRINT CHR$(schlange%);:_
  182.   LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);:_
  183.   GOSUB schwanz: ELSE kollision%=-1:EXIT LOOP
  184. DELAY level!
  185. IF speisezahl%=0 THEN geschafft%=-1:EXIT LOOP
  186. mehr%=0
  187. LOOP
  188. RETURN
  189.  
  190.  
  191.  
  192. rechts:            'Unterprogramm Rechtspfeil
  193. DO WHILE NOT INSTAT
  194. waag%=waag%+1
  195. IF schirm%(waag%,senk%)=untergrenze% THEN_
  196.  untergrenze%=untergrenze%+1:speisezahl%=_
  197.  speisezahl%-1:SOUND 500,1:mehr%=-1 ELSE_
  198.   SOUND 300,1
  199. IF schirm%(waag%,senk%)=0 OR schirm%(waag%,senk%)_
  200.   =untergrenze%-1 THEN schirm%(waag%-1,senk%)=_
  201.   schlange%:schirm%(waag%,senk%)=kopfzeichen%:_
  202.   LOCATE senk%,waag%-1:PRINT CHR$(schlange%);:_
  203.   LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);:_
  204.   GOSUB schwanz: ELSE kollision%=-1:EXIT LOOP
  205. DELAY level!
  206. IF speisezahl%=0 THEN geschafft%=-1:EXIT LOOP
  207. mehr%=0
  208. LOOP
  209. RETURN
  210.  
  211.  
  212.  
  213. ab:               'Unterprogramm Abwärtspfeil
  214. DO WHILE NOT INSTAT
  215. senk%=senk%+1
  216. IF schirm%(waag%,senk%)=untergrenze% THEN_
  217.    untergrenze%=untergrenze%+1:speisezahl%=_
  218.    speisezahl%-1:SOUND 500,1:mehr%=-1 ELSE_
  219.    SOUND 300,1
  220. IF schirm%(waag%,senk%)=0 OR schirm%(waag%,senk%)_
  221.   =untergrenze%-1 THEN schirm%(waag%,senk%-1)=_
  222.   schlange%:schirm%(waag%,senk%)=kopfzeichen%:_
  223.   LOCATE senk%-1,waag%:PRINT CHR$(schlange%);:_
  224.   LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);:_
  225.   GOSUB schwanz: ELSE kollision%=-1:EXIT LOOP
  226. DELAY level!
  227. IF speisezahl%=0 THEN geschafft%=-1:EXIT LOOP
  228. mehr%=0
  229. LOOP
  230. RETURN
  231.  
  232.  
  233.  
  234. auf:              'Unterprogramm Aufwärtspfeil
  235. DO WHILE NOT INSTAT
  236. senk%=senk%-1
  237. IF schirm%(waag%,senk%)=untergrenze% THEN_
  238.   untergrenze%=untergrenze%+1:speisezahl%=_
  239.   speisezahl%-1:SOUND 500,1:mehr%=-1 ELSE_
  240.   SOUND 300,1
  241. IF schirm%(waag%,senk%)=0 OR schirm%(waag%,senk%)_
  242.   =untergrenze%-1 THEN schirm%(waag%,senk%+1)=_
  243.   schlange%:schirm%(waag%,senk%)=kopfzeichen%:_
  244.   LOCATE senk%+1,waag%:PRINT CHR$(schlange%);:_
  245.   LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);:_
  246.   GOSUB schwanz: ELSE kollision%=-1:EXIT LOOP
  247. DELAY level!
  248. IF speisezahl%=0 THEN geschafft%=-1:EXIT LOOP
  249. mehr%=0
  250. LOOP
  251. RETURN
  252.  
  253.  
  254.  
  255. schwanz:
  256. anfang%=anfang%+1
  257. IF anfang%>300 THEN anfang%=1
  258. posi%(anfang%,1)=waag%
  259. posi%(anfang%,2)=senk%
  260. IF mehr%=0 THEN LOCATE posi%(schluss%,2),_
  261.   posi%(schluss%,1):PRINT CHR$(32);:schirm%_
  262.   (posi%(schluss%,1),posi%(schluss%,2))=0:_
  263.   schluss%=schluss%+1
  264. IF schluss%>300 THEN schluss%=1
  265. RETURN
  266.