home *** CD-ROM | disk | FTP | other *** search
/ MikeOS 4.5 / mikeos.iso / mikeos.flp / muncher.bas < prev    next >
BASIC Source File  |  2014-12-21  |  6KB  |  285 lines

  1. rem ** Muncher for MikeOS **
  2. rem Created by Justin Tokarchuk
  3. rem ------------------------------
  4.  
  5. rem VARS
  6. rem j = score multiplier
  7. rem x, y = coords
  8. rem e = body
  9. rem s = score
  10. rem i = multipliers
  11. rem n = wallpiece counter, gets reloaded by bonus engine
  12.  
  13. cursor off
  14. goto logo
  15.  
  16.  
  17. waitforenter:
  18.   waitkey x
  19.   if x = 13 then goto pregame
  20.   if x = 27 then cursor on
  21.   if x = 27 then END
  22.   goto waitforenter
  23.    
  24. logo:
  25.   cls
  26.   cursor off
  27.   move 0 7
  28.   print "     ##     ## ##     ## ##    ##  ######  ##     ## ######## ########  ###" 
  29.   print "     ###   ### ##     ## ###   ## ##    ## ##     ## ##       ##     ## ###"
  30.   print "     #### #### ##     ## ####  ## ##       ##     ## ##       ##     ## ###"
  31.   print "     ## ### ## ##     ## ## ## ## ##       ######### ######   ########   # " 
  32.   print "     ##     ## ##     ## ##  #### ##       ##     ## ##       ##   ##       " 
  33.   print "     ##     ## ##     ## ##   ### ##    ## ##     ## ##       ##    ##  ###" 
  34.   print "     ##     ##  #######  ##    ##  ######  ##     ## ######## ##     ## ###" 
  35.   print ""
  36.   print "     ======================================================================"
  37.   print ""
  38.   print "                      Press ENTER to play, ESC to quit.                    "
  39.   gosub changelook
  40.  
  41.   goto waitforenter
  42.   
  43. changelook:
  44.   for b = 0 to 24
  45.     for a = 0 to 78
  46.       move a b
  47.       curschar c
  48.       if c = '#' then c = 219
  49.       if c = '=' then c = 220
  50.       print chr c ;
  51.     next a
  52.   next b
  53. return
  54.  
  55. pregame:
  56.   cls
  57.   n = 0
  58.  
  59.   cls
  60.   cursor off
  61.   gosub setwalls
  62.  
  63.  
  64.   rem ** Place user in middle of screen. **
  65.   x = 40
  66.   y = 12
  67.   move x y
  68.  
  69.   rem ** dirs = up (1), down (2), left (3), right (4)
  70.   rem ** start moving left
  71.  
  72.   d = 3
  73.  
  74.   rem ** score
  75.   s = 0
  76.  
  77.   rem ** Body character.
  78.   e = 35
  79.  
  80.  
  81. gosub addapple
  82.  
  83. game:
  84.   print chr e ;
  85.   gosub printscore
  86.   pause 1
  87.   if d = 1 then pause 1
  88.   if d = 2 then pause 1
  89.   
  90.   getkey k
  91.   
  92.   rem ** controls
  93.   if k = 'w' then d = 1
  94.   if k = 'W' then d = 1
  95.   if k = 'a' then d = 3
  96.   if k = 'A' then d = 3
  97.   if k = 's' then d = 2
  98.   if k = 'S' then d = 2
  99.   if k = 'd' then d = 4
  100.   if k = 'D' then d = 4
  101.  
  102.   
  103.   rem if they press ESC exit game
  104.   if k = 27 then goto finish
  105.   
  106.   if d = 1 then gosub moveupdown
  107.   if d = 2 then gosub moveupdown
  108.   if d = 3 then gosub moveleft
  109.   if d = 4 then gosub moveright
  110.  
  111.   move x y
  112.   
  113.   curschar c
  114.   rem ***did we collide with wall***
  115.   if x = 79 then goto finish
  116.   if c = 'x' then goto finish
  117.   if c = 178 then goto finish
  118.   if c = e then goto finish
  119.   if c = '@' then gosub getbonus
  120.   goto game
  121.  
  122. moveupdown:
  123.   move x y
  124.   print " "
  125.   if d = 1 then y = y - 1
  126.   if d = 2 then y = y + 1
  127.   return
  128.  
  129.  
  130. moveleft:
  131.   print " " ;
  132.   move x y
  133.   print " "
  134.   x = x - 1
  135.   return
  136.   
  137. moveright: 
  138.   if x = q AND y = r then gosub getbonus
  139.   move x y
  140.   print " "
  141.   x = x + 1
  142.   return
  143.   
  144. setwalls:
  145.   a = 178
  146.  
  147.   move 0 0
  148.   for x = 0 to 78
  149.     print chr a ;
  150.   next x
  151.  
  152.   move 0 23
  153.   for x = 0 to 78
  154.     print chr a ;
  155.   next x
  156.  
  157.   for y = 0 to 23
  158.     move 0 y
  159.     print chr a ;
  160.   next y 
  161.  
  162.   for y = 0 to 23
  163.     move 78 y
  164.     print chr a ;
  165.   next y
  166.  
  167.   return  
  168.  
  169. printscore:
  170.   move 0 24
  171.   print "Score: " ;
  172.   print s ;
  173.   move x y
  174.   return
  175.   
  176. addapple:
  177.   rand q 1 77
  178.   rand r 1 22
  179.   g = 64
  180.   if q = x then goto addapple
  181.   if r = y then goto addapple
  182.   move q r
  183.   print chr g
  184.  
  185.   rem generate random number of wallpieces
  186.   if s < 500 then rand g 1 2
  187.   if s > 499 then rand g 2 5
  188.   if s > 999 then rand g 5 10
  189.   if s > 1999 then rand g 10 20
  190.   morewallz:
  191.   if s > 0 then gosub wallpiece
  192.   g = g - 1
  193.   if g > 0 then goto morewallz
  194.   move x y
  195.   return  
  196.  
  197. wallpiece:
  198.   rem ** now add a wall piece **
  199.   rand l 1 77
  200.   rand m 1 22
  201.   rem Don't put it on a character or the apple please!
  202.   if l = q then goto wallpiece
  203.   if l = x then goto wallpiece
  204.   if m = r then goto wallpiece
  205.   if m = y then goto wallpiece
  206.  
  207.   rem is the wall piece too close to the character?
  208.   if l > x then a = l - x
  209.   if l < x then a = x - l
  210.   if m > y then b = m - y
  211.   if m < y then b = y - m
  212.   if a < 7 then goto wallpiece
  213.   if b < 4 then goto wallpiece
  214.   move l m
  215.   if c = 'x' then gosub wallpiece
  216.   print "x" ;
  217.   
  218.   return
  219.   
  220. getbonus:
  221.   move x y
  222.   g = 1
  223.   print chr g
  224.   pause 1
  225.   move x y
  226.   g = 2
  227.   print chr g
  228.   pause 1
  229.   move x y
  230.   g = 1
  231.   print chr g
  232.   pause 1
  233.   move x y
  234.   print " "
  235.   rem *i = intermediate number for score bonus
  236.   if s > 250 then j = 2
  237.   if s > 1000 then j = 3
  238.   if s > 3000 then j = 5
  239.   if s > 5000 then j = 10
  240.   gosub addapple
  241.   j = 1
  242.   i = 150 * j
  243.   s = s + i
  244.   return
  245.   
  246. finish:
  247.   
  248.   cls
  249.   cursor off
  250.   move 0 2
  251.   print "                     ######      ###    ##     ## ####### "
  252.   print "                    ##    ##    ## ##   ###   ### ##      " 
  253.   print "                    ##         ##   ##  #### #### ##      " 
  254.   print "                    ##   #### ##     ## ## ### ## ######  " 
  255.   print "                    ##    ##  ######### ##     ## ##      " 
  256.   print "                    ##    ##  ##     ## ##     ## ##      " 
  257.   print "                     ######   ##     ## ##     ## ####### "
  258.   print ""
  259.   print "                     #######  ##     ## ######## ########  "
  260.   print "                    ##     ## ##     ## ##       ##     ## "
  261.   print "                    ##     ## ##     ## ##       ##     ## "
  262.   print "                    ##     ## ##     ## ######   ########  "
  263.   print "                    ##     ##  ##   ##  ##       ##   ##   "
  264.   print "                    ##     ##   ## ##   ##       ##    ##  "
  265.   print "                     #######     ###    ######## ##     ## "
  266.   print ""
  267.   print "                             Your Score Was: " ;
  268.   print s
  269.   print ""
  270.   print "                               Play Again? (Y/N)"
  271.   gosub changelook
  272.  
  273.  goto escloop
  274.  
  275. escloop:
  276.   waitkey x
  277.   cursor on
  278.   if x = 'n' then end
  279.   if x = 'N' then end
  280.   if x = 27 then end
  281.   if x = 'y' then goto logo
  282.   if x = 'Y' then goto logo
  283.   goto escloop
  284.   
  285.