2011年08月11日投稿 / 投稿者 : ウル / タグ : 投稿プログラム ゲーム QRコード
奥からいろいろな障害物が飛んでくるのを避けつつ、★を取り続けるゲームです。
十字キーで自機を移動して、ひたすら障害物を避けてください。
スコア&ダメージ処理はありますが、ゲームオーバーはありません。
特に苦労したのはスプライトの優先順位で、
手前から順にSPCHRで毎回設定し直しています。
もともとは自機がビームを発射することができて、障害物とソート処理をした名残りです。
強制的に30FPSになるようにしています。
140行目あたりの VSC の値を大きくすると、さらに遅くなります。
障害物が見えづらいときは、195行目の (PY-16) を (PY-32) などの大きな値にすると
クォータービューのようになって奥行きがわかりやすくなります。
- ’トツケ゛キ!アステロイト゛
- CLS
- CLEAR
- VISIBLE 1,1,0,0,0,0
- ’PNLTYPE ”OFF”
- SPPAGE 0
- SPCLR
- GPAGE 0
- GCLS 0
- ’┌────┐
- ’│ショキカ│
- ’└────┘
- ’スフ゜ライト ハ゜ターン
- RESTORE @SPRDATA
- READ N
- @SPRINIT
- FOR J=0 TO 1
- P0$=””
- P1$=””
- FOR I=0 TO 7
- READ C$
-
- P0$=P0$+MID$(C$,0,8)
- P1$=P1$+MID$(C$,8,8)
- NEXT I
- K=N*4+J*2
- CHRSET ”SPU”,K+0,P0$
- CHRSET ”SPU”,K+1,P1$
- NEXT J
- READ N
- IF N!=−1 GOTO @SPRINIT
- ’スフ゜ライト ヒョウシ゛
- DIM SP(30)
- DIM SX(30)
- DIM SY(30)
- DIM SS(30)
- FOR I=0 TO 29
- SPSET I,0,0,0,0,1
- SPOFS I,−99,−99
- NEXT I
- SU0=0 ’セ゛ンカイ シヨウスウ
- ’カメラ
- CX=0
- CY=0
- ’フ゜レーヤー
- PX=0
- PY=0
- PR=0
- PS=1
- SPSET 30,0,0,0,0,0
- SPOFS 30,−99,−99
- SPSCALE 30,200
- SCO=0
- SCC=0
- DMG=0
- ’テキ
- DIM ET(30)
- DIM EX(30)
- DIM EY(30)
- DIM EZ(30)
- FOR I=0 TO 29
- ET(I)=0
- NEXT I
- EI=0
- ’テキ ハッセイ テーフ゛ル
- RESTORE @ENMDATA
- READ EGC
- DIM EGT(EGC)
- FOR I=0 TO EGC−1
- READ EGT(I)
- NEXT I
- EG=0
- ’シ゛メン
- DIM GX1(10)
- DIM GY1(10)
- DIM GX2(10)
- DIM GY2(10)
- GZ=0
- ’ソウサ セツメイ
- LOCATE 0,23
- PRINT ”シュウリョウ=STARTホ゛タン”;
- ’BGMサイセイ
- BGMPLAY 25
- ’ホ゛タン
- BT0=0
- ’ショリフカ
- MCC=0
- MC0=MAINCNTL
- ’スイチョクト゛ウキ
- VSC=2
- VS0=MAINCNTL%64
- ’カ゛メン ヒョウシ゛
- VISIBLE 1,1,1,1,1,1
- ’┌───────┐
- ’│メインルーチン│
- ’└───────┘
- @MAIN
- ’ホ゛タン
- BT=BUTTON()
- BT1=BT AND BT0
- BT0=NOT BT
- IF BT1 AND &H400 GOTO @EXIT
- ’スフ゜ライト シヨウスウ
- SU=0
- ’シ゛ョウケ゛ サユウ ニュウリョク
- YY=((BT AND &H2)!=0)−((BT AND &H1)!=0)
- XX=((BT AND &H8)!=0)−((BT AND &H4)!=0)
- ’フ゜レーヤー イト゛ウ
- PX=PX+XX*4
- PY=PY+YY*4
- PR=PR+XX*2
- PS=PS+0.0625
- IF PS>2 THEN PS=2
- IF PX<−100 THEN PX=−100
- IF PX> 100 THEN PX= 100
- IF PY<−100 THEN PY=−100
- IF PY> 100 THEN PY= 100
- IF PR<−20 THEN PR=−20
- IF PR> 20 THEN PR= 20
- IF XX==0 THEN PR=PR*0.75
- IF ABS(PR)<1 THEN PR=0
- ’テキ ハッセイ
- EG=EG−PS
- IF EG<=0 THEN GOSUB @EGEN
- ’カメラ
- CX=(CX+ PX )/2
- CY=(CY+(PY−16))/2
- ’フ゜レーヤー ヒョウシ゛ ケイサン
- PR1=(PR+360)%360
- R=RAD(PR1)
- C=COS(R)*16
- S=SIN(R)*16
- PX1=128+PX−CX−C+S
- PY1= 96+PY−CY−C−S
- ’テキ イト゛ウ
- C=C/16
- S=S/16
- FOR NN=0 TO 29
- N=(NN+EI)%30
- IF ET(N) THEN GOSUB @EPUT
- NEXT NN
- ’シヨウスウ シュウセイ
- SU=SU−1
- ’シ゛メン ケイサン
- GZ=(GZ−PS+20)%20
- X1= 500−CX
- X2=−500−CX
- Y = 100−CY
- Z=10+GZ
- FOR I=0 TO 4
- D=10/Z
- GX1(I)=128+( C*X1+S*Y)*D
- GX2(I)=128+( C*X2+S*Y)*D
- GY1(I)= 96+(−S*X1+C*Y)*D
- GY2(I)= 96+(−S*X2+C*Y)*D
- Z=Z+20
- NEXT I
- ’スイチョクト゛ウキ
- VS1=MAINCNTL%64
- I=VSC−(VS1−VS0+64)%64
- IF I>0 THEN VSYNC I
- VS0=(VS0+VSC)%64
- IF I<=−2 THEN VS0=VS1
- ’シ゛メン ヒ゛ョウカ゛
- GCLS 0
- FOR I=0 TO 1
- GLINE GX1(I),GY1(I),GX2(I),GY2(I),10
- NEXT I
- FOR I=2 TO 4
- GLINE GX1(I),GY1(I),GX2(I),GY2(I),26
- NEXT I
- ’フ゜レーヤー スフ゜ライト
- SPOFS 30,PX1,PY1
- SPANGLE 30,PR1
- ’テキ スフ゜ライト
- R=(360−PR1)%360
- FOR I=0 TO SU
- S=SS(I)
- SPCHR I,SP(I),S<100,0,0,S<200
- SPOFS I,SX(I),SY(I)
- SPSCALE I,S
- SPANGLE I,R
- NEXT I
- FOR I=I TO SU0
- SPOFS I,−99,−99
- NEXT I
- SU0=SU
- ’テキ ショウトツ ハンテイ
- X1=PX−24
- X2=PX+24
- Y1=PY−24
- Y2=PY+24
- FOR NN=0 TO 29
- N=(NN+EI)%30
- IF ET(N) THEN GOSUB @EHIT
- NEXT NN
- ’ショリフカ
- MCC=MCC+1
- IF MCC<10 GOTO @MAIN
- MC1=MAINCNTL
- LOCATE 0,22
- PRINT 600/(MC1−MC0);”FPS”,,
- MCC=0
- MC0=MC1
- GOTO @MAIN
- ’┌───────┐
- ’│サフ゛ルーチン│
- ’└───────┘
- ’テキ ハッセイ
- @EGEN
- T=EGT(RND(EGC))
- X=RND(200)−100
- Y=RND(200)−100
- Z=100
- GOSUB @ESET
- EG=5+RND(5)
- RETURN
- ’テキ セッテイ
- @ESET
- ET(EI)=T
- EX(EI)=X
- EY(EI)=Y
- EZ(EI)=Z
- EI=(EI+1)%30
- RETURN
- ’テキ イト゛ウ
- @EPUT
- Z=EZ(N)−PS
- IF Z<=9 THEN ET(N)=0:RETURN
- X=EX(N)−16
- Y=EY(N)−16
- EZ(N)=Z
- T=X
- X= C*T+S*Y
- Y=−S*T+C*Y
- ’サ゛ヒョウ ケイサン
- D=10/Z
- X=128+(X−CX)*D
- Y= 96+(Y−CY)*D
- ’スフ゜ライト トウロク
- IF D>1 THEN D=1
- SP(SU)=ET(N)
- SX(SU)=X
- SY(SU)=Y
- SS(SU)=D*200
- SU=SU+1
- RETURN
- ’テキ ショウトツ ハンテイ
- @EHIT
- X=EX(N)
- Y=EY(N)
- Z=EZ(N)
- IF Z>=11 THEN NN=29:RETURN
- IF (X<X1) OR (X2<X) THEN RETURN
- IF (Y<Y1) OR (Y2<Y) THEN RETURN
- IF (Z< 9) OR (11<Z) THEN RETURN
- IF ET(N)!=EGT(0) THEN @DMG
- SCC=SCC+1
- SCO=SCO+SCC
- ET(N)=0
- I=SCC*50
- IF I>1000 THEN I=1000
- BEEP 7,I,64
- LOCATE 0,0
- PRINT ”スコア =”;SCO
- PRINT ”コンホ゛=”;SCC;” ”
- RETURN
- @DMG
- SCC=0
- PS=0
- DMG=DMG+1
- ET(N)=0
- BEEP 13,0,64
- LOCATE 0,1
- PRINT ” ”
- PRINT ”タ゛メーシ゛=”;DMG
- RETURN
- ’┌──────┐
- ’│シュウリョウ│
- ’└──────┘
- @EXIT
- BGMSTOP
- LOCATE 0,4
- END
- ’┌────┐
- ’│テ゛ータ│
- ’└────┘
- ’テキ&スコア
- @ENMDATA
- DATA 3
- DATA 156
- DATA 143
- DATA 252
- ’スフ゜ライト ハ゜ターン
- @SPRDATA
- ’フ゜レーヤー A
- DATA 0
- DATA 0000000000000000
- DATA 0000000000000000
- DATA 0000000000000000
- DATA 0000020002000000
- DATA 0000002020000000
- DATA 000066FFF6600000
- DATA 000066FFF6600000
- DATA 0DDDD11D11DDDD00
- DATA 0DDDD11D11DDDD00
- DATA 00000FF0FF000000
- DATA 0002200000220000
- DATA 0220000000002200
- DATA 2000000000000020
- DATA 2000000000000020
- DATA 0000000000000000
- DATA 0000000000000000
- ’オワリ
- DATA −1
28 Jのループ回数 121 ソウサセツメイの表示位置:2→23 122 PRINTの末尾にセミコロンをつけて、改行しないようにする 155 変数名NT→BT 356 ID→IF 378 Z1→9 Z2→11 417 LOCATEのつづり
この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)
表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.146 秒 | このページの最終更新 : 2022/09/20 (火) 12:44:06 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30