本格的なルールのアクションゲームの登場だ。
主人公は魔法使い。まずは十字ボタンで移動・Aボタンのショットを使って、無限に現われるガイコツ(スカル)をかわしつつ、マップのどこかにある3つのオーブ(宝玉)を探そう。
取ったオーブは、画面右のステータスに追加される。3色すべて集めれば「封印」の条件が整うぞ。マップ最上段にある扉にショットを撃って封印しよう。
扉を封印すると、スカルはこれ以上出てこない。マップ上のスカルを全滅させて、平和な土地に変えてしまおう!
たけぽん
ほぼ2日で作ってます。BASICは気楽に書いていけるのでやはりいいですね。
(5月12日)下記のように訂正してください
79行目 WM=0:GX=WX:GY=WY:GJ=0
325行目 FE=0:RETURN
491行目 IF B!=0 THEN @PAUSE
494行目 IF B AND 1024 THEN @PA2
- ’SKULL MADNESS И by タケホ゜ン И
- CLS:CLEAR:VISIBLE 1,1,0,1,1,0
- BGPAGE 0:BGCLIP 0,0,23,23
- SPPAGE 0:HI=0
- DIM FL(6,25),F(32,32),ORB(4)
- GOSUB @FLPAT
- DIM FK(5),FJ(5),FX(5),FY(5)
- DIM FD(5),SF(32,32)
- DIM SK(61),SX(61),SY(61)
- DIM SJ(61),SD(61),SE(61)
- FOR K=1 TO 4
- SPSET K,52,11,0,0,2
- SPANIM K,4,5,0:SPOFS K,0,-32
- FJ(K)=0:NEXT
- FOR K=11 TO 60
- SPSET K,128,5,0,0,1
- SPANIM K,2,10,0:SPOFS K,0,-32
- NEXT
- @START1
- SC=0:RO=1:WI=4:BGMSTOP
- @START2
- GOSUB @BGCL:QP=0:Q=0:SN=30
- SPSET 0,108,5,0,0,1
- SPANIM 0,4,10,0:SPOFS 0,88,88
- BGOFS 1,200,392
- WE=(11-RO)*5:GOSUB @FMAKE
- FOR K=1 TO 3:ORB(K)=0:NEXT
- @START3
- WK=0:WX=18:WY=30:WD=3:WC=1
- WS=0:BB1=0:BB2=0
- SPSET 0,108,5,0,0,1
- SPANIM 0,4,10,0:SPOFS 0,88,88
- BGOFS 1,200,392
- FOR K=1 TO 4
- SPOFS K,0,-32:NEXT
- FOR K=11 TO 40
- SPOFS K,0,-32:NEXT
- FS=0:DIE=0:FE=0:SA=11
- FOR K=0 TO 31
- FOR J=0 TO 31
- SF(J,K)=0:NEXT
- NEXT:J=SN
- FOR K=11 TO 40
- IF J<1 THEN @SKP1
- J=J-1
- @SKPUT
- I=RND(30)+1:U=RND(22)+6
- IF F(I,U)!=0 THEN @SKPUT
- SK(K)=0:SJ(K)=1:SX(K)=I
- SY(K)=U:SD(K)=RND(4):SE(K)=0
- SF(I,U)=K
- @SKP1
- NEXT
- CLS:GOSUB @SKDRAW
- GOSUB @ORBDRAW
- COLOR 10:LOCATE 26,0:?”SKULL”
- LOCATE 25,1:?”MADNESS”
- COLOR 0:LOCATE 26,3:?”STAGE”
- LOCATE 28,4:? RO
- LOCATE 26,7:?”SCORE”
- LOCATE 27,15:?”ORB”
- GOSUB @DRAWSC:COLOR 4
- LOCATE 26,22:?”ノコリ ”;WI;
- GOSUB @SKLAST
- GOSUB @INFO
- VSYNC 30:BGMPLAY 22
- IF QP==1 THEN BGMPLAY 29
- @MAIN
- GOSUB @KEYIN
- WK=WK+1:IF WK<12 THEN @MAIN2
- WK=0:GOSUB @WMOVE
- GOSUB @WDR1
- K=(WX-5)*16-8:J=(WY-5)*16-8
- BGOFS 1,K,J
- IF WM<1 OR WM>3 THEN @MAIN2
- F(WX,WY)=0:ORB(WM)=1:BEEP 8
- WM=0:GX=WX:GY=WY:GJ=0
- GOSUB @BGDRAW
- GOSUB @ORBDRAW
- @MAIN2
- GOSUB @FSTART
- GOSUB @FMOVE
- GOSUB @FDRAW
- GOSUB @SKMOVE
- GOSUB @SKDRAW
- IF DIE==1 THEN @DIE
- WS=0:BB1=0:BB2=0
- FOR K=0 TO WE:NEXT
- GOTO @MAIN
- @BGCL
- CLS:FOR K=0 TO 63
- FOR J=0 TO 63
- BGPUT 1,J,K,0,0,0,0:NEXT
- NEXT:RETURN
- @FLDRAW
- GOSUB @FPAT
- GOSUB @FMAKE
- FOR KK=0 TO 15
- FOR JJ=0 TO 15
- GX=JJ:GY=KK:GJ=F(JJ,KK)
- GOSUB @BGDRAW
- NEXT
- NEXT:RETURN
- @BGDRAW
- IF GJ<1 THEN @BG0
- IF GJ<4 THEN @BG1
- IF GJ<6 THEN @BG4
- BGPUT 1,GX*2,GY*2,684,3,0,0
- BGPUT 1,GX*2+1,GY*2,686,3,0,0
- BGPUT 1,GX*2,GY*2+1,748,3,0,0
- TT=GX*2+1
- BGPUT 1,TT,GY*2+1,750,3,0,0
- RETURN
- @BG0
- FOR K=0 TO 1
- FOR J=0 TO 1
- BGPUT 1,GX*2+J,GY*2+K,0,0,0,0
- NEXT
- NEXT:RETURN
- @BG1
- K=GX*2:J=GY*2
- BGPUT 1,K,J,837,GJ+10,0,0
- BGPUT 1,K+1,J,838,GJ+10,0,0
- BGPUT 1,K,J+1,869,GJ+10,0,0
- BGPUT 1,K+1,J+1,870,GJ+10,0,0
- RETURN
- @BG4
- K=GX*2:J=GY*2:I=(GJ-4)*2
- BGPUT 1,K,J,700,I,0,0
- BGPUT 1,K+1,J,701,I,0,0
- BGPUT 1,K,J+1,732,I,0,0
- BGPUT 1,K+1,J+1,733,I,0,0
- RETURN
- DATA ”00000”,”00000”,”00000”
- DATA ”00000”,”06660”,”06660”
- DATA ”66066”,”66066”,”00000”
- DATA ”66066”,”60006”,”00000”
- DATA ”00060”,”66060”,”00000”
- DATA ”06000”,”00006”,”00000”
- @FLPAT
- FOR K=0 TO 5
- FOR J=0 TO 2:READ A$
- FOR I=0 TO 4
- A=VAL(MID$(A$,I,1))
- FL(K,J*5+1)=A:NEXT
- NEXT
- FOR J=3 TO 4
- FOR I=0 TO 4
- FL(K,J*5+I)=FL(K,(4-J)*5+4-I)
- NEXT
- NEXT
- NEXT:RETURN
- @FMAKE
- FOR KK=0 TO 31
- FOR JJ=0 TO 31
- F(JJ,KK)=6:GX=JJ:GY=KK:GJ=6
- NEXT
- NEXT
- FOR KK=0 TO 5
- FOR JJ=0 TO 5:A=RND(6)
- IF JJ==2 AND KK==0 THEN A=0
- FOR IK=0 TO 4
- FOR IJ=0 TO 4
- GX=JJ*5+IJ+1:GY=KK*5+IK+1
- GJ=FL(A,IK*5+IJ):F(GX,GY)=GJ
- NEXT
- NEXT
- NEXT
- NEXT:F(13,0)=4
- FOR K=1 TO 3
- @FM1
- J=RND(30)+1:I=RND(23)+7
- IF F(J,I)!=0 THEN @FM1
- F(J,I)=K:NEXT
- FOR KK=0 TO 31
- FOR JJ=0 TO 31
- GX=JJ:GY=KK:GJ=F(JJ,KK)
- GOSUB @BGDRAW
- NEXT
- NEXT
- RETURN
- @WDR1
- IF WC==0 THEN RETURN
- @WDR2
- SPCHR 0,96+WD*4:K=(WX-5)*16-8
- BGOFS 1,K,(WY-5)*16-8
- RETURN
- @KEYIN
- B=BUTTON():BF=0
- IF B AND 8 THEN BB1=1
- IF B AND 2 THEN BB2=1
- IF B AND 4 THEN BB1=-1
- IF B AND 1 THEN BB2=-1
- IF B AND 16 THEN BF=1
- IF B AND 1024 THEN @PAUSE
- RETURN
- @WMOVE
- IF WD==0 OR WD==2 THEN @K2
- WS=0:IF BB1!=1 THEN @K1
- WD=0:K=F(WX+1,WY)
- IF K>3 THEN @K2
- WX=WX+1:WM=K:WS=1:GOTO @K0
- @K1
- IF BB1!=-1 THEN @K2
- WD=2:K=F(WX-1,WY)
- IF K>3 THEN @K2
- WX=WX-1:WM=K:WS=1
- @K0
- IF WS==1 THEN RETURN
- @K2
- IF BB2!=1 THEN @K3
- WD=1:K=F(WX,WY+1)
- IF K>3 THEN @K5
- WY=WY+1:WM=K:WS=2:GOTO @K4
- @K3
- IF BB2!=-1 THEN @K5
- WD=3:K=F(WX,WY-1)
- IF K>3 THEN @K5
- WY=WY-1:WM=K:WS=2
- @K4
- IF WS==2 THEN RETURN
- @K5
- IF BB1!=1 THEN @K6
- WD=0:K=F(WX+1,WY)
- IF K>3 THEN RETURN
- WX=WX+1:WM=K:WS=1:RETURN
- @K6
- IF BB1!=-1 THEN RETURN
- WD=2:K=F(WX-1,WY)
- IF K>3 THEN RETURN
- WX=WX-1:WM=K:WS=1
- RETURN
- @FSTART
- FS=FS-1:IF FS<0 THEN FS=0
- IF FS>0 THEN RETURN
- IF BF==0 THEN RETURN
- K=1
- @FS1
- IF FJ(K)==0 THEN @FS2
- K=K+1:IF K>4 THEN RETURN
- GOTO @FS1
- @FS2
- FS=23:FJ(K)=1:FX(K)=WX
- FY(K)=WY:FD(K)=WD:FK(K)=0
- BEEP 37,0,30,64:RETURN
- @FMOVE
- UK=1
- @FM8
- IF FJ(UK)==0 THEN @FM7
- FK(UK)=FK(UK)+1
- IF FK(UK)<6 THEN @FM7
- FK(UK)=0
- IF FD(UK)==1 THEN @FM3
- IF FD(UK)==2 THEN @FM4
- IF FD(UK)==3 THEN @FM5
- FX(UK)=FX(UK)+1:GOTO @FM6
- @FM3
- FY(UK)=FY(UK)+1:GOTO @FM6
- @FM4
- FX(UK)=FX(UK)-1:GOTO @FM6
- @FM5
- FY(UK)=FY(UK)-1
- @FM6
- UJ=F(FX(UK),FY(UK))
- IF UJ==4 THEN @FUUIN
- @FM9
- IF UJ>=4 THEN @FM11
- UJ=SF(FX(UK),FY(UK))
- IF UJ==0 THEN @FM7
- IF SJ(UJ)==0 THEN @FM7
- @SKDIE
- SF(FX(UK),FY(UK))=0:BEEP 12
- SC=SC+10:GOSUB @DRAWSC
- IF Q==1 THEN @SKDIE2
- @FM10
- SK(UJ)=0:SX(UJ)=13:SY(UJ)=1
- SD(UJ)=1:SF(13,1)=UJ
- SPOFS UJ,0,-32:GOTO @FM7
- @FM11
- FJ(UK)=0:SPOFS UK,0,-32
- GOTO @FM7
- @SKDIE2
- SJ(UJ)=0:SPOFS UJ,0,-32
- SN=SN-1:GOSUB @SKLAST
- IF SN<1 THEN @CL
- GOTO @FM7
- @FUUIN
- FJ(UK)=0:SPOFS UK,0,-32
- IF QP!=1 THEN @FM9
- BGMPLAY 3:F(13,0)=5
- COLOR 15:LOCATE 7,8
- ?”フウイン セイコウ!”:Q=1
- SC=SC+1000:GOSUB @INFO
- GX=13:GY=0:GOSUB @DRAWSC
- GJ=5:GOSUB @BGDRAW
- VSYNC 80:LOCATE 7,8
- ?” ”:BGMPLAY 29
- @FM7
- UK=UK+1:IF UK<5 THEN @FM8
- RETURN
- @FDRAW
- IF FJ(FE)==0 THEN @FD1
- I=FX(FE):J=FY(FE)
- IF I<WX-6 THEN @FD2
- IF I>WX+6 THEN @FD2
- IF J<WY-6 THEN @FD2
- IF J>WY+6 THEN @FD2
- UK=(FX(FE)-WX)*16+88
- SPOFS FE,UK,(FY(FE)-WY)*16+88
- @FD1
- FE=FE+1:IF FE<5 THEN RETURN
- FE=0:RETURN
- @FD2
- SPOFS FE,0,-32:GOTO @FD1
- @SKDRAW
- SB=SA+6
- @SD0
- IF SJ(SA)==0 THEN @SD1
- I=SX(SA):J=SY(SA)
- IF I<WX-6 THEN @SD2
- IF I>WX+6 THEN @SD2
- IF J<WY-6 THEN @SD2
- IF J>WY+6 THEN @SD2
- UJ=(SX(SA)-WX)*16+88
- SPOFS SA,UJ,(SY(SA)-WY)*16+88
- SPCHR SA,128+SD(SA)*2
- SE(SA)=1
- @SD1
- SA=SA+1:IF SA<SB THEN @SD0
- IF SA>=41 THEN SA=11
- RETURN
- @SD2
- IF SE(SA)!=1 THEN @SD3
- SPOFS SA,0,-32
- @SD3
- SE(SA)=0:GOTO @SD1
- @SKMOVE
- ZK=11
- @SM0
- IF SJ(ZK)==0 THEN @SM7
- SK(ZK)=SK(ZK)+1
- IF SK(ZK)<13 THEN @SM7
- SK(ZK)=0:SF(SX(ZK),SY(ZK))=0
- R=RND(20)+RO+QP*5
- TK=SX(ZK):TJ=SY(ZK)
- IF R>25 THEN @SM10
- @SMA
- J=RND(4)
- ON J GOTO @SM1,@SM2,@SM3,@SM4
- @SM1
- IF F(TK+1,TJ)<4 THEN @SM21
- @SM2
- IF F(TK,TJ+1)<4 THEN @SM22
- @SM3
- IF F(TK-1,TJ)<4 THEN @SM23
- @SM4
- IF F(TK,TJ-1)<4 THEN @SM24
- GOTO @SM1
- @SM21
- SX(ZK)=SX(ZK)+1:SD(ZK)=0
- GOTO @SM5
- @SM22
- SY(ZK)=SY(ZK)+1:SD(ZK)=1
- GOTO @SM5
- @SM23
- SX(ZK)=SX(ZK)-1:SD(ZK)=2
- GOTO @SM5
- @SM24
- SY(ZK)=SY(ZK)-1:SD(ZK)=3
- @SM5
- IF TK!=WX THEN @SM6
- IF TJ==WY THEN DIE=1
- @SM6
- I=1
- @SMC
- IF SX(ZK)!=FX(I) THEN @SMB
- IF SY(ZK)!=FY(I) THEN @SMB
- IF FJ(I)!=1 THEN @SMB
- BEEP 12:SC=SC+10
- GOSUB @DRAWSC
- IF Q==1 THEN @SMD
- SK(ZK)=0:SX(ZK)=13:SY(ZK)=1
- SD(ZK)=1:SF(13,1)=ZK
- SPOFS ZK,0,-32:GOTO @SMB
- @SMD
- SJ(ZK)=0:SPOFS ZK,0,-32
- SN=SN-1:GOSUB @SKLAST
- IF SN<1 THEN @CL
- @SMB
- I=I+1:IF I<5 THEN @SMC
- SF(SX(ZK),SY(ZK))=ZK
- @SM7
- ZK=ZK+1:IF ZK<41 THEN @SM0
- RETURN
- @SM10
- R=RND(10):IF R>4 THEN @SM11
- IF SX(ZK)>WX THEN @SM3
- IF SX(ZK)<WX THEN @SM1
- GOTO @SMA
- @SM11
- IF SY(ZK)>WY THEN @SM4
- IF SY(ZK)<WY THEN @SM2
- GOTO @SMA
- @ORBDRAW
- COLOR 14:LOCATE 26,16
- PRINT ”○ ○ ○”
- IF ORB(1)==1 THEN GOSUB @ORB1
- IF ORB(2)==1 THEN GOSUB @ORB2
- IF ORB(3)==1 THEN GOSUB @ORB3
- K=ORB(1)+ORB(2)+ORB(3)
- IF K==3 THEN QP=1:BGMPLAY 29
- GOSUB @INFO:RETURN
- @ORB1
- COLOR 2:LOCATE 26,16
- PRINT ”●”;:RETURN
- @ORB2
- COLOR 11:LOCATE 28,16
- PRINT ”●”;:RETURN
- @ORB3
- COLOR 13:LOCATE 30,16
- PRINT ”●”;:RETURN
- @SKLAST
- COLOR 9:LOCATE 26,11
- PRINT ”ENEMY”
- LOCATE 28,12
- PRINT SN;” ”;:RETURN
- @CL
- BGMSTOP:FOR K=11 TO 40
- SPOFS K,0,-32:NEXT:COLOR 15
- LOCATE 9,8:?”CLEAR!”:BEEP 42
- VSYNC 150:WI=WI+1:SC=SC+5000
- RO=RO+1:IF RO>10 THEN RO=1
- GOTO @START2
- @DRAWSC
- A$=STR$(SC):R=LEN(A$)
- A$=” ”+A$
- B$=MID$(A$,R-1,5):COLOR 0
- LOCATE 26,8:? B$
- RETURN
- @DIE
- BGMSTOP:BEEP 6:SPCHR 0,120
- VSYNC 90
- WI=WI-1:IF WI>-1 THEN @START3
- BGMPLAY 6:COLOR 15
- LOCATE 7,8:?”GAME OVER”
- @GV1
- B=BUTTON()
- IF B!=0 THEN @GV1
- LOCATE 6,18:?”HIT A BUTTON”
- @GV2
- B=BUTTON()
- IF B AND 16 THEN @START1
- IF B AND 1024 THEN END
- GOTO @GV2
- @INFO
- COLOR 3:LOCATE 26,18
- IF Q==1 THEN @IN1
- IF QP==1 THEN @IN2
- ?”オ-フ゛ヲ”:LOCATE 26,19
- ? ”アツメロ ”:RETURN
- @IN1
- ? ” テキヲ ”:LOCATE 26,19
- ? ”セ゛ンメツ”:RETURN
- @IN2
- ? ”フウイン ”:LOCATE 26,19
- ? ” セヨ ”:RETURN
- @PAUSE
- BGMSTOP:B=BUTTON()
- IF B!=0 THEN @PAUSE
- @PA1
- B=BUTTON()
- IF B AND 1024 THEN @PA2
- GOTO @PA1
- @PA2
- VSYNC 20:BGMPLAY 22
- IF QP==1 THEN BGMPLAY 29
- RETURN