home *** CD-ROM | disk | FTP | other *** search
/ EigenPC: Software Surprise / image.IMA / LETTERS.ZIP / LETTERS.BAS next >
Encoding:
BASIC Source File  |  1995-04-22  |  7.3 KB  |  274 lines

  1. '****************************************************
  2. '* DRJ's Letter Invaders V1.00 door John Vanderaart *
  3. '* (C)-1995 Eigen PC, Whizz-Kid Workshop            *
  4. '****************************************************
  5.  
  6. DECLARE SUB ShowScore ()
  7. DECLARE SUB ShowBonus ()
  8. DECLARE SUB DisplayRonde ()
  9. DECLARE SUB VerwerkZin ()
  10. DECLARE SUB VliegLetters ()
  11. DECLARE SUB WegLetter ()
  12. DECLARE SUB MaakSpeelveld ()
  13. DECLARE SUB ZetTijd (Welke!, Kleur!)
  14. DECLARE SUB MaakLetters ()
  15.  
  16. DIM SHARED Zinnen$(10)
  17. DIM SHARED Letters(1 TO 200, 1 TO 26) AS LONG
  18. DIM SHARED ZinL(80)
  19. DIM SHARED ZinX(80)
  20. DIM SHARED ZinY(80)
  21. DIM SHARED ZinF(80)
  22.  
  23. SCREEN 12: MaakLetters
  24. FALSE = 1: TRUE = 0
  25. Stop1 = FALSE: Aantal = 0
  26. WHILE Stop1 = FALSE
  27.   READ Zin$
  28.   IF Zin$ <> "*" THEN
  29.     Zinnen$(Aantal) = Zin$
  30.     Aantal = Aantal + 1
  31.   ELSE
  32.      Stop1 = TRUE
  33.   END IF
  34. WEND
  35. Stop0 = FALSE: Traag = 1000
  36. WHILE Stop0 = FALSE
  37.   NuZin = 0: Score = 0
  38.   FOR Ronde = 1 TO 10
  39.     MaakSpeelveld
  40.     DisplayRonde
  41.     VerwerkZin
  42.     Speed = 1 + (Ronde / 5): Tussen = 75 - (Ronde * 5)
  43.     Tikker = 0: GaatNu = 0: SchietNu = 0
  44.     Tijd = 184: TijdTel = 0
  45.     Stop1 = FALSE: Stop2 = FALSE
  46.     WHILE INKEY$ <> "": WEND
  47.     WHILE Stop1 = FALSE
  48.       Toets$ = INKEY$
  49.       IF LEN(Toets$) = 1 THEN
  50.         SELECT CASE Toets$
  51.           CASE IS = CHR$(27)
  52.             Stop0 = TRUE: Stop1 = TRUE: Ronde = 10
  53.           CASE IS = "+"
  54.             IF Traag < 2500 THEN
  55.               Traag = Traag + 100
  56.             END IF
  57.           CASE IS = "-"
  58.             IF Traag > 0 THEN
  59.               Traag = Traag - 100
  60.             END IF
  61.         END SELECT
  62.         IF (SchietNu <> 0) AND (SchietNu <= GaatNu) THEN
  63.           IF (Toets$ > CHR$(96)) AND (Toets$ < CHR$(123)) THEN
  64.             IF (ASC(Toets$) - 96) = ZinL(SchietNu) THEN
  65.               ZinF(SchietNu) = 2
  66.               Tikker = 0: WegLetter
  67.               SchietNu = SchietNu + 1
  68.               IF ZinL(SchietNu) < 0 THEN
  69.                 SchietNu = SchietNu + 1
  70.               END IF
  71.             END IF
  72.           END IF
  73.         END IF
  74.       END IF
  75.       TijdTel = (TijdTel + 1) AND 7
  76.       IF TijdTel = 0 THEN
  77.         IF Tijd > 0 THEN
  78.           Tijd = Tijd - 1
  79.           SOUND 250, .1
  80.           ZetTijd Tijd, 3
  81.           SOUND 0, .01
  82.         END IF
  83.       END IF
  84.       VliegLetters
  85.       IF Stop2 = TRUE THEN
  86.         Stop1 = TRUE
  87.         Ronde = Ronde - 1
  88.       END IF
  89.       IF SchietNu > LnZin THEN
  90.         ShowBonus
  91.         Stop1 = TRUE
  92.       END IF
  93.       FOR Wacht = 0 TO Traag: NEXT
  94.     WEND
  95.   NEXT
  96.   IF Stop0 = FALSE THEN
  97.     FOR T1 = 0 TO 240
  98.       LINE (200, 237)-(439, 258), 0, BF
  99.       SOUND 0, .05
  100.       LINE (T1, T1)-(639 - T1, 480 - T1), (T1 AND 15), B
  101.       LINE (200, 237)-(439, 258), 12, B
  102.       LOCATE 16, 31: PRINT "Je Hebt Gewonnen!!";
  103.       SOUND 100 + 50 * (T1 AND 31), .25
  104.     NEXT
  105.   ELSE
  106.     Stop0 = TRUE
  107.   END IF
  108. WEND
  109. SYSTEM
  110.  
  111. DATA "eigen pc is het allerleukste tijdschrift"
  112. DATA "eigen pc is ok"
  113. DATA "eigen pc moet niet gekker worden"
  114. DATA "eigen pc denkt natuurlijk met u mee"
  115. DATA "eigen pc wordt gemaakt door uitgeverij computerbranche"
  116. DATA "eigen pc komt altijd met twee diskettes"
  117. DATA "eigen pc wordt ook gelezen door mijn vader"
  118. DATA "eigen pc komt naar je toe"
  119. DATA "eigen pc brengt steeds weer wat anders"
  120. DATA "eigen pc is iedere keer weer beter en mooier"
  121. DATA "*"
  122.  
  123. SUB DisplayRonde
  124.   SHARED Ronde
  125.  
  126.  FOR T1 = 0 TO 15
  127.    LINE (230, 221)-(460, 240), 12, B
  128.    LOCATE 15, 32: PRINT "Dit Is Letter Ronde"; Ronde; "!!";
  129.    SOUND 100 + T1 * 25, 3
  130.    LINE (230, 221)-(460, 240), 0, BF
  131.    SOUND 0, 1
  132.  NEXT
  133.  
  134. END SUB
  135.  
  136. SUB MaakLetters
  137.  
  138.  CLS : COLOR 14
  139.  FOR T1 = 0 TO 12
  140.    FOR T2 = 0 TO 1
  141.      CIRCLE (T1 * 40 + 35, T2 * 48 + 39), 15, 14
  142.      CIRCLE (T1 * 40 + 35, T2 * 48 + 39), 12, 14
  143.      LOCATE T2 * 3 + 3, T1 * 5 + 5
  144.      PRINT CHR$(T1 + T2 * 13 + 65);
  145.      PAINT (T1 * 40 + 48, T2 * 48 + 39), 4, 14
  146.      GET (T1 * 40 + 20, T2 * 48 + 20)-(T1 * 40 + 19 + 31, T2 * 48 + 20 + 34), Letters(1, T1 + T2 * 13 + 1)
  147.    NEXT T2
  148.  NEXT T1
  149.  CLS
  150. END SUB
  151.  
  152. SUB MaakSpeelveld
  153.   SHARED Score
  154.  
  155.  CLS : LOCATE 2, 5: LINE (0, 15)-(639, 32), 1, B
  156.  PRINT "* (C)-1995 Eigen PC * Whizz-Kid Workshop * DRJ's Letter Invaders V1.00 *";
  157.  LINE (0, 447)-(500, 464), 1, B: LINE (502, 447)-(639, 464), 1, B
  158.  LOCATE 29, 65: PRINT "Score: "; : ShowScore
  159.  LINE (82, 400)-(639, 420), 1, B: PAINT (83, 401), CHR$(85), 1
  160.  CIRCLE (90, 150), 8, 15: PAINT (90, 150), 12, 15
  161.  CIRCLE (90, 350), 8, 15: PAINT (90, 350), 12, 15
  162.  CIRCLE (630, 150), 8, 15: PAINT (630, 150), 12, 15
  163.  CIRCLE (630, 350), 8, 15: PAINT (630, 350), 12, 15
  164.  LINE (0, 45)-(80, 434), 1, B: LINE (2, 47)-(78, 64), 1, B
  165.  LOCATE 4, 2: PRINT "Time-Out";
  166.  LINE (230, 221)-(460, 240), 12, B
  167.  LOCATE 15, 32: PRINT "Speeltijd Wordt Opgetikt!";
  168.  FOR T1 = 0 TO 191
  169.    SOUND 250 + T1 * 5, .2
  170.    ZetTijd T1, 14
  171.    SOUND 0, .05
  172.  NEXT
  173.  LINE (230, 221)-(460, 240), 0, BF
  174.  
  175. END SUB
  176.  
  177. SUB ShowBonus
  178.   SHARED Tijd, Score, Ronde, LnZin
  179.  
  180.  IF Tijd > 0 THEN
  181.    LINE (230, 221)-(460, 240), 12, B
  182.    LOCATE 15, 32: PRINT "De Bonus Wordt Bijgeteld!";
  183.    FOR T1 = Tijd TO 0 STEP -1
  184.      SOUND 250 + T1 * 5, .25
  185.      ZetTijd T1, 3
  186.      SOUND 0, .05
  187.      Score = Score + (Ronde * LnZin): ShowScore
  188.    NEXT
  189.    LINE (230, 221)-(460, 240), 0, BF
  190.  END IF
  191.  
  192. END SUB
  193.  
  194. SUB ShowScore
  195.   SHARED Score
  196.  
  197.  LOCATE 29, 72: PRINT USING "########"; Score;
  198.  
  199. END SUB
  200.  
  201. SUB VerwerkZin
  202.   SHARED Aantal, LnZin, NuZin
  203.  
  204.   NuZin = NuZin + 1
  205.   IF NuZin = Aantal THEN
  206.      NuZin = 0
  207.   END IF
  208.   LnZin = LEN(Zinnen$(NuZin))
  209.   FOR T1 = 1 TO LnZin
  210.     ZinL(T1) = ASC(MID$(Zinnen$(NuZin), T1, 1)) - 96
  211.     ZinX(T1) = ((T1 - 1) AND 15) * 32
  212.     ZinY(T1) = 0: ZinF(T1) = 0
  213.   NEXT
  214.  
  215. END SUB
  216.  
  217. SUB VliegLetters
  218.   SHARED Speed, Tussen, Tikker, GaatNu
  219.   SHARED Stop2, LnZin, SchietNu
  220.  
  221.  IF (Tikker = 0) AND (GaatNu < LnZin) THEN
  222.    GaatNu = GaatNu + 1
  223.    IF GaatNu = 1 THEN
  224.      SchietNu = 1
  225.    END IF
  226.    IF ZinL(GaatNu) >= 0 THEN
  227.      ZinF(GaatNu) = 1
  228.    END IF
  229.  END IF
  230.  Tikker = Tikker + 1
  231.  IF Tikker = Tussen THEN
  232.    Tikker = 0
  233.  END IF
  234.  FOR T1 = 1 TO LnZin
  235.    IF ZinF(T1) = 1 THEN
  236.      ZinY(T1) = ZinY(T1) + Speed
  237.      PUT (ZinX(T1) + 104, ZinY(T1) + 40), Letters(1, ZinL(T1)), PSET
  238.      IF ZinY(T1) > 365 THEN
  239.        Stop2 = TRUE
  240.      END IF
  241.    END IF
  242.  NEXT
  243.  
  244. END SUB
  245.  
  246. SUB WegLetter
  247.   SHARED SchietNu, Score, Ronde
  248.       
  249.  LINE (99, 150)-(ZinX(SchietNu) + 119, ZinY(SchietNu) + 59), 2
  250.  LINE (99, 350)-(ZinX(SchietNu) + 119, ZinY(SchietNu) + 59), 2
  251.  LINE (621, 150)-(ZinX(SchietNu) + 119, ZinY(SchietNu) + 59), 2
  252.  LINE (621, 350)-(ZinX(SchietNu) + 119, ZinY(SchietNu) + 59), 2
  253.  FOR T1 = 15 TO 1 STEP -1
  254.    CIRCLE (ZinX(SchietNu) + 119, ZinY(SchietNu) + 59), T1, T1
  255.    SOUND 100 + T1 * 50, .1
  256.  NEXT
  257.  LINE (ZinX(SchietNu) + 104, ZinY(SchietNu) + 44)-(ZinX(SchietNu) + 134, ZinY(SchietNu) + 74), 0, BF
  258.  LINE (99, 150)-(ZinX(SchietNu) + 119, ZinY(SchietNu) + 59), 0
  259.  LINE (99, 350)-(ZinX(SchietNu) + 119, ZinY(SchietNu) + 59), 0
  260.  LINE (621, 150)-(ZinX(SchietNu) + 119, ZinY(SchietNu) + 59), 0
  261.  LINE (621, 350)-(ZinX(SchietNu) + 119, ZinY(SchietNu) + 59), 0
  262.  LOCATE 29, 1 + SchietNu: PRINT CHR$(ZinL(SchietNu) + 64);
  263.  Score = Score + (Ronde * SchietNu): ShowScore
  264. END SUB
  265.  
  266. SUB ZetTijd (Welke, Kleur)
  267.  
  268.  X = ((183 - Welke) AND 7) * 9 + 5
  269.  Y = (((183 - Welke) AND 248) / 8) * 16 + 66
  270.  LINE (X, Y)-(X + 6, Y + 14), Kleur, BF
  271.  
  272. END SUB
  273.  
  274.