home *** CD-ROM | disk | FTP | other *** search
/ Inside Multimedia 1995 August / IMM0895.BIN / magazin / optix / disk1 / optxppac.set / BANDIT_X.OPT < prev    next >
Text File  |  1995-05-08  |  8KB  |  375 lines

  1.  
  2. REM -*******************************************************************-
  3. REM   (c)'95 by Nils Beckmann / CMD       FIDO (2:2437/301.33)
  4. REM -*******************************************************************-
  5. REM   ! Warning ! This one is far from being optimized !
  6. REM   But seems to be not too buggy !
  7. REM   Sorry for the lack of comments in source  :(
  8. REM   But originally this wasn't ment to be released
  9. REM -*******************************************************************-
  10.  
  11. defs(data$)
  12. defs(dum$)
  13. def(i)
  14. def(j)
  15. def(k)
  16. def(x)
  17. def(y)
  18. def(speed1)
  19. def(speed2)
  20. def(speed3)
  21. def(zeilpos1)
  22. def(zeilpos2)
  23. def(zeilpos3)
  24. def(zd)
  25. def(kdum)
  26. def(zdum)
  27. def(z2dum)
  28. def(cred)
  29. def(zcount)
  30. def(zin)
  31. def(slowdown)
  32. def(startcred,100)
  33. def(pay,10)
  34. def(Cred2,15)
  35. def(Cred3,50)
  36. defs(cred$)
  37.  
  38. def(runs,25)
  39. def(smin,5)
  40. def(smax,10)
  41.  
  42. defai(ton,24)
  43.  
  44. procedure tonleiter
  45.   new(ton)
  46.   locals(i)
  47.   rem   Frequenzfaktor (12te Wurzel aus 2) = 1,059  !!
  48.   rem   Der jeweils nächste Ton ist immer um diesen
  49.   rem   Faktor höher als der vorangegangene.
  50.   rem   Kammerton 'A' = 440 Hertz
  51.   ton[1]  :=440
  52.   for i:=2 to 24 do                  *** über zwei Oktaven
  53.     ton[i]  := ton[i-1]*1059/1000
  54.   next(i)
  55. return
  56.  
  57. procedure timing
  58.   locals(i,j)
  59.   j:=systime
  60.   for i:=0 to 100 do
  61.     loadsprite(0,0,0,0,10,10)
  62.   next(i)
  63.   j:=systime-j
  64.   smin:=smin*j/60
  65.   smax:=smax*j/60
  66. return
  67.  
  68. procedure cutclips
  69.   readpic('plakat.tga')
  70.   loadpic(0,0)
  71.   data$:='080 200 230 100 210 310 330 180 490 070 435 310'
  72.   for i:=0 to 5 do
  73.     dum$:=data$
  74.     mid(dum$,i*8+1,3)
  75.     val(dum$,x,j)
  76.     dum$:=data$
  77.     mid(dum$,i*8+5,3)
  78.     val(dum$,y,j)
  79.     copywin(x,y,x+79,y+79)
  80.     loadwin(0,i*80,0,0)
  81.   next(i)
  82.   copywin(0,0,79,479)
  83. return
  84.  
  85. procedure drawscreen
  86.   locals(i)
  87.   viewport(80,0,xmax,ymax)
  88.   cbox(9,0,0)
  89.   viewport(80,12,xmax-12,ymax-12)
  90.   cbox(0,20,0)
  91.   viewport(70,40,600,70)
  92.   cbox(0,19,0)
  93.   viewport(60,30,590,60)
  94.   cbox(0,55,0)
  95.   plateau(255,0)
  96.   sysfont(3,0)
  97.   setbcolor(55)
  98.   Printat(100,40, '        ***  O N E - A R M E D - B A N D I T  ***')
  99.   setbcolor(54)
  100.   sysfont(1,0)
  101.   viewport(90,100,590,125)
  102.   cbox(0,19,0)
  103.   viewport(80, 90,580,115)
  104.   cbox(0,54,0)
  105.   plateau(255,0)
  106.   Printat(92,100,'Use any key (except [CTRL],[SHIFT], etc to start/stop bandit')
  107.   Pause(0)
  108.   viewport(80, 90,590,125)
  109.   cbox(0,20,0)
  110.   kdum:=readkey
  111.   viewport(160,120,410,180)
  112.   cbox(0,19,0)
  113.   viewport(150,110,400,170)
  114.   cbox(0,54,0)
  115.   plateau(255,0)
  116.   viewport(130,270,470,390)
  117.   cbox(0,19,0)
  118.   viewport(120,260,460,380)
  119.   cbox(0,54,0)
  120.   plateau(255,0)
  121.   for i:=0 to 2 do
  122.     viewport(145+i*100,275,234+i*100,364)
  123.     plateau(0,255)
  124.     incviewport
  125.     plateau(0,255)
  126.   next(i)
  127. return
  128.  
  129. procedure gleich(cnt,crd)
  130.   locals(i)
  131.   setbcolor(49)
  132.   printat(160,150,str(cnt,2)+' Gleiche ')
  133.   setbcolor(54)
  134.   printat(260,150,'+'+str(crd,3)+' Credits')
  135.   cred:=cred+crd
  136.   if cnt=3
  137.     for i:=0 to 2 do
  138.       noise(ton[10],200)
  139.       pause(200)
  140.       noise(ton[15],400)
  141.       pause(400)
  142.     next(i)
  143.   else
  144.     noise(ton[3],200)
  145.     pause(200)
  146.     noise(ton[7],200)
  147.     pause(200)
  148.     noise(ton[10],200)
  149.     pause(200)
  150.     noise(ton[15],400)
  151.   endif
  152. return
  153.  
  154. procedure slip(zin)
  155.   If zin<40
  156.     zd:=0
  157.   Endif
  158.   if zin>=440
  159.     zd:=0
  160.   endif
  161.   If zin<440
  162.     zd:=400
  163.   Endif
  164.   If zin<360
  165.     zd:=320
  166.   Endif
  167.   If zin<280
  168.     zd:=240
  169.   Endif
  170.   If zin<200
  171.     zd:=160
  172.   Endif
  173.   If zin<120
  174.     zd:=80
  175.   Endif
  176. return
  177.  
  178.  
  179. BEGIN
  180.  
  181.   Break(off)
  182.   readsound('ping.snd')
  183.   setvol(11)
  184.   tonleiter
  185.  
  186. :start
  187.   cutclips
  188.   timing
  189.  
  190.   cred:=startcred
  191.   drawscreen
  192.  
  193.   kdum:=readkey
  194.  
  195. :more2
  196.   random(smax-smin,speed1)
  197.   random(smax-smin,speed2)
  198.   random(smax-smin,speed3)
  199.   speed1:=speed1+smin
  200.   speed2:=speed2+smin
  201.   speed3:=speed3+smin
  202.   If speed2=speed1
  203.     inc(speed2,1)
  204.   EndIF
  205.   IF speed3=speed1
  206.     inc(speed3,1)
  207.   Endif
  208.   IF speed3=speed2
  209.     inc(speed3,1)
  210.   Endif
  211.   zdum :=0
  212.   z2dum:=0
  213.  
  214. :more
  215.    setbcolor(54)
  216.    dec(cred,pay)
  217.    printat(260,150,' -'+str(pay,2)+' Credits')
  218.    Str(cred,5,cred$)
  219.    printat(200,120,'Credits left: '+cred$)
  220.  
  221. :inloop
  222.    inc(z2dum,1)
  223.    Repeat
  224.     startsound
  225.     if z2dum>runs-(runs/4)
  226.       setbcolor(54)
  227.       printat(260,150,'            ')
  228.     endif
  229.     loadsprite(0,(zeilpos1),150,280,80,80)
  230.     loadsprite(0,(zeilpos2),250,280,80,80)
  231.     loadsprite(0,(zeilpos3),350,280,80,80)
  232.      if zeilpos1>400
  233.        loadsprite(0,0,150,280+(480-zeilpos1),80,80-(ymax-zeilpos1)-1)
  234.      endif
  235.      if zeilpos2>400
  236.        loadsprite(0,0,250,280+(480-zeilpos2),80,80-(ymax-zeilpos2)-1)
  237.      endif
  238.      if zeilpos3>400
  239.        loadsprite(0,0,350,280+(480-zeilpos3),80,80-(ymax-zeilpos3)-1)
  240.      endif
  241.      inc(zeilpos1,speed1)
  242.      inc(zeilpos2,speed2)
  243.      inc(zeilpos3,speed3)
  244.      if zeilpos1>480
  245.        zeilpos1:=0
  246.      endif
  247.      if zeilpos2>480
  248.        zeilpos2:=0
  249.      endif
  250.      if zeilpos3>480
  251.        zeilpos3:=0
  252.      endif
  253.      setbcolor(54)
  254.  
  255.      if zdum>=runs/2
  256.        printat(200,160,'          ')
  257.      endif
  258.  
  259.      If keypressed=True
  260.        setbcolor(24)
  261.        printat(210,220,' Stop gedrückt ')
  262.        inc(zdum,1)
  263.        slowdown:=zdum/2
  264.        bound(slowdown,1,999)
  265.        pause(slowdown)
  266.      Endif
  267.  
  268.      If zdum < runs
  269.        goto('inloop')
  270.      EndIf
  271.  
  272.    Until keypressed=True
  273.  
  274.    rem *** Endbild nach Auslaufphase kontrollieren und dann zeichnen
  275.    slip(zeilpos1)
  276.    zeilpos1:=zd
  277.    slip(zeilpos2)
  278.    zeilpos2:=zd
  279.    slip(zeilpos3)
  280.    zeilpos3:=zd
  281.  
  282.    loadsprite(0, zeilpos1 ,150,280,80,80)
  283.    loadsprite(0, zeilpos2 ,250,280,80,80)
  284.    loadsprite(0, zeilpos3 ,350,280,80,80)
  285.    rem *************************************************************
  286.  
  287.    kdum:=readkey
  288.    setbcolor(54)
  289.  
  290.    rem *** Paare oder alle Drei gleich ??
  291.    If zeilpos1=zeilpos2
  292.      if zeilpos1=zeilpos3
  293.        gleich(3,cred3)
  294.      Else
  295.        gleich(2,cred2)
  296.      endif
  297.    else
  298.      If zeilpos1=zeilpos3
  299.        gleich(2,cred2)
  300.      else
  301.        If zeilpos2=zeilpos3
  302.          gleich(2,cred2)
  303.        endif
  304.      endif
  305.    endif
  306.    rem *************************************************************
  307.  
  308.  :cmp_finish
  309.   Str(cred,5,cred$)
  310.   printat(200,120,'Credits left: '+cred$)
  311.   scrtobuf
  312.   viewport(90,420,560,455)
  313.   cbox(0,19,0)
  314.   viewport(80,410,550,445)
  315.   cbox(0,54,0)
  316.   printat(100,420,'Drücken sie [ESC] um aufzuhören oder jede andere Taste')
  317.   printat(100,430,'       um noch mehr Credits zu verspielen.')
  318.   pause(0)
  319.  
  320.   loadpic(0,0)
  321.   viewport(160,150,250,165)
  322.   cbox(0,54,0)
  323.   viewport(210,220,560,250)
  324.   cbox(0,20,0)
  325.  
  326.   kdum:=readkey
  327.  
  328.   if kdum=esc
  329.     goto('ende')
  330.   endif
  331.   if cred<=0
  332.     goto('ende')
  333.   endif
  334.   if cred>1000
  335.     goto('ende')
  336.   endif
  337.   goto('more2')
  338.  
  339. :ende
  340.   clearscreen(135)
  341.   viewport(40,40,630,470)
  342.   cbox(0,0,0)
  343.   viewport(20,20,620,460)
  344.   cbox(0,20,0)
  345.   viewport(120,200,510,270)
  346.   cbox(0,19,0)
  347.   viewport(110,190,500,260)
  348.   cbox(0,54,0)
  349.   setbcolor(54)
  350.   printat(270,200,'ENDE')
  351.   If cred>1000
  352.     printat(200,220,' So! Mehr gibt`s nicht!')
  353.   endif
  354.   If cred<=0
  355.     sysfont(3,1)
  356.     defbutton(200,300,100,30,2,1,1,1,ret,'start')
  357.     defbutton(200,300,100,30,2,1,1,1,'n','start')
  358.     defbutton(340,300,100,30,2,1,0,1,'b','exit')
  359.     setcolor(0)
  360.     printat(201,231,'Sie haben ALLES verspielt !!!!')
  361.     printat(209,310,'(N) ochmal        (B) eenden')
  362.     setcolor(255)
  363.     printat(200,230,'Sie haben ALLES verspielt !!!!')
  364.     printat(208,309,'(N) ochmal        (B) eenden')
  365.     checkbutton('exit',30,0)
  366.   Else
  367.     cred$:=cred$+' Credits'
  368.   endif
  369.   printat(130,245,'Ihr Endkonto : '+cred$)
  370.   pause(0)
  371. :exit
  372. end
  373.  
  374.  
  375.