2011年03月31日投稿 / 投稿者 : 名無しさん / タグ : 投稿プログラム ゲーム シューティングゲーム 初代対応 移植
ベーマガ1989年05月号大高準一郎さん投稿「とりでの攻防」の移植です。
プチコンmkII 向けの QR コードです。
- ’┌───────────────────┐
- ’│トリテ゛ノコウホ゛ウ │
- ’│ │
- ’│ 2011.3.9 @JEDA │
- ’└───────────────────┘
- ’ヘンスウセンケ゛ン
- CLEAR
- BASEY=80
- DIM MTX(50),MTY(50) ’ヤマノリョウセン
- DIM PX(2),PY(2) ’ホウタ゛イイチ
- DIM PXX(2),PYY(2) ’ホウタ゛イサ゛ヒョウ
- DIM PLC(2),PDC(2) ’ホウタ゛イイロ
- DIM ANGLE(2),PW(2) ’カクト゛ハ゜ワー
- DIM VX(2),VY(2) ’タマノソクト゛
- DIM HIT(2) ’ヒットフラク゛(1:シ゛メン 2:テキ 3:シ゛ハ゛ク)
- DIM BT(2) ’エフェクトカウンタ
- PLC(0)=4:PLC(1)=2
- PDC(0)=15:PDC(1)=12
- ’ショキカ
- @SETUP
- CLS:GCLS 0:COLOR 0
- VISIBLE 1,1,0,0,0,1
- PX(0)= 5−RND(2)
- PX(1)= 26+RND(2)
- TOTALX=0
- TOTALY=BASEY
- MTX(0)=TOTALX−8
- MTY(0)=TOTALY
- ANGLE(0)=50
- ANGLE(1)=130
- PW(0)=8:PW(1)=8
- VX(0)=0:VY(0)=0
- VX(1)=0:VY(1)=0
- TX(0)=0:TY(0)=0
- TX(1)=0:TY(1)=0
- BT(0)=0:BT(1)=0
- YC=145
- ’ステータス
- TITLE= 0
- STGSET= 1
- PLAYER1=2
- PLAYER2=3
- MSFIRE= 4
- MSMOVE= 5
- PRESULT=6
- STATE=TITLE
- P=0
- CNT=0
- RCT=0
- REPEAT=0
- ’メインルーフ゜
- @MAINLOOP
- ’キーノシュトク
- BTN=BUTTON()
- TRG=(BTN XOR OLDBTN) AND BTN
- REPEAT=0
- IF TRG THEN RCT=0:REPEAT=TRG
- RCT=RCT+1
- IF RCT>30 THEN REPEAT=BTN
- OLDBTN=BTN
- ’ステートニヨルシーケンスショリ
- ON STATE GOSUB @TITLE,@STGSET,@PLAYER,@PLAYER,@MSFIRE,@MSMOVE,@PRESULT
- IF STATE==99 THEN @SETUP
- VSYNC 1
- GOTO @MAINLOOP
- @TITLE
- IF CNT==0 THEN BGMPLAY 4
- LOCATE 11,8:COLOR 0
- PRINT ”トリテ゛ノコウホ゛ウ”
- LOCATE 9,14
- PRINT ”PUSH ANY BUTTON”
- CNT=CNT+1
- IF CNT<30 THEN RETURN
- IF TRG THEN BGMSTOP:CLS:CNT=0:STATE=STGSET
- RETURN
- ’ステーシ゛サクセイ
- @STGSET
- GOSUB @MNTMAKE
- GOSUB @MNTDRAW
- GOSUB @PLPUT
- WIND=RND(6)−3
- CNT=0
- PL=0
- MSC=0 ’タマノカウンタ
- BT(0)=0:BT(1)=0
- STATE=PLAYER1
- BGMPLAY 9
- RETURN
- ’ヤマノリョウセンサクセイ
- @MNTMAKE
- FOR I=1 TO 32
- ’P1サ゛ヒョウショリ
- IF PX(0)!=I THEN @YML0
- MTY(I)=MTY(I−1)
- PXX(0)=TOTALX
- PYY(0)=MTY(I)−8−1
- GOTO @YML1
- @YML0
- ’P2サ゛ヒョウショリ
- IF PX(1)!=I THEN @YTEST
- MTY(I)=MTY(I−1)
- PXX(1)=TOTALX
- PYY(1)=MTY(I)−8−1
- GOTO @YML1
- @YTEST
- ’Yサ゛ヒョウノチェック
- TESTY=TOTALY+8*(RND(10)−5)
- IF TESTY<60 THEN @YTEST
- IF TESTY>140 THEN @YTEST
- MTY(I)=TESTY
- @YML1
- TOTALY=TESTY
- TOTALX=TOTALX+8
- MTX(I)=TOTALX
- NEXT
- RETURN
- ’ヤマノヒ゛ョウカ゛
- @MNTDRAW
- FOR I=0 TO 31
- GLINE MTX(I),MTY(I),MTX(I+1),MTY(I+1),YC
- NEXT
- GPAINT 100,160,YC
- RETURN
- ’タイホウノヒョウシ゛
- @PLPUT
- FOR I=0 TO 1
- GFILL PXX(I),PYY(I),PXX(I)+8,PYY(I)+8,PLC(I)
- NEXT
- RETURN
- ’カセ゛ノヒョウシ゛
- @PUTWIND
- LOCATE 12,21:COLOR 1
- IF WIND==0 THEN ?”WIND <−−0−−>”
- IF WIND<0 THEN ?”WIND <−”;WIND
- IF WIND>0 THEN ?”WIND ”;WIND;”−−>”
- RETURN
- ’フ゜レイヤーニュウリョク
- @PLAYER
- GOSUB @PUTWIND
- GOSUB @PLPUT
- LOCATE P*20,0
- COLOR 11+P*2
- ?”PLAYER”;P+1
- LOCATE P*20,1
- ?”ANGLE=”;ANGLE(P);” ”
- LOCATE P*20,2
- ?”POWER=”;PW(P);” ”
- ’ホウトウヒ゛ョウカ゛
- HX=PXX(P)+4
- HY=PYY(P)−1
- AG=RAD(ANGLE(P))
- GLINE HX,HY,HX+COS(AG)*8,HY−SIN(AG)*8,0
- IF REPEAT==8 THEN ANGLE(P)=ANGLE(P)−1
- IF REPEAT==4 THEN ANGLE(P)=ANGLE(P)+1
- IF ANGLE(P)<0 THEN ANGLE(P)=0
- IF ANGLE(P)>180 THEN ANGLE(P)=180
- AG=RAD(ANGLE(P))
- GLINE HX,HY,HX+COS(AG)*8,HY−SIN(AG)*8,PLC(P)
- IF REPEAT==1 THEN PW(P)=PW(P)+1
- IF REPEAT==2 THEN PW(P)=PW(P)−1
- IF PW(P)<1 THEN PW(P)=1
- IF PW(P)>16 THEN PW(P)=16
- CNT=CNT+1
- IF CNT<30 THEN @PLEND
- IF TRG==16 THEN CLS:CNT=0:P=1:STATE=STATE+1
- @PLEND
- RETURN
- ’タマノハッシャ
- @MSFIRE
- FOR I=0 TO 1
- AG=RAD(ANGLE(I))
- VX(I)=PW(I)*COS(AG)*0.6
- VY(I)=−PW(I)*SIN(AG)*0.6
- TX(I)=PXX(I)+4+COS(AG)*8
- TY(I)=PYY(I)−SIN(AG)*8
- NEXT
- MSC=0
- CNT=0
- HIT(0)=0:HIT(1)=0
- BEEP 31,−4096
- STATE=MSMOVE
- RETURN
- ’タマノイト゛ウ
- @MSMOVE
- CNT=CNT+1
- IF CNT%5 THEN RETURN
- FOR I=0 TO 1
- IF HIT(I)!=0 THEN @MSLOOP1
- BEEP 0,−4096
- VX(I)=VX(I)+0.025*WIND
- VY(I)=VY(I)+0.2
- IF VX(I)>16 THEN VX(I)=16
- IF VX(I)<−16 THEN VX(I)=−16
- IF VY(I)>8 THEN VY(I)=8
- TX(I)=TX(I)+VX(I)
- TY(I)=TY(I)+VY(I)
- SP=GSPOIT(TX(I),TY(I))
- GPSET TX(I),TY(I),PDC(I)
- IF SP==YC THEN HIT(I)=1:BEEP 9,−8192,80
- PP=0
- @HITCHK
- E=1−PP
- IF PXX(E)>TX(I) THEN @HITCHKL
- IF PYY(E)>TY(I) THEN @HITCHKL
- IF PXX(E)+9<TX(I) THEN @HITCHKL
- IF PYY(E)+9<TY(I) THEN @HITCHKL
- IF I==E THEN HIT(I)=3:GOTO @HITCHKL
- HIT(I)=2
- @HITCHKL
- PP=PP+1
- IF PP<2 THEN @HITCHK
- @MSLOOP1
- NEXT
- ’チャクタ゛ン
- FOR I=0 TO 1
- IF HIT(I)==0 THEN @MSLOOP2
- IF HIT(I)!=HITOLD(I) THEN BEEP 13
- FOR R=1 TO 4
- GCIRCLE TX(I),TY(I),R,0
- NEXT R
- @MSLOOP2
- NEXT I
- MSC=MSC+1
- IF MSC<=80 THEN @MSCHKL
- FOR I=0 TO 1
- IF TX(I)<0 THEN HIT(I)=1
- IF TX(I)>256 THEN HIT(I)=1
- NEXT
- @MSCHKL
- IF HIT(0)*HIT(1)==1 THEN P=0:STATE=PLAYER1:GOTO @MSEND
- ’ケッカハンテイ
- I=0
- @MSLOOP3
- IF HIT(I)<2 THEN @MSLOOP4
- IF HIT(1−I)==0 THEN @MSLOOP4
- IF BT(I)<16 THEN @MSLOOP4
- IF HIT(1−I)>=2 THEN IF BT(1−I)<16 THEN @MSLOOP4
- CNT=0
- STATE=PRESULT
- BGMSTOP
- BGMPLAY 6
- GOTO @MSEND
- @MSLOOP4
- I=I+1
- IF I<2 THEN @MSLOOP3
- @MSEND
- GOSUB @PLHIT
- GOSUB @PUTWIND
- HITOLD(0)=HIT(0)
- HITOLD(1)=HIT(1)
- RETURN
- ’フ゜レイヤーヤラレショリ
- @PLHIT
- FOR I=0 TO 1
- E=1−I
- IF HIT(I)==3 THEN E=I
- IF HIT(I)<2 THEN @BM1
- IF HIT(I)==HITOLD(I) THEN @PLHITL
- LX=PXX(E)/8−3
- LY=PYY(E)/8
- IF LX<=0 THEN LX=0
- LOCATE LX,LY
- COLOR I*3
- ?”\ト゛カ~ン/”
- @PLHITL
- GPSET PXX(E)+RND(8),PYY(E)−4+RND(8),2+RND(7)
- GPSET PXX(E)+RND(16)−4,PYY(E)−8+RND(16),2+RND(7)
- GPSET PXX(E)+RND(8),PYY(E)−5+RND(10),2+RND(7)
- BEEP 15
- BT(I)=BT(I)+1
- @BM1
- NEXT I
- @BMEND
- RETURN
- ’ケッカヒョウシ゛
- @PRESULT
- GFILL 0,108,256,140,0
- DEL$=””
- FOR D=0 TO 23
- DEL$=DEL$+” ”
- NEXT
- LOCATE 0,14:?DEL$
- LOCATE 0,15:?DEL$
- LOCATE 0,16:?DEL$
- LOCATE 11,15:COLOR 0
- IF HIT(0)==HIT(1) THEN IF HIT(0)>=2 THEN @PRDRAW
- WP=0
- IF HIT(1)==2 THEN WP=1
- IF HIT(0)==3 THEN WP=1
- IF HIT(1)==3 THEN WP=0
- ?WP+1;”PLAYER WIN”
- GOTO @PREND
- @PRDRAW
- LOCATE 14,15
- ?”DRAW”
- @PREND
- CNT=CNT+1
- IF CNT<30 THEN RETURN
- IF TRG THEN STATE=99
- RETURN
某大型掲示板でCPU戦も作ってという話があったので、てきとーにサンプルを作りました。
ここまでをリストの一番下に追加して、
プレイヤー入力部分に上記の赤線を追加。
ステージ初期化に上記2行を追加で動くと思われます。
さらに、プログラム最初のほうの@SETUPの中で CALCF=0 を追加しておいてください。
ただし、土地が平坦だとほぼ100%はずしません。 もっと面白いAIが作れると思いますので、改造していってください。
この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)
表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.201 秒 | このページの最終更新 : 2022/09/20 (火) 12:43:57 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30