!-------------------------------------------------- !- søndag 1. mars 2020 00.26.32 !- import of : !- c:\users\stein-ove\documents\cbm64\mrhr.prg !- commodore 64 !--------------------------------------------------
1 rem mirror horror - joystick version 4 rem dsiclaimer - dont remove border, or will game crash progam 10 rem "mirror horror - joystick" 20 poke 53281,0:poke 53280,0 30 poke 646,5:print chr$(147):gosub 200 40 poke 646,1 100 poke 214,4:print:poke 211,3 110 print "use mirror to kill monsters!" 111 poke 214,6:print:poke 211,3 115 print "use stick to move over mirrorrs" 121 poke 214,8:print:poke 211,3 125 print "fire + left to tilt mirrors" 131 poke 214,10:print:poke 211,3 135 print "dont let monsters find you" 136 poke 214,12:print:poke 211,3 138 print "fire + righ to shoot cannon"" 139 poke 214,13:print:poke 211,3 140 print "fire + backward to pickup window" 141 poke 214,14:print:poke 211,3 142 print "fire + forward to place window" 143 poke 214,16:print 144 print spc(4)"tip when you move:"" 145 print spc(5)"remove your fire finger from button" 146 j = peek(56320) and 31 149 if keyb$="" and j<>15 then goto 146 154 keyb$="": 197 for cnt=1 to 100:print:next 198 poke 646,1:print chr$(147):gosub 200:goto 300 199 :rem 200 for cnt=0 to 19:rem "game frame" 201 poke 1024+19-cnt+40*24,160 202 poke 1024+19-cnt+40*0,160 203 poke 1024+20+cnt+40*24,160 204 poke 1024+20+cnt+40*0,160 206 poke 1024+00+40*(12+int(12/19*cnt)),160 207 poke 1024+00+40*(12-int(12/19*cnt)),160 208 poke 1024+39+40*(12+int(12/19*cnt)),160 209 poke 1024+39+40*(12-int(12/19*cnt)),160 210 next:return 300 :rem 301 dim m(4):rem "mirror angle" 302 m(1)=78:m(2)=67:m(3)=77:m(4)=66 303 g(1)=107:g(2)=113:g(3)=115:g(4)=114 400 :rem 401 for cnt=1 to 10:rem "set mirrors" 402 mx=int(rnd(0)*37)+1 403 my=int(rnd(0)*22)+1 404 m=int(rnd(0)*4)+1 405 pk=peek(1024+mx+40*my) 406 if pk<> 32 then 402 407 poke 1024+mx+40*my,m(m):next 410 :rem 411 for cnt=1 to 10:rem "set enemy" 412 ex=int(rnd(0)*37)+1 413 ey=int(rnd(0)*22)+1 414 pk=peek(1024+ex+40*ey) 415 if pk<>32 then 412 416 poke 1024+ex+40*ey,88 417 poke55296+ex+40*ey,2:next 420 :rem 421 rem "set gun" 422 gx=int(rnd(0)*37)+1 423 gy=int(rnd(0)*22)+1 424 g=int(rnd(0)*4)+1 425 pk=peek(1024+gx+40*gy) 426 if pk<>32 then 422 427 poke 1024+gx+40*gy,g(g) 428 poke55296+gx+40*gy,6 500 :rem 501 rem "set player" 502 px=int(rnd(0)*38)+1 503 py=int(rnd(0)*23)+1 504 pk=peek(1024+px+40*py) 505 if pk<>32 then 502 600 :rem 601 pk=peek(1024+px+40*py) 602 poke1024+px+40*py,81:rem rst stp 603 poke1024+px+40*py,pk:dx=0:dy=0 604 j=peek(56320) and 31:if j=31 then 602 605 if j=11 then gosub 700 606 if j=23 then dx=+1 607 if j=27 then dx=-1 608 if j=29 then dy=+1 609 if j=30 then dy=-1 610 if j=14 or j=13 then gosub800 611 if j=7 then goto 900 617 s=peek(1024+px+dx+40*(py+dy)) 618 if s=160 then 602 619 if s=88 then goto 2000 620 px=px+dx:py=py+dy:goto 601 699 :end 700 :rem 702 rem "adjust mirrors" 704 ad=peek(1024+px+40*py) 706 if ad=m(1) then ad=m(2):goto 725 708 if ad=m(2) then ad=m(3):goto 725 710 if ad=m(3) then ad=m(4):goto 725 712 if ad=m(4) then ad=m(1):goto 725 714 if ad=g(1) then ad=g(2):goto 725 716 if ad=g(2) then ad=g(3):goto 725 718 if ad=g(3) then ad=g(4):goto 725 720 if ad=g(4) then ad=g(1):goto 725 725 poke 1024+px+40*py,ad:return 800 :rem 801 if j=14 then 810:pick mirr 802 for cnt=1 to 4 804 pk=peek(1024+px+40*py) 806 if pk<>m(cnt) then 809 808 poke1024+px+40*py,32:mr=mr+1 809 next 810 if j=13 then 825:place mir 812 if mr=0 then 825 814 pk=peek(1024+px+40*py) 816 if pk<>32 then 825 818 m=int(rnd(0)*4)+1:mr=mr-1 820 poke 1024+px+40*py,m(m) 825 return 900 :rem bankg, shooting beam 910 pk=peek(1024+gx+40*gy) 911 :rem 912 if pk=107 then bx=+1:by=0 914 if pk=115 then bx=-1:by=0 916 if pk=114 then bx=0:by=+1 918 if pk=113 then bx=0:by=-1 920 x=gx:y=gy 921 pk=peek(1024+x+40*y) 922 if pk=32 then poke 1024+x+40*y,102 924 if pk=88 then sc=sc+1000 925 if pk=88 then poke 1024+x+40*y,86 926 x=x+bx:y=y+by 928 pk=peek(1024+x+40*y) 929 if pk<>66 then 932 930 if bx=+1 and by=0 then d=2 931 if bx=-1 and by=0 then d=1 932 if pk<>67 then 945 937 if bx=0 and by=+1 then d=4 941 if bx=0 and by=-1 then d=3 945 if pk<>78 then 950 946 if bx=+1 and by=0 then d=4: 947 if bx=-1 and by=0 then d=3: 948 if bx=0 and by=+1 then d=2: 949 if bx=0 and by=-1 then d=1: 950 if pk<>77 then 960 952 if bx=+1 and by=0 then d=3 954 if bx=-1 and by=0 then d=4 956 if bx=0 and by=+1 then d=1 958 if bx=0 and by=-1 then d=2 960 if d=1 then bx=+1:by=0 962 if d=2 then bx=-1:by=0 964 if d=3 then bx=0:by=+1 966 if d=4 then bx=0:by=-1 999 if pk<>160 then 921 1000 rem end of beam 1001 print chr$(147): 1010 x=2:y=2:x$=" good work":gosub 3000 1020 x=3:y=4:x$="you killed":gosub 3000 1040 x$=str$(sc/1000)+" enemies of 10 possible" 1050 x=4:y=6:gosub 3000: 1060 x=4:y=8:x$="more plays?":gosub 3000 1068 x=9:y=12:x$=":yes:":gosub 3000 1069 x=9:y=14:x$=":no:":gosub 3000 1070 x=8:y=13:d=1 1071 j = peek(56320) and 31 1072 if j = 29 then d=2 1075 if j = 30 then d=1 1076 if d=1 then poke 1024+x+40*y,81:poke 1024+x+40*(y+2),32 1077 if d=2 then poke 1024+x+40*y,32:poke 1024+x+40*(y+2),81 1080 if j=15 and d=1 then run 1090 if j=15 and d=2 then end 1099 goto 1071 2000 :rem 2001 poke 214,12:print:poke 211,13 2002 print chr$(18);" ";chr$(146) 2004 poke 214,13:print:poke 211,13 2006 print chr$(18);" game over ";chr$(146) 2008 poke 214,14:print:poke 211,13 2009 print chr$(18);" ";chr$(146) 2010 for wt=0 to 400:next wt: 2011 print chr$(147); 2012 print " lets try again " 2013 for wt=0 to 400:next wt:run 3000 poke 214,y:print:poke 211,x 3010 print x$;:return