プチコンまとめWiki (初代/mkII)

投稿プログラム : とりでの攻防

パンくずリスト

2011年03月31日投稿 / 投稿者 : 名無しさん / タグ : 投稿プログラム ゲーム シューティングゲーム 初代対応 移植

概要

ベーマガ1989年05月号大高準一郎さん投稿「とりでの攻防」の移植です。

  • 2P用です。
  • パッドの左右で角度変更、上下でパワー変更、Aボタンで決定です。
  • DSiからの打ち込みですのでソースにミス、バグがある可能性があります。
  • 写真にしようかと思いましたが綺麗に取れなかったので打ち込みました。
  • 本家は3本設定ですが、1回で終了となっています。
  • 動作報告・バグ報告・要望はCHECKER FLAGにお願いいたします。
  • 打ち込みミスが多かったのでソース画像も置いておきます。(4/4)
  • 正直、打ち込みの半分くらいの時間は掛かった・・・orz
  • お詫びにCPU対戦ソースも追加しておきます。ちなみに強すぎます。(4/4)

スクリーンショット・動画

toride001.jpg
toride002.jpg

QR コード

プチコンmkII 向けの QR コードです。

PRG:TORIDE
1/42/4
qr0.pngqr1.png
3/44/4
qr2.pngqr3.png

プログラムリスト

  1. ’┌───────────────────┐
  2. ’│トリテ゛ノコウホ゛ウ         │
  3. ’│                   │
  4. ’│   2011.3.9  @JEDA │
  5. ’└───────────────────┘
  6. ’ヘンスウセンケ゛ン
  7. CLEAR
  8. BASEY=80
  9. DIM MTX(50),MTY(50) ’ヤマノリョウセン
  10. DIM PX(2),PY(2)     ’ホウタ゛イイチ
  11. DIM PXX(2),PYY(2)   ’ホウタ゛イサ゛ヒョウ
  12. DIM PLC(2),PDC(2)   ’ホウタ゛イイロ
  13. DIM ANGLE(2),PW(2)  ’カクト゛ハ゜ワー
  14. DIM VX(2),VY(2)     ’タマノソクト゛
  15. DIM HIT(2)          ’ヒットフラク゛(1:シ゛メン 2:テキ 3:シ゛ハ゛ク)
  16. DIM BT(2)           ’エフェクトカウンタ
  17. PLC(0)=4:PLC(1)=2
  18. PDC(0)=15:PDC(1)=12
  19. ’ショキカ
  20. @SETUP
  21. CLS:GCLS 0:COLOR 0
  22. VISIBLE 1,1,0,0,0,1
  23. PX(0)= 5−RND(2)
  24. PX(1)= 26+RND(2)
  25. TOTALX=0
  26. TOTALY=BASEY
  27. MTX(0)=TOTALX−8
  28. MTY(0)=TOTALY
  29. ANGLE(0)=50
  30. ANGLE(1)=130
  31. PW(0)=8:PW(1)=8
  32. VX(0)=0:VY(0)=0
  33. VX(1)=0:VY(1)=0
  34. TX(0)=0:TY(0)=0
  35. TX(1)=0:TY(1)=0
  36. BT(0)=0:BT(1)=0
  37. YC=145
  38. ’ステータス
  39. TITLE=  0
  40. STGSET= 1
  41. PLAYER1=2
  42. PLAYER2=3
  43. MSFIRE= 4
  44. MSMOVE= 5
  45. PRESULT=6
  46. STATE=TITLE
  47. P=0
  48. CNT=0
  49. RCT=0
  50. REPEAT=0
  51. ’メインルーフ゜
  52. @MAINLOOP
  53. ’キーノシュトク
  54. BTN=BUTTON()
  55. TRG=(BTN XOR OLDBTN) AND BTN
  56. REPEAT=0
  57. IF TRG THEN RCT=0:REPEAT=TRG
  58. RCT=RCT+1
  59. IF RCT>30 THEN REPEAT=BTN
  60. OLDBTN=BTN
  61. ’ステートニヨルシーケンスショリ
  62. ON STATE GOSUB @TITLE,@STGSET,@PLAYER,@PLAYER,@MSFIRE,@MSMOVE,@PRESULT
  63. IF STATE==99 THEN @SETUP
  64. VSYNC 1
  65. GOTO @MAINLOOP
  66. @TITLE
  67. IF CNT==0 THEN BGMPLAY 4
  68. LOCATE 11,8:COLOR 0
  69. PRINT ”トリテ゛ノコウホ゛ウ”
  70. LOCATE 9,14
  71. PRINT ”PUSH ANY BUTTON”
  72. CNT=CNT+1
  73. IF CNT<30 THEN RETURN
  74. IF TRG THEN BGMSTOP:CLS:CNT=0:STATE=STGSET
  75. RETURN
  76. ’ステーシ゛サクセイ
  77. @STGSET
  78. GOSUB @MNTMAKE
  79. GOSUB @MNTDRAW
  80. GOSUB @PLPUT
  81. WIND=RND(6)−3
  82. CNT=0
  83. PL=0
  84. MSC=0 ’タマノカウンタ
  85. BT(0)=0:BT(1)=0
  86. STATE=PLAYER1
  87. BGMPLAY 9
  88. RETURN
  89. ’ヤマノリョウセンサクセイ
  90. @MNTMAKE
  91. FOR I=1 TO 32
  92.  ’P1サ゛ヒョウショリ
  93.  IF PX(0)!=I THEN @YML0
  94.  MTY(I)=MTY(I−1)
  95.  PXX(0)=TOTALX
  96.  PYY(0)=MTY(I)−8−1
  97.  GOTO @YML1
  98. @YML0
  99.  ’P2サ゛ヒョウショリ
  100.  IF PX(1)!=I THEN @YTEST
  101.  MTY(I)=MTY(I−1)
  102.  PXX(1)=TOTALX
  103.  PYY(1)=MTY(I)−8−1
  104.  GOTO @YML1
  105. @YTEST
  106.  ’Yサ゛ヒョウノチェック
  107.  TESTY=TOTALY+8*(RND(10)−5)
  108.  IF TESTY<60 THEN @YTEST
  109.  IF TESTY>140 THEN @YTEST
  110.  MTY(I)=TESTY
  111. @YML1
  112.  TOTALY=TESTY
  113.  TOTALX=TOTALX+8
  114.  MTX(I)=TOTALX
  115. NEXT
  116. RETURN
  117. ’ヤマノヒ゛ョウカ゛
  118. @MNTDRAW
  119. FOR I=0 TO 31
  120.  GLINE MTX(I),MTY(I),MTX(I+1),MTY(I+1),YC
  121. NEXT
  122. GPAINT 100,160,YC
  123. RETURN
  124. ’タイホウノヒョウシ゛
  125. @PLPUT
  126. FOR I=0 TO 1
  127.  GFILL PXX(I),PYY(I),PXX(I)+8,PYY(I)+8,PLC(I)
  128. NEXT
  129. RETURN
  130. ’カセ゛ノヒョウシ゛
  131. @PUTWIND
  132. LOCATE 12,21:COLOR 1
  133. IF WIND==0 THEN ?”WIND <−−0−−>”
  134. IF WIND<0 THEN ?”WIND <−”;WIND
  135. IF WIND>0 THEN ?”WIND ”;WIND;”−−>”
  136. RETURN
  137. ’フ゜レイヤーニュウリョク
  138. @PLAYER
  139. GOSUB @PUTWIND
  140. GOSUB @PLPUT
  141. LOCATE P*20,0
  142. COLOR 11+P*2
  143. ?”PLAYER”;P+1
  144. LOCATE P*20,1
  145. ?”ANGLE=”;ANGLE(P);” ”
  146. LOCATE P*20,2
  147. ?”POWER=”;PW(P);” ”
  148. ’ホウトウヒ゛ョウカ゛
  149. HX=PXX(P)+4
  150. HY=PYY(P)−1
  151. AG=RAD(ANGLE(P))
  152. GLINE HX,HY,HX+COS(AG)*8,HY−SIN(AG)*8,0
  153. IF REPEAT==8 THEN ANGLE(P)=ANGLE(P)−1
  154. IF REPEAT==4 THEN ANGLE(P)=ANGLE(P)+1
  155. IF ANGLE(P)<0 THEN ANGLE(P)=0
  156. IF ANGLE(P)>180 THEN ANGLE(P)=180
  157. AG=RAD(ANGLE(P))
  158. GLINE HX,HY,HX+COS(AG)*8,HY−SIN(AG)*8,PLC(P)
  159. IF REPEAT==1 THEN PW(P)=PW(P)+1
  160. IF REPEAT==2 THEN PW(P)=PW(P)−1
  161. IF PW(P)<1 THEN PW(P)=1
  162. IF PW(P)>16 THEN PW(P)=16
  163. CNT=CNT+1
  164. IF CNT<30 THEN @PLEND
  165. IF TRG==16 THEN CLS:CNT=0:P=1:STATE=STATE+1
  166. @PLEND
  167. RETURN
  168. ’タマノハッシャ
  169. @MSFIRE
  170. FOR I=0 TO 1
  171.  AG=RAD(ANGLE(I))
  172.  VX(I)=PW(I)*COS(AG)*0.6
  173.  VY(I)=−PW(I)*SIN(AG)*0.6
  174.  TX(I)=PXX(I)+4+COS(AG)*8
  175.  TY(I)=PYY(I)−SIN(AG)*8
  176. NEXT
  177. MSC=0
  178. CNT=0
  179. HIT(0)=0:HIT(1)=0
  180. BEEP 31,−4096
  181. STATE=MSMOVE
  182. RETURN
  183. ’タマノイト゛ウ
  184. @MSMOVE
  185. CNT=CNT+1
  186. IF CNT%5 THEN RETURN
  187. FOR I=0 TO 1
  188.  IF HIT(I)!=0 THEN @MSLOOP1
  189.  BEEP 0,−4096
  190.  VX(I)=VX(I)+0.025*WIND
  191.  VY(I)=VY(I)+0.2
  192.  IF VX(I)>16 THEN VX(I)=16
  193.  IF VX(I)<−16 THEN VX(I)=−16
  194.  IF VY(I)>8 THEN VY(I)=8
  195.  TX(I)=TX(I)+VX(I)
  196.  TY(I)=TY(I)+VY(I)
  197.  SP=GSPOIT(TX(I),TY(I))
  198.  GPSET TX(I),TY(I),PDC(I)
  199.  IF SP==YC THEN HIT(I)=1:BEEP 9,−8192,80
  200.  PP=0
  201. @HITCHK
  202.  E=1−PP
  203.  IF PXX(E)>TX(I) THEN @HITCHKL
  204.  IF PYY(E)>TY(I) THEN @HITCHKL
  205.  IF PXX(E)+9<TX(I) THEN @HITCHKL
  206.  IF PYY(E)+9<TY(I) THEN @HITCHKL
  207.  IF I==E THEN HIT(I)=3:GOTO @HITCHKL
  208.  HIT(I)=2
  209. @HITCHKL
  210.  PP=PP+1
  211.  IF PP<2 THEN @HITCHK
  212. @MSLOOP1
  213. NEXT
  214. ’チャクタ゛ン
  215. FOR I=0 TO 1
  216.  IF HIT(I)==0 THEN @MSLOOP2
  217.  IF HIT(I)!=HITOLD(I) THEN BEEP 13
  218.  FOR R=1 TO 4
  219.   GCIRCLE TX(I),TY(I),R,0
  220.  NEXT R
  221. @MSLOOP2
  222. NEXT I
  223. MSC=MSC+1
  224. IF MSC<=80 THEN @MSCHKL
  225. FOR I=0 TO 1
  226.  IF TX(I)<0 THEN HIT(I)=1
  227.  IF TX(I)>256 THEN HIT(I)=1
  228. NEXT
  229. @MSCHKL
  230. IF HIT(0)*HIT(1)==1 THEN P=0:STATE=PLAYER1:GOTO @MSEND
  231. ’ケッカハンテイ
  232. I=0
  233. @MSLOOP3
  234.  IF HIT(I)<2 THEN @MSLOOP4
  235.  IF HIT(1−I)==0 THEN @MSLOOP4
  236.  IF BT(I)<16 THEN @MSLOOP4 
  237.  IF HIT(1−I)>=2 THEN IF BT(1−I)<16 THEN @MSLOOP4 
  238.  CNT=0
  239.  STATE=PRESULT
  240.  BGMSTOP
  241.  BGMPLAY 6
  242.  GOTO @MSEND
  243. @MSLOOP4
  244. I=I+1
  245. IF I<2 THEN @MSLOOP3
  246. @MSEND
  247. GOSUB @PLHIT
  248. GOSUB @PUTWIND
  249. HITOLD(0)=HIT(0)
  250. HITOLD(1)=HIT(1)
  251. RETURN
  252. ’フ゜レイヤーヤラレショリ
  253. @PLHIT
  254. FOR I=0 TO 1
  255.  E=1−I
  256.  IF HIT(I)==3 THEN E=I
  257.  IF HIT(I)<2 THEN @BM1
  258.  IF HIT(I)==HITOLD(I) THEN @PLHITL
  259.  LX=PXX(E)/8−3
  260.  LY=PYY(E)/8
  261.  IF LX<=0 THEN LX=0
  262.  LOCATE LX,LY
  263.  COLOR I*3
  264.  ?”\ト゛カ~ン/”
  265. @PLHITL
  266.  GPSET PXX(E)+RND(8),PYY(E)−4+RND(8),2+RND(7)
  267.  GPSET PXX(E)+RND(16)−4,PYY(E)−8+RND(16),2+RND(7)
  268.  GPSET PXX(E)+RND(8),PYY(E)−5+RND(10),2+RND(7)
  269.  BEEP 15
  270.  BT(I)=BT(I)+1
  271. @BM1
  272. NEXT I
  273. @BMEND
  274. RETURN
  275. ’ケッカヒョウシ゛
  276. @PRESULT
  277. GFILL 0,108,256,140,0
  278. DEL$=””
  279. FOR D=0 TO 23
  280.  DEL$=DEL$+” ”
  281. NEXT
  282. LOCATE 0,14:?DEL$
  283. LOCATE 0,15:?DEL$
  284. LOCATE 0,16:?DEL$
  285. LOCATE 11,15:COLOR 0
  286. IF HIT(0)==HIT(1) THEN IF HIT(0)>=2 THEN @PRDRAW
  287. WP=0
  288. IF HIT(1)==2 THEN WP=1
  289. IF HIT(0)==3 THEN WP=1
  290. IF HIT(1)==3 THEN WP=0
  291. ?WP+1;”PLAYER WIN”
  292. GOTO @PREND
  293. @PRDRAW
  294. LOCATE 14,15
  295. ?”DRAW”
  296. @PREND
  297. CNT=CNT+1
  298. IF CNT<30 THEN RETURN
  299. IF TRG THEN STATE=99
  300. RETURN
toridesrc001.jpg
toridesrc002.jpg
toridesrc003.jpg
toridesrc004.jpg
toridesrc005.jpg
toridesrc006.jpg
toridesrc007.jpg
toridesrc008.jpg
toridesrc009.jpg
toridesrc010.jpg
toridesrc011.jpg
toridesrc012.jpg
toridesrc013.jpg

おまけ(CPU対戦)

某大型掲示板でCPU戦も作ってという話があったので、てきとーにサンプルを作りました。

vs.jpg

ここまでをリストの一番下に追加して、

vs00.jpg
vsplayer.jpg

プレイヤー入力部分に上記の赤線を追加。

stagevs.jpg

ステージ初期化に上記2行を追加で動くと思われます。

さらに、プログラム最初のほうの@SETUPの中で CALCF=0 を追加しておいてください。

ただし、土地が平坦だとほぼ100%はずしません。 もっと面白いAIが作れると思いますので、改造していってください。

CHECKER FLAG (ひとことコメント)

この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)

  • 名無しさん : 173行目と174行目で"PW(P)="が抜けてない? あと、204行目の飛び先は228行目? それに、62行目のOLDBTN、67行目のOLDBN、179行目のBTNOLDって同じ変数? (2011/03/31 (木) 18:46:42)
  • うp主 : もろもろご指摘ありがとうございます。修正させていただきました。 (2011/03/31 (木) 23:39:43)
  • うp主 : 179行目はトリガーに書きなおしております。 (2011/03/31 (木) 23:40:16)
  • うp主 : えらく間違いがありましたね。どうもすみません。 (2011/03/31 (木) 23:57:48)
  • 名無しさん : 172行目間違ってませんか? (2011/04/01 (金) 14:00:15)
  • うp主 : 引数の「0,」が要りませんでしたね。修正しました。m(_ _)M (2011/04/01 (金) 17:01:46)
  • うp主 : まともに動いている人はいないんじゃないかという不安。 (2011/04/01 (金) 17:02:14)
  • : 管理人さんには申し訳ないですが、リスト手打ちは無理です。デジカメにしておくべきです。絶対どこかしら間違います。 (2011/04/03 (日) 03:04:09)
  • うp主 : いえいえここはフォントが素晴らしいです。管理人様には感謝しています。 (2011/04/04 (月) 01:28:32)
  • うp主 : というわけでデジカメ画像も添付しておきました。 (2011/04/04 (月) 01:29:02)
  • うp主 : スクロール画面のほうは頑張って貼りつけていますので、そこでオペレーションミスが無い限りは写真のほうが正しいソースです。 (2011/04/04 (月) 01:30:16)
  • 名無しさん : 221と222の+9が*9になってました。編集しときました。 (2011/04/05 (火) 17:09:03)
  • 名無しさん : CALCROOTがどこからも呼び出されていませんが・・・(対CPU) (2011/04/05 (火) 17:57:16)
  • うp主 : ↑うお、すみません。画像を1枚追加しました。>CALCROOT (2011/04/05 (火) 18:41:58)
  • うp主 : ↑↑↑まだありましたかorz・・・ありがとうございます。 (2011/04/05 (火) 18:42:51)
  • 名無しさん : ありがとうございます!動きました!!しかしCPU強すぎ・・・どう調整するかな・・・ (2011/04/05 (火) 20:40:44)
  • うp主 : 動作報告ありがとうございます!動いてよかったです^^ (2011/04/06 (水) 10:53:38)
  • ちくわ : CPUが強すぎです。CPUを弱くするには、どうすればよいですか? (2011/10/23 (日) 23:04:49)
  • ごんべえ : 入力しました。とても楽しいです。今度は、スプライトを使った格ゲーを作ってください!お願いします! (2011/10/23 (日) 23:31:54)
  • インコ : CPUが弱すぎです。CPUを強くするにはどうすればいいですか。 (2011/11/12 (土) 10:51:13)
  • 名無しさん : 打ちおえたのですが、最初の画面からなんのボタンを押してもうごきません。おねがいします。 (2011/12/05 (月) 16:39:13)
  •   : ↑↑自慢乙w (2011/12/15 (木) 12:04:18)
  • みゅしゃ : @ENCRCTはなにをしてるの?EATとかHIGHATとかまったく使用していないようですが。 (2011/12/15 (木) 17:02:42)
  • BLACK : QRコード出してくれ (2012/04/05 (木) 18:11:04)
  • いかたこ : QRコード無いんですか (2012/04/06 (金) 16:39:38)
  • 名無しさん : QRコード載せときました。 (2012/04/06 (金) 17:03:31)
  • いかたこ : ありがとうございます (2012/04/06 (金) 22:06:10)
  • 名無しさん : ちなみにCPU対戦ソースはQRコード化しないんですか? (2012/04/09 (月) 13:47:00)
  • hata0401 : やっとルールが分かりました。 (2012/06/10 (日) 20:11:48)
  • 運具 : qrくれ (2012/06/10 (日) 20:42:10)
  • Woah : LOVE IT!!! (2012/08/13 (月) 05:59:27)
  • Jason : This is a very fun game! (2012/09/14 (金) 22:50:23)
  • atエンタ対戦囲碁 : a (2013/08/14 (水) 18:00:51)
  • ねじ : 何回かやってじわじわコツが分かってきますね。 (2013/11/03 (日) 22:37:58)

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.060 秒 | このページの最終更新 : 2013/11/03 (日) 22:37:58 (2084d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30