画面固定型のサイドビューアクションゲームが登場だ。
主人公の操作は左右ボタンで移動、Aボタンでジャンプ。まずは画面内に散らばる星を全て集めよう。そして鍵を取ってから扉に入ればゴール、ステージクリアだ。
あちこちにあるコインを取ればスコアがアップするぞ。多く集めながら全5面のステージを突破しよう。
えぬおう
プチコン作成ゲーム1本目です。スプライトを表示させたところから気がついたら4日後には出来上がっていました。
- CLEAR
- VISIBLE 1,1,1,1,1,1
- BGPAGE 0
- SPPAGE 0
- BGOFS 0,0,0
- BGCLIP 0,0,31,23
- BGMSTOP
- ’ハイケイ クロ0 レンカ゛1 イシ2 クロ3
- ’フ゛ロック イワ4 キヒタ゛リ5 キミキ゛6 キ7
- @LMAP1
- DATA 0000000000000000
- DATA 2222002222002222
- DATA 5656005656005656
- DATA 0220000220000220
- DATA 0220005656000220
- DATA 0220000220044420
- DATA 2222222222244422
- DATA 4444444444444411
- DATA 1111111111111111
- DATA 7111111111111111
- DATA 1111111111111111
- DATA 4444444444444444
- ’ナシ0 コイン1 ヒ2 スタ-3
- ’カキ゛4 トヒ゛ラ5 フ゜レイヤ-6 テキ7
- @LOBJ1
- DATA 0000000000000000
- DATA 0330000330000330
- DATA 0000000000000000
- DATA 0000001111001111
- DATA 0000000000000000
- DATA 0000000000000000
- DATA 6000000000000000
- DATA 0000000000000000
- DATA 0000000000000000
- DATA 0000000000000000
- DATA 4112211221122115
- DATA 0000000000000000
- @LMAP2
- DATA 2222222222222222
- DATA 2222222222222222
- DATA 2727272727224444
- DATA 2200220027002200
- DATA 2200220027002200
- DATA 2222222244442222
- DATA 2222222422222222
- DATA 2222222222222222
- DATA 2200224422002244
- DATA 2000024420000244
- DATA 2000024420000244
- DATA 4444444444444444
- @LOBJ2
- DATA 0401010100000600
- DATA 0000000000000005
- DATA 0000000000000000
- DATA 0222222200000000
- DATA 0000000011110000
- DATA 0000000000000000
- DATA 0000001100000011
- DATA 0000000000000000
- DATA 0011000000110000
- DATA 0022002200220000
- DATA 3022032230220300
- DATA 0000000000000000
- @LMAP3
- DATA 0000044400000222
- DATA 0000022200000222
- DATA 0007044427272222
- DATA 0001000222222444
- DATA 0701000002227222
- DATA 0101000000562222
- DATA 0101111100222222
- DATA 0101115656222222
- DATA 0144111111222222
- DATA 4444144444444444
- DATA 4111111111111114
- DATA 4444444444444444
- @LOBJ3
- DATA 0000000001010003
- DATA 0000311000000000
- DATA 0300000000000075
- DATA 0000000000000000
- DATA 0000000110000000
- DATA 0011000000000000
- DATA 0000000000000000
- DATA 0000000000000000
- DATA 6000000002011023
- DATA 0000000000000000
- DATA 0400000111111110
- DATA 0000000000000000
- @LMAP4
- DATA 0000000000000000
- DATA 4400044444400044
- DATA 0000000000000000
- DATA 4400044444400044
- DATA 0000000000000000
- DATA 4400044444400044
- DATA 0000000000000000
- DATA 4400044444400044
- DATA 0000000000000000
- DATA 4400044444400044
- DATA 0000000000000000
- DATA 4444444444444444
- @LOBJ4
- DATA 4001000030001005
- DATA 0000002222000000
- DATA 0001000300001000
- DATA 0000002222000000
- DATA 7001000030001007
- DATA 0000002222000000
- DATA 0001000300001000
- DATA 0000002222000000
- DATA 0001000030001000
- DATA 0000002222000000
- DATA 0001000300001006
- DATA 0000000000000000
- @LMAP5
- DATA 1011101011101111
- DATA 4010101010101010
- DATA 4010100010100014
- DATA 4010004010000014
- DATA 4000004010000014
- DATA 4000004000004004
- DATA 4004004000004004
- DATA 4204024000004204
- DATA 4224024204004224
- DATA 4224224204024224
- DATA 4224224224224224
- DATA 4444444444444444
- @LOBJ5
- DATA 5000003000000006
- DATA 0000000000000004
- DATA 0000000000003000
- DATA 1003000000000000
- DATA 0000000000000000
- DATA 1000001003001001
- DATA 0000000000000000
- DATA 0001000000001001
- DATA 0000001000000000
- DATA 0000000001000000
- DATA 7220227227220227
- DATA 0000000000000000
- DIM SPNUM(16,16)
- DIM ENLIST(16,6)
- DIM MAPDAT(17,16)
- DIM OBJDAT(17,16)
- DIM JMPDAT(8)
- JMPDAT(0)=-16
- JMPDAT(1)=-8
- JMPDAT(2)=-4
- JMPDAT(3)=0
- JMPDAT(4)=4
- JMPDAT(5)=8
- JMPDAT(6)=16
- JMPDAT(7)=0
- DIM BGPAT(8,5)
- @LBGPAT
- DATA 0,0,0,0,8
- DATA 64,65,96,97,8
- DATA 43,44,75,76,8
- DATA 0,0,0,0,8
- DATA 195,196,227,228,8
- DATA 45,46,45,46,8
- DATA 46,47,46,47,8
- DATA 45,47,45,47,8
- RESTORE @LBGPAT
- FOR X=0 TO 8-1
- FOR Y=0 TO 5-1
- READ A
- BGPAT(X,Y)=A
- NEXT Y
- NEXT X
- DIM OBJPAT(8,5)
- @LOBJPAT
- DATA 36,2,4,20,0
- DATA 42,2,2,20,0
- DATA 156,2,4,20,0
- DATA 14,10,1,60,0
- DATA 58,6,1,60,0
- DATA 64,3,4,10,0
- DATA 128,3,2,10,0
- RESTORE @LOBJPAT
- FOR X=1 TO 8-1
- FOR Y=0 TO 5-1
- READ A
- OBJPAT(X,Y)=A
- NEXT Y
- NEXT X
- DIM BGI(5)
- BGI(0)=14
- BGI(1)=1
- BGI(2)=9
- BGI(3)=1
- BGI(4)=9
- SC=0
- STG=0
- @TITLE
- CLS
- SPCLR
- GOSUB @BGCLR
- LOCATE 10,8
- COLOR 3
- PRINT ”┝トレシ゛ャ-ハ゛レ-┰”
- LOCATE 10,14
- COLOR 13
- PRINT ”PUSH АBUTTON”
- LOCATE 0,0
- COLOR 15
- PRINT ”SC:”;SC
- LOCATE 12,0
- PRINT ”FLOOR:”;STG+1
- @TITLE1
- BTN=BUTTON()
- IF (BTN AND &H10)==0 THEN @TITLE1
- SC=0
- RST=3
- STG=0
- LVL=20
- @RESTART
- CLS
- SPCLR
- GOSUB @BGCLR
- LOCATE 12,10
- PRINT ”FLOOR:”;STG+1
- ON STG GOSUB @STAGE1,@STAGE2,@STAGE3,@STAGE4,@STAG5
- BGMPLAY 4
- VSYNC(180)
- CLS
- ’GOSUB @BGCLR
- GOSUB @BGDRAW
- GOSUB @OBJDRAW
- LOCATE 0,0
- PRINT ”SC:”;SC
- LOCATE 12,0
- PRINT ”FLOOR:”;STG+1
- SPSET 8,0,0,0,0,1
- SPSET 4,0,0,0,0,1
- GOSUB @START
- BGMPLAY BGI(STG)
- @LOOP1
- BTN=BUTTON()
- IF SPCHK(8)==FALSE THEN GOSUB @PLAYER
- FOR ENL=0 TO EN-1
- ENSP=ENLIST(ENL,0)
- IF SPCHK(ENSP)==FALSE THEN GOSUB @ENEMY
- IF MK <=0 THEN GOSUB @ENHIT
- NEXT ENL
- GOTO @LOOP1
- @STAGE1
- RESTORE @LOBJ1
- GOSUB @OBJREAD
- RESTORE @LMAP1
- GOSUB @MAPREAD
- RETURN
- @STAGE2
- RESTORE @LOBJ2
- GOSUB @OBJREAD
- RESTORE @LMAP2
- GOSUB @MAPREAD
- RETURN
- @STAGE3
- RESTORE @LOBJ3
- GOSUB @OBJREAD
- RESTORE @LMAP3
- GOSUB @MAPREAD
- RETURN
- @STAGE4
- RESTORE @LOBJ4
- GOSUB @OBJREAD
- RESTORE @LMAP4
- GOSUB @MAPREAD
- RETURN
- @STAGE5
- RESTORE @LOBJ5
- GOSUB @OBJREAD
- RESTORE @LMAP5
- GOSUB @MAPREAD
- RETURN
- @MAPREAD
- FOR Y=4 TO 16-1
- READ A$
- FOR X=0 TO 16-1
- MAPDAT(X,Y)=VAL(MID$(A$,X,1))
- NEXT X
- NEXT Y
- RETURN
- @OBJREAD
- FOR Y=4 TO 16-1
- READ A$
- FOR X=0 TO 16-1
- OBJDAT(X,Y)=VAL(MID$(A$,X,1))
- NEXT X
- NEXT Y
- RETURN
- @PLAYER
- IF (BTN AND &H04)==0 THEN @PLAYER5
- X=X-8
- IF X<0 THEN X=0
- SPCHR 8,72,2,0,0,1
- @PLAYER5
- IF (BTN AND &H08)==0 THEN @PLAYER6
- X=X+8
- IF X>256-16 THEN X=256-16
- SPCHR 8,64,2,0,0,1
- @PLAYER6
- IF JMP<=6 THEN @PLAYER1
- I=FLOOR(X/16)
- J=FLOOR((X+15)/16)
- L=FLOOR(Y/16)+1+4
- IF MAPDAT(I,L)<4 OR MAPDAT(J,L)<4 THEN JMP=4
- IF (BTN AND &H10)!=0 THEN JMP=0:BEEP 8,0,88
- @PLAYER1
- Y=Y+JMPDAT(JMP)
- IF JMP<3 THEN @PLAYER3
- I=FLOOR(X/16)
- J=FLOOR((X+15)/16)
- L=FLOOR(Y/16)+1+4
- IF MAPDAT(I,L)>3 AND MAPDAT(J,L)>3 THEN JMP=7:Y=FLOOR(Y/16)*16
- @PLAYER3
- IF JMP<6 THEN JMP=JMP+1
- SPOFS 8,X,Y,10
- SPOFS 4,X,Y,10
- I=FLOOR(X/16)
- L=FLOOR(Y/16)+4
- ON OBJDAT(I,L) GOSUB @PLAYER4,@BONUS,@TRAP,@STAR,@GETKEY,@DOOR,@PLAYER4,@PLAYER4
- @PLAYER4
- IF MK<=0 THEN @PLAYER2
- IF MK==16 THEN SPCHR 4,52,2,0,0,1:SPANIM 4,4,10,0
- MK=MK-1
- IF MK>0 THEN @PLAYER2
- SPCHR 4,448,0,0,0,1
- SPANIM 4,1,10,0
- @PLAYER2
- RETURN
- @BONUS
- OBJDAT(I,L)=0
- SPCLR SPNUM(I,L)
- I=10
- GOSUB @SCORE
- BEEP 7,0,80
- RETURN
- @OUT
- SPCHR 8,88,2,0,0,1
- SPANIM 8,4,10,2
- SPOFS 8,X,Y,10
- BEEP 14,0,80
- @OUT1
- IF SPCHK(8)==TRUE THEN @OUT1
- SPOFS 8,X,Y,10
- VSYNC(90)
- RST=RST-1
- IF RST<=0 THEN @OVER
- RETURN
- @TRAP
- GOSUB @OUT
- GOSUB @START
- RETURN
- @STAR
- OBJDAT(I,L)=0
- SPCLR SPNUM(I,L)
- I=50
- GOSUB @SCORE
- KY=KY-1
- BEEP 12,0,80
- RETURN
- @GETKEY
- IF KY>0 THEN RETURN
- OBJDAT(I,L)=0
- SPCLR SPNUM(I,L)
- I=100
- GOSUB @SCORE
- KY=-1
- BEEP 5,0,80
- RETURN
- @SCORE
- SC=SC+I
- LOCATE 0,0
- PRINT ”SC:”;SC
- RETURN
- @DOOR
- IF KY>=0 THEN RETURN
- I=500
- GOSUB @SCORE
- LOCATE 10,10
- PRINT ” CLEARИ ”
- BGMPLAY 5
- STG=STG+1
- IF STG<5 THEN @DOOR1
- STG=0
- LVL=10
- RST=RST+1
- I=500
- GOSUB @SCORE
- LOCATE 10,12
- PRINT ”ALL CLEARО”
- BGMPLAY 7
- VSYNC(600)
- GOTO @RESTART
- @DOOR1
- VSYNC(120)
- GOTO @RESTART
- @OVER
- LOCATE 10,10
- PRINT ”GAME OVER”
- BGMPLAY 6
- VSYNC(120)
- GOTO @TITLE
- @START
- LOCATE 25,0
- PRINT ”REST:”;RST
- X=PX*16
- Y=PY*16
- JMP=7
- MK=16
- SPCHR 8,64,2,0,0,1
- SPANIM 8,4,10,0
- SPOFS 8,X,Y,1
- SPCHR 4,52,2,0,0,1
- SPANIM 4,4,10,0
- SPOFS 4,X,Y,1
- @START1
- IF SPCHK(8)==TRUE THEN @START1
- RETURN
- @ENEMY
- ENX=ENLIST(ENL,1)
- ENY=ENLIST(ENL,2)
- ENJ=ENLIST(ENL,3)
- IF ENJ<=6 THEN @ENEMY2
- IF X>ENX THEN ENX=ENX+8:SPCHR ENSP,OBJPAT(7,0),OBJPAT(7,1)
- IF X>ENX THEN ENX=ENX-8:SPCHR ENSP,OBJPAT(7,0)+4,OBJPAT(7,1),0,0,1
- IF X==ENX THEN ENJ=0
- I=FLOOR(ENX/16)
- L=FLOOR(ENY/16)+1+4
- IF MAPDAT(I,L)<4 THEN ENJ=4
- @ENEMY2
- IF ENJ>6 THEN @ENEMY1
- ENY=ENY+JMPDAT(ENJ)
- ENJ=ENJ+1
- @ENEMY1
- IF ENJ<4 THEN @ENEMY3
- I=FLOOR(ENX/16)
- L=FLOOR(ENY/16)+1+4
- IF MAPDAT(I,L)>3 THEN ENJ=7:ENY=FLOOR(ENY/16)*16
- @ENEMY3
- SPOFS ENSP,ENX,ENY,LVL
- ENLIST(ENL,1)=ENX
- ENLIST(ENL,2)=ENY
- ENLIST(ENL,3)=ENJ
- RETURN
- @ENHIT
- ENX=ENLIST(ENL,1)
- ENY=ENLIST(ENL,2)
- IF ENX>=X+16 OR ENX+16<=X THEN @ENHIT1
- IF ENY>=Y+16 OR ENY+16<=Y THEN @ENHIT1
- GOSUB @OUT
- GOSUB @START
- @ENHIT1
- RETURN
- @BGDRAW
- FOR Y=0 TO 12-1
- FOR X=0 TO 16-1
- I=MAPDAT(X,Y+4)
- BGPUT 0,X*2,Y*2,BGPAT(I,0),BGPAT(I,4),0,0
- BGPUT 0,X*2+1,Y*2,BGPAT(I,1),BGPAT(I,4),0,0
- BGPUT 0,X*2,Y*2+1,BGPAT(I,2),BGPAT(I,4),0,0
- BGPUT 0,X*2+1,Y*2+1,BGPAT(I,3),BGPAT(I,4),0,0
- NEXT X
- NEXT Y
- RETURN
- @OBJDRAW
- SP=50
- KY=0
- EN=0
- FOR Y=0 TO 12-1
- FOR X=0 TO 16-1
- I=OBJDAT(X,Y+4)
- IF I==0 AND SP<100 THEN @OBJDRAW2
- IF I==3 THEN KY=KY+1
- IF I==6 THEN PX=X:PY=Y:GOTO @OBJDRAW2
- L=SP
- J=X
- K=Y
- GOSUB @OBJSET
- IF I==7 THEN GOSUB @ENMSET
- SP=SP+1
- @OBJDRAW2
- NEXT X
- NEXT Y
- RETURN
- @OBJSET
- SPSET L,OBJPAT(I,0),OBJPAT(I,1),0,0,1
- SPANIM L,OBJPAT(I,2),OBJPAT(I,3),0
- SPOFS L,J*16,K*16,1
- SPNUM(J,K+4)=L
- RETURN
- @ENMSET
- ENLIST(EN,0)=L
- ENLIST(EN,1)=J*16
- ENLIST(EN,2)=K*16
- ENLIST(EN,3)=7
- EN=EN+1
- RETURN
- @BGCLR
- FOR Y=0 TO 63
- FOR X=0 TO 63
- BGPUT 0,X,Y,0,0,0,0
- NEXT X
- NEXT Y
- RETURN