2011年12月07日投稿 / 投稿者 : shiro / タグ : 投稿プログラム ゲーム アクションゲーム QRコード 初代対応
昔のアーケードゲームを思い出しながら作りました。
公式のプログラムリストにもブロックくずしがありますが、あえて1から自分で作ってみました。
起動するとデモ画面が出ます。Aボタンでゲームがスタートします。
パドルは下画面をタッチして動かしてください。十字キーには対応していません。
アイテムなどは何も出ません。ひたすらボールを打ち返してブロックを消してください。
向こう側の壁にボールが当たると、パドルの長さが半分になります。
ボールは3個です。400点でボールが1個追加されます。
2面クリアしても終わりません。ずっと続きます。
DSiLLで開発しています。3DSだとボールが速過ぎると思いますので、49行目のウェイトの値を増やしてください。
かつて8ビットマシンの時代にブロックくずしを作りましたが、BASICでは速度が足りず、マシン語ルーチンを組み込んで何とか遊べる代物になりました。
今はオールBASICでこれだけ高速なブロックくずしが作れるんですね。楽しいです。
ゲームタイトルは最初「元祖ブロックくずし」にしようと思ったのですが、既に使っている人がいたので、「簡素」にしてみました。
プチコンmkII 向けの QR コードです。
- ’**************
- ’* *
- ’* カンソ *
- ’* フ゛ロック クス゛シ *
- ’* *
- ’* 2012.1.19 *
- ’* by shiro *
- ’* *
- ’**************
- ’*** ショキ セッテイ ***
- CLEAR
- VISIBLE 1,0,0,0,1,1
- PNLTYPE ”OFF”
- CLS
- GPAGE 0:GCLS 0
- GPAGE 1:GCLS 0
- BGMSTOP
- GPAGE 0
- SPPAGE 0
- DIM BLOCK(14,8),COLBLK(8)
- ’ケ゛ーム モート゛
- GMDEMO=0
- GMPLAY=1
- GMMISS=2
- ’フ゛ロック
- BLOCKMAX=14*8
- BLKOX=56:BLKOY=16
- BLKWX=14:BLKWY=6
- ’スクリーン サイス゛
- SCRMINX=55:SCRMAXX=SCRMINX+BLKWX*14+2
- SCRMINY=0:SCRMAXY=191
- ’ハ゜ト゛ル
- PADIX=150:PADY=189
- PADWL=28:PADWS=14
- PADWY=2
- ’ホ゛ール
- SPSET 0,254,1,0,0,0
- SPSCALE 0,150
- BALLMAX=3
- BALLIX=110:BALLIY=82
- BALLWT0=12:BALLWT1=10
- ’スコア
- SCOREX=0:SCOREY=0
- SCOREB=400
- ’ホ゛ール ノコリ
- BALLCX=0:BALLCY=3
- ’メッセーシ゛
- MESX=12:MESY=13
- ’カラー
- COLPAD=15
- COLWALL=15
- COLMES=0
- COLSCORE=0:COLBALLC=0
- FOR Y=0 TO 7
- READ COLBLK(Y)
- NEXT Y
- DATA 3,3,12,12,11,11,15,15
- ’サウント゛
- BPPAD=4096:BPWALL=2048:BPBLOCK=0
- BPBONUS=3
- GOSUB @INIBLOCK
- GOSUB @PRTSCORE
- GOSUB @PRTBALLC
- ’*** テ゛モ ***
- @DEMO
- GM=GMDEMO
- GOSUB @PRTBLOCK
- BALLSP=3
- BALLX=BALLIX:BALLY=BALLIY
- BALLDX=1:BALLDY=1
- GOSUB @PRTPADLN
- COLOR COLMES
- LOCATE MESX,MESY
- PRINT ”PUSH A TO START”
- LOCATE MESX,MESY+2
- PRINT ” PUSH B TO END”
- @DEMOLOOP
- GOSUB @MOVEBALL
- FOR I=0 TO BALLWT0+BALLWT1*BALLSP:GOSUB @PRTWALL:NEXT I
- IF (BUTTON() AND 16)!=0 GOTO @GAMEINIT
- IF (BUTTON() AND 32)!=0 GOTO @ENDINIT
- GOTO @DEMOLOOP
- ’*** ケ゛ーム ショキカ ***
- @GAMEINIT
- SCORE=0
- BALLC=BALLMAX
- CLBLOCK=FALSE
- CLS:GCLS 0
- GOSUB @PRTWALL
- GOSUB @INIBLOCK
- GOSUB @PRTBLOCK
- GOSUB @PRTSCORE
- ’*** ケ゛ーム リスタート ***
- @RESTART
- GM=GMPLAY
- BALLSP=3
- BALLDX=1:BALLDY=1
- PADX=PADIX:PADWX=PADWL
- PADRFC=0
- RFPAD=FALSE:RFBLOCK=FALSE
- GOSUB @PRTPAD
- GOSUB @PRTBALLC
- BALLX=BALLIX:BALLY=BALLIY
- GOSUB @PRTBALL
- VSYNC 150
- ’*** メイン ルーフ゜ ***
- @MAINLOOP
- GOSUB @MOVEPAD
- GOSUB @MOVEBALL
- FOR I=0 TO BALLWT0+BALLWT1*BALLSP:GOSUB @PRTWALL:NEXT I
- IF GM==GMPLAY GOTO @MAINLOOP
- ’*** ミス ***
- VSYNC 150
- BALLC=BALLC−1
- GOSUB @PRTBALLC
- IF BALLC==0 GOTO @DEMO
- GOSUB @ERCPAD
- GOTO @RESTART
- ’*** ケ゛ーム シュウリョウ ***
- @ENDINIT
- VISIBLE 1,1,1,1,1,1
- CLS
- GPAGE 0:GCLS 0
- SPCLR
- END
- ’===== サフ゛ルーチン =====
- ’*** カヘ゛ ヒョウシ゛ ***
- @PRTWALL
- GLINE SCRMINX,SCRMINY,SCRMINX,SCRMAXY,COLWALL
- GLINE SCRMAXX,SCRMINY,SCRMAXX,SCRMAXY,COLWALL
- RETURN
- ’*** テ゛モ ハ゜ト゛ルライン ヒョウシ゛ ***
- @PRTPADLN
- GFILL SCRMINX+1,PADY,SCRMAXX−1,PADY+PADWY,COLPAD
- RETURN
- ’*** フ゛ロック ショキカ ***
- @INIBLOCK
- BLOCKC=BLOCKMAX
- FOR X=0 TO 13
- BLOCK(X,0)=7:BLOCK(X,1)=7
- BLOCK(X,2)=5:BLOCK(X,3)=5
- BLOCK(X,4)=3:BLOCK(X,5)=3
- BLOCK(X,6)=1:BLOCK(X,7)=1
- NEXT X
- RETURN
- ’*** フ゛ロック ヒョウシ゛ ***
- @PRTBLOCK
- FOR X=0 TO 13
- FOR Y=0 TO 7
- IF BLOCK(X,Y)==0 THEN @PRTBLK2
- GX=BLKOX+X*BLKWX
- GY=BLKOY+Y*BLKWY
- GCOLOR COLBLK(Y)
- GFILL GX+1,GY+1,GX+BLKWX−1,GY+BLKWY−1
- @PRTBLK2
- NEXT Y
- NEXT X
- RETURN
- ’*** ハ゜ト゛ルヲ ウコ゛カス ***
- @MOVEPAD
- GOSUB @ERCPAD
- IF TCHST==TRUE THEN PADX=TCHX
- IF PADX−PADWX/2<=SCRMINX THEN PADX=SCRMINX+PADWX/2
- IF PADX+PADWX/2>=SCRMAXX−1 THEN PADX=SCRMAXX−PADWX/2−1
- GOSUB @PRTPAD
- RETURN
- ’ハ゜ト゛ル ヒョウシ゛
- @PRTPAD
- GFILL PADX−PADWX/2+1,PADY,PADY+PADWY,COLPAD
- RETURN
- ’ハ゜ト゛ル ショウキョ
- @ERCPAD
- GFILL PADX−PADWX/2+1,PADY,PADY+PADWY,0
- RETURN
- ’*** ホ゛ールヲ ウコ゛カス ***
- @MOVEBALL
- IF BALLX<=SCRMINX+2 THEN GOSUB @RFWALLL
- IF BALLX>=SCRMAXX−2 THEN GOSUB @RFWALLR
- IF BALLY<SCRMINY THEN GOSUB @RFWALLU
- IF BALLY>SCRMAXY+1 THEN GOSUB @RFMISS:RETURN
- IF BALLY<PADY−2 OR BALLY>PADY THEN RFPAD=FALSE:GOTO @NOPAD
- IF GM==GMDEMO THEN GOSUB @RFPADLN:GOTO @NOPAD
- IF 0<=PADX−BALLX AND PADX−BALLX<=PADWX/2 AND RFPAD==FALSE THEN GOSUB @RFPADL
- IF 0<BALLX−PADX AND BALLX−PADX<=PADWX/2+1 AND RFPAD==FALSE THEN GOSUB @RFPADR
- @NOPAD
- @CHKBLOCK
- IF RFBLOCK==TRUE GOTO @NOBLOCK
- BX=FLOOR((BALLX−BLKOX)/BLKWX)
- BY=FLOOR((BALLY−BLKOY)/BLKWY)
- IF BY<0 OR BY>7 GOTO @NOBLOCK
- IF BLOCK(BX,BY)>0 THEN GOSUB @RFBLOCK
- @NOBLOCK
- BALLX=BALLX+BALLDX
- BALLY=BALLY+BALLDY
- GOSUB @PRTBALL
- RETURN
- ’ホ゛ール ヒョウシ゛
- @PRTBALL
- SPOFS 0,BALLX−12,BALLY−12
- RETURN
- ’ハンシャ ハ゜ト゛ル ヒタ゛リ
- @RFPADL
- BEEP 0,BPPAD
- BALLDX=−1:BALLDY=−BALLDY
- GOSUB @BALLPTRN
- RFPAD=TRUE:RFBLOCK=FALSE
- IF CLBLOCK==TRUE THEN GOSUB @PRTBLOCK:CLBLOCK=FALSE
- RETURN
- ’ハンシャ ハ゜ト゛ル ミキ゛
- @RFPADR
- BEEP 0,BPPAD
- BALLDX=1:BALLDY=−BALLDY
- GOSUB @BALLPTRN
- RFPAD=TRUE:RFBLOCK=FALSE
- IF CLBLOCK==TRUE THEN GOSUB @PRTBLOCK:CLBLOCK=FALSE
- RETURN
- ’ハンシャ ハ゜ト゛ルライン
- @RFPADLN
- BALLDY=−BALLDY
- GOSUB @BALLPTRN
- RFBLOCK=FALSE
- RETURN
- ’ホ゛ール ハ゜ターン
- @BALLPTRN
- PADRFC=PADRFC+1
- IF PADRFC==5 AND BALLSP!=0 THEN BALLSP=2
- IF PADRFC==11 AND BALLSP!=0 THEN BALLDY=−0.5
- IF PADRFC==15 AND BALLSP!=0 THEN BALLSP=1:BALLDY=−1
- RETURN
- ’ハンシャ カヘ゛ ヒタ゛リ
- @RFWALLL
- IF GM==GMPLAY THEN BEEP 0,BPWALL
- BALLDX=1
- RETURN
- ’ハンシャ カヘ゛ ミキ゛
- @RFWALLR
- IF GM==GMPLAY THEN BEEP 0,BPWALL
- BALLDX=−1
- RETURN
- ’ハンシャ カヘ゛ ウエ
- @RFWALLU
- BALLDY=−BALLDY
- RFBLOCK=FALSE
- IF GM==GMDEMO THEN RETURN
- IF PADWX==PADWL THEN GOSUB @ERCPAD:PADWX=PADWS:GOSUB @PRTPAD
- RETURN
- ’ハンシャ フ゛ロック
- @RFBLOCK
- BALLDY=−BALLDY
- RFBLOCK=TRUE
- IF BY<=3 THEN BALLSP=0:BALLDY=SGN(BALLDY)
- IF GM==GMDEMO THEN RETURN
- BEEP 0,BPBLOCK
- SCORE0=SCORE
- SCORE=SCORE+BLOCK(BX,BY)
- GOSUB @PRTSCORE
- BLOCK(BX,BY)=0
- BLOCKC=BLOCKC−1
- GX=BLKOX+BX*BLKWX
- GY=BLKOY+BY*BLKWY
- GFILL GX+1,GY+1,GX+BLKWX−1,GY+BLKWY−1,0
- IF SCORE0<SCOREB AND SCORE>=SCOREB THEN BALLC=BALLC+1:GOSUB @PRTBALLC:BEEP BPBONUS
- IF BLOCKC==0 THEN CLBLOCK=TRUE
- RETURN
- ’ミス
- @RFMISS
- GM=GMMISS
- RETURN
- ’*** スコア ヒョウシ゛ ***
- @PRTSCORE
- COLOR COLSCORE
- LOCATE SCOREX,SCOREY
- PRINT ”SCORE”
- LOCATE SCOREX,SCOREY+1
- PRINT SCORE
- RETURN
- ’*** ノコリ ホ゛ール ヒョウシ゛ ***
- @PRTBALLC
- COLOR COLBALLC
- LOCATE BALLCX,BALLCY
- PRINT ”BALL”
- LOCATE BALLCX,BALLCY+1
- PRINT ” ”
- LOCATE BALLCX,BALLCY+1
- FOR I=1 TO BALLC
- PRINT ”○”;
- NEXT I
- RETURN
この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)
|&ref(qr1.png);|&ref(qr2.png);|
表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.167 秒 | このページの最終更新 : 2022/09/20 (火) 12:44:06 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30