プチコンまとめArchive

投稿プログラム : リーチゲームVer2

パンくずリスト

このページの最終更新 : 2022/09/20 (火) 12:43:58

2011年12月01日投稿 / 投稿者 : shiro / タグ : 投稿プログラム ゲーム テーブルゲーム QRコード 初代対応

概要

CPUと対戦するビンゴゲームです。
起動するとデモ画面が表示され、ゲームのルールが説明されます。下画面にタッチすると、ゲームを開始できます。
上画面にCPUのマス目、下画面に自分のマス目が表示されます。(CPUのマス目は、ゲーム対戦中は隠されていて見えません)
自分のマス目の数字を、1手ずつタッチして「×」にして消していきます。
逆にCPUが選んだ数字は、自分のマス目では「○」になります。
「○」が縦・横・斜めのどこか1列で5個揃えば勝ちです。
どこの列を捨てて「×」で消していくかの戦略が難しく、後述のリーチ宣言ルールによる一発大逆転もあり、頭を使いますが楽しいゲームです。
CPUは結構強いです。どうしても勝てない人は、15行目の「DM=FALSE」を「DM=TRUE」に変えてデバッグモードにして、CPUの打ち方を見ながら研究してください。
リストがかなり長くて打つのが大変なので、デモ画面が必要ない人は92~195行を削ってください。

ゲームのルール

  1. 5×5のマス目に1~25の数字をランダムに並べてスタート。
  2. 自分が言った数字は「×」となり消える。
  3. 相手が言った数字は「○」となる。
  4. 「○」が縦・横・斜めのどこか1列で5個揃えば勝ち。
  5. 相手が言った数字で「○」が4個並んだ時は「リーチ」と宣言し、相手にもう一度数字を言わせることができる。

グラフィック文字

プログラムリスト中では、グラフィック文字を「X」「○」「★」などの全角文字に適宜置き換えています。
実際にプチコンで入力する時は、グラフィック文字で入力してください。

おまけ

私が通った中学校で当時流行していた紙と鉛筆のゲームを、BASICで再現しました。
今、ネットで「リーチゲーム」などと検索しても、このゲームの情報が出てきません。
私の中学だけのローカルブームだったのでしょうか?
過去に遊んだ経験がある人がいたら、ぜひコメントをください。

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

reach2-1.jpg
reach2-2.jpg

QR コード

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

123
qr2-1.pngqr2-2.pngqr2-3.png
456
qr2-4.pngqr2-5.pngqr2-6.png

プログラムリスト

  1. ’**************
  2. ’*            *
  3. ’* REACH GAME *
  4. ’*    Ver2    *
  5. ’* 2011.11.27 *
  6. ’*  by shiro  *
  7. ’*            *
  8. ’**************
  9. ’*** ショキセッテイ ***
  10. CLEAR
  11. ’テ゛ハ゛ック゛モート゛
  12. DM=FALSE
  13. VISIBLE 1,1,0,0,0,1
  14. PNLTYPE ”OFF”
  15. CLS
  16. GPAGE 0:GCLS 0
  17. GPAGE 1:GCLS 1
  18. BGMSTOP
  19. ’マスメ カンレン
  20. DIM YOUN(5,5),CPUN(5,5)
  21. DIM THKN(5,5),THKI(5,5)
  22. DIM LINEN(5,5)
  23. ’ナラヘ゛ラレル レツホウコウ
  24. ’bit0:─ bit1:│
  25. ’bit2:\ bit3:/
  26. FOR Y=0 TO 4
  27. FOR X=0 TO 4
  28. READ LINEN(X,Y)
  29. NEXT X
  30. NEXT Y
  31. DATA  7, 3, 3, 3,11
  32. DATA  3, 7, 3,11, 3
  33. DATA  3, 3,15, 3, 3
  34. DATA  3,11, 3, 7, 3
  35. DATA 11, 3, 3, 3, 7
  36. ’マーク X,○
  37. MARKER=0
  38. MARKSEL=-1
  39. ’ケ゛ーム シンコウ カンリ
  40. GMDEMO=0
  41. GMPLAY=1
  42. GMYOUWIN=2
  43. GMCPUWIN=3
  44. GMDRAW=4
  45. REACHNO=0
  46. REACHYOU=1
  47. REACHCPU=2
  48. TURNCPU=0
  49. TURNYOU=NOT TURNCPU
  50. TURN0=TURNCPU
  51. WINYOU=0:WINCPU=0
  52. ’ヒョウシ゛ サ゛ヒョウ
  53. YOUX=4:YOUY=3
  54. CPUX=4:CPUY=5
  55. SELWX=38:SELWY=21
  56. MESX=1:MESY=19
  57. ’メッセーシ゛
  58. DIM MES$(4)
  59. MESDLG=FALSE
  60. ’カラー
  61. COLTITLE=15:COLTITBG=2
  62. COLDEMO=15
  63. COLTBLTI=0
  64. COLTBLLN=6:COLTBLBG=15
  65. COLTBLN=11:COLTBLER=9
  66. COLTBLSL=13:COLTBLSC=11
  67. COLMES=0:COLMESFL=0
  68. COLMESBG=&HEE
  69. ’サウント゛
  70. BPYOUSEL=3:BPCPUSEL=2
  71. BPREACH=5
  72. BGMGAME=8
  73. BGMWIN=4:BGMLOSE=6:BGMDRAW=6
  74. ’*** ルール セツメイ テ゛モ ***
  75. @DEMO
  76. GM=GMDEMO
  77. MESTIME=400
  78. MESWAIT=0
  79. GOSUB @PRTTITLE
  80. GOSUB @PRTDEMO
  81. GOSUB @YOUINI
  82. GOSUB @YOUTABLE
  83. GOSUB @PRTYOUN
  84. GOSUB @CPUINI
  85. GOSUB @CPUTABLE
  86. GOSUB @PRTCPUN
  87. MESTCH=TRUE
  88. MESTIT$=”ルール セツメイ”
  89. MS$=”CPUト タイセンスル ヒ゛ンコ゛ケ゛ーム テ゛ス。”
  90. GOSUB @MESSAGE
  91. IF MESRET==TRUE GOTO @DEMOEND
  92. MS$=”5x5ノ マスメニ、1-25ノ スウシ゛ヲ ナラヘ゛テ スタート。”
  93. GOSUB @MESSAGE
  94. IF MESRET==TRUE GOTO @DEMOEND
  95. TURN=TURNYOU
  96. GOSUB @YOUTURN
  97. MS$=”シ゛フ゛ンカ゛ イッタ スウシ゛ハ、「X」ニナリ キエル。”
  98. GOSUB @MESSAGE
  99. IF MESRET==TRUE GOTO @DEMOEND
  100. TURN=TURNCPU
  101. GOSUB @CPUTURN
  102. MS$=”アイテカ゛ イッタ スウシ゛ハ、「○」ニナル。”
  103. GOSUB @MESSAGE
  104. IF MESRET==TRUE GOTO @DEMOEND
  105. MESTCH=FALSE
  106. MS$=””
  107. GOSUB @MESSAGE
  108. GR=REACHNO
  109. @DEMO1LP
  110. TURN=NOT TURN
  111. IF TURN==TURNYOU THEN GOSUB @YOUTURN:GOSUB @CHKCPU
  112. IF GR==REACHCPU GOTO @DEMO1LPE
  113. IF TURN==TURNCPU THEN GOSUB @CPUTURN:GOSUB @CHKYOU
  114. IF GR==REACHYOU GOTO @DEMO1LPE
  115. GOTO @DEMO1LP
  116. @DEMO1LPE
  117. MESTCH=TRUE
  118. MS$=”アイテカ゛ イッタ スウシ゛テ゛、「○」カ゛4コ ソロッタラ、「リーチ」ト センケ゛ン。アイテニ モウイチト゛ スウシ゛ヲ イワセラレル。”
  119. GOSUB @MESSAGE
  120. IF MESRET==TRUE GOTO @DEMOEND
  121. MESTCH=FALSE
  122. MS$=””
  123. GOSUB @MESSAGE
  124. TURN=NOT TURN
  125. GR=REACHNO
  126. @DEMO2LP
  127. TURN=NOT TURN
  128. @DEMO2LP1
  129. IF TURN==TURNYOU THEN GOSUB @YOUTURN:GOSUB @CHKCPU
  130. IF GM==GMCPUWIN GOTO @DEMO2LPE
  131. IF GR==REACHCPU GOTO @DEMO2LP1
  132. @DEMO2LP2
  133. IF TURN==TURNCPU THEN GOSUB @CPUTURN:GOSUB @CHKYOU
  134. IF GM==GMYOUWIN GOTO @DEMO2LPE
  135. IF GR==REACHYOU GOTO @DEMO2LP2
  136. GOTO @DEMO2LP
  137. @DEMO2LPE
  138. GM=GMDEMO
  139. MESTCH=TRUE
  140. MS$=”「○」カ゛、タテ・ヨコ・ナナメノ ト゛コカノレツテ゛ 5コ ソロエハ゛ カチ!”
  141. GOSUB @MESSAGE
  142. IF MESRET==TRUE GOTO @DEMOEND
  143. GM=GMPLAY
  144. GOSUB @YOUINI
  145. GOSUB @PRTYOUN
  146. GOSUB @CPUINI
  147. GOSUB @PRTCPUN
  148. MS$=”シ゛ッサイノ ケ゛ームテ゛ハ、CPUノ マスメハ カクサレマス。”
  149. GOSUB @MESSAGE
  150. GM=GMDEMO
  151. GOTO @DEMO
  152. @DEMOEND
  153. GOSUB @ERDEMO
  154. MESTCH=FALSE
  155. MESDLG=TRUE
  156. MESTIT$=””
  157. MS$=”ケ゛ームヲ ヤル?”
  158. GOSUB @MESSAGE
  159. IF MESRET==FALSE GOTO @ENDINIT
  160. ’*** ケ゛ーム リスタート ***
  161. @RESTART
  162. MESDLG=FALSE
  163. MESTCH=FALSE
  164. CLS
  165. GPAGE 0:GCLS 0
  166. GPAGE 1:GCLS 0
  167. GOSUB @PRTTITLE
  168. GOSUB @CPUTABLE
  169. GOSUB @YOUTABLE
  170. ’*** ケ゛ーム カイシ ***
  171. BGMPLAY BGMGAME
  172. GM=GMPLAY
  173. GOSUB @CPUINI
  174. GOSUB @PRTCPUN
  175. GOSUB @YOUINI
  176. GOSUB @PRTYOUN
  177. MESWAIT=100
  178. MS$=”○○○ ケ゛ーム カイシ! ○○○”
  179. GOSUB @MESSAGE
  180. TURN=TURN0
  181. MS$=”CPUカ゛ センテ。”
  182. IF TURN==TURNYOU THEN MS$=”アナタカ゛ センテ。”
  183. GOSUB @MESSAGE
  184. ’*** メイン ルーフ゜ ***
  185. IF TURN==TURNYOU GOTO @MAINYOU
  186. @MAINLOOP
  187. ’CPUノ ハ゛ン
  188. @MAINCPU
  189. TURN=TURNCPU
  190. GR=REACHNO
  191. GOSUB @CPUTURN
  192. MESWAIT=100
  193. MS$=”CPUハ ”+STR$(SELN)+”ヲ ケシマシタ。”
  194. BEEP BPCPUSEL
  195. GOSUB @MESSAGE
  196. GOSUB @CHKYOU
  197. IF GM>GMPLAY GOTO @GAMEEND
  198. IF GR!=REACHYOU GOTO @MAINYOU
  199. MS$=”○○ アナタカ゛ リーチ! ○○”
  200. BEEP BPREACH
  201. GOSUB @MESSAGE
  202. GOTO @MAINCPU
  203. ’PLAYERノ ハ゛ン
  204. @MAINYOU
  205. TURN=TURNYOU
  206. GR=REACHNO
  207. GOSUB @YOUTURN
  208. MESWAIT=100
  209. MS$=”アナタハ ”+STR$(SELN)+”ヲ ケシマシタ。”
  210. BEEP BPYOUSEL
  211. GOSUB @MESSAGE
  212. GOSUB @CHKCPU
  213. IF GM>GMPLAY GOTO @GAMEEND
  214. IF GR!=REACHCPU GOTO @MAINLOOP
  215. MS$=”○○ CPUカ゛ リーチ! ○○”
  216. BEEP BPREACH
  217. GOSUB @MESSAGE
  218. GOTO @MAINCPU
  219. ’*** ケ゛ーム シュウリョウ ***
  220. @GAMEEND
  221. ’ケッカ ヒョウシ゛
  222. BGMSTOP
  223. GOSUB @PRTCPUN
  224. IF GM==GMYOUWIN THEN GOSUB @ENDWIN
  225. IF GM==GMCPUWIN THEN GOSUB @ENDLOSE
  226. IF GM==GMDRAW THEN GOSUB @ENDDRAW
  227. ’リフ゜レイ?
  228. MESDLG=TRUE
  229. MS$=”モウ1カイ ヤル?”
  230. GOSUB @MESSAGE
  231. IF MESRET==TRUE GOTO @RESTART
  232. ’シュウリョウ ショリ
  233. @ENDINIT
  234. BGMSTOP
  235. CLS
  236. GPAGE 0:GCLS 0
  237. GPAGE 1:GCLS 0
  238. END
  239. ’PLAYERノ カチ
  240. @ENDWIN
  241. BGMPLAY BGMWIN
  242. WINYOU=WINYOU+1
  243. GOSUB @YOUTABLE
  244. GOSUB @PRTYOUN
  245. MS$=”★★★ アナタノ カチ! ★★★”
  246. MESWAIT=300
  247. GOSUB @MESSAGE
  248. TURN0=TURNYOU
  249. RETURN
  250. ’CPUノ カチ
  251. @ENDLOSE
  252. BGMPLAY BGMLOSE
  253. WINCPU=WINCPU+1
  254. GOSUB @CPUTABLE
  255. GOSUB @PRTCPUN
  256. MS$=”★★★ CPUノ カチ! ★★★”
  257. MESWAIT=300
  258. GOSUB @MESSAGE
  259. TURN0=TURNCPU
  260. RETURN
  261. ’ヒキワケ
  262. @ENDDRAW
  263. BGMPLAY BGMDRAW
  264. MS$=”○○○ ヒキワケ ○○○”
  265. MESWAIT=300
  266. GOSUB @MESSAGE
  267. RETURN
  268. ’===== サフ゛ルーチン =====
  269. ’*** タイトル ヒョウシ゛ ***
  270. @PRTTITLE
  271. GPAGE 0
  272. GFILL 0,0,255,20,COLTITBG
  273. GCOLOR COLTITLE
  274. T$=”○X REACH GAME X○”
  275. TY=4
  276. GOSUB @PRTCHR2X
  277. RETURN
  278. ’*** テ゛モ ヒョウシ゛ ***
  279. @PRTDEMO
  280. GCOLOR COLDEMO
  281. T$=”○セツメイ テ゛モ チュウ○”
  282. TY=160
  283. GOSUB @PRTCHR2X
  284. T$=”タッチテ゛ スキッフ゜”
  285. TY=178
  286. GOSUB @PRTCHR2X
  287. RETURN
  288. ’*** テ゛モ ショウキョ ***
  289. @ERDEMO
  290. GPAGE 0
  291. GFILL 0,160,255,194,0
  292. RETURN
  293. ’2ハ゛イモシ゛ ヒョウシ゛ サフ゛
  294. @PRTCHR2X
  295. GPAGE 0
  296. XO=128-LEN(T$)*8
  297. FOR I=0 TO LEN(T$)-1
  298. GPUTCHR XO+I*16+1,TY,”BGF0”,ASC(MID$(T$,I,1)),0,2
  299. NEXT I
  300. RETURN
  301. ’*** PLAYERマス ショキセッテイ ***
  302. @YOUINI
  303. N=1
  304. FOR X=0 TO 4
  305. FOR Y=0 TO 4
  306. YOUN(X,Y)=N
  307. N=N+1
  308. NEXT Y
  309. NEXT X
  310. FOR N=1 TO 100
  311. X=RND(5):Y=RND(5)
  312. I=RND(5):J=RND(5)
  313. Z=YOUN(X,Y)
  314. YOUN(X,Y)=YOUN(I,J)
  315. YOUN(I,J)=Z
  316. NEXT N
  317. RETURN
  318. ’*** CPUマス ショキセッテイ ***
  319. @CPUINI
  320. N=1
  321. FOR X=0 TO 4
  322. FOR Y=0 TO 4
  323. CPUN(X,Y)=N
  324. N=N+1
  325. NEXT Y
  326. NEXT X
  327. FOR N=1 TO 100
  328. X=RND(5):Y=RND(5)
  329. I=RND(5):J=RND(5)
  330. Z=CPUN(X,Y)
  331. CPUN(X,Y)=CPUN(I,J)
  332. CPUN(I,J)=Z
  333. NEXT N
  334. RETURN
  335. ’*** PLAYERノ ハ゛ン ***
  336. @YOUTURN
  337. FOR X=0 TO 4
  338. FOR Y=0 TO 4
  339. THKN(X,Y)=YOUN(X,Y)
  340. NEXT Y
  341. NEXT X
  342. ON GM==GMDEMO GOSUB @YOUTHK,@AUTOTHK
  343. YOUN(EX,EY)=MARKER
  344. GOSUB @PRTYOUN
  345. FOR Y=0 TO 4
  346. FOR X=0 TO 4
  347. IF CPUN(X,Y)==SELN THEN SX=X:SY=Y:X=4:Y=4
  348. NEXT X
  349. NEXT Y
  350. CPUN(SX,SY)=MARKSEL
  351. IF (GM==GMDEMO OR DM==TRUE) THEN GOSUB @PRTCPUN
  352. RETURN
  353. ’*** PLAYER スウシ゛ センタク ***
  354. @YOUTHK
  355. MESWAIT=0
  356. MS$=”★ケシタイ スウシ゛ヲ タッチシテ クタ゛サイ。”
  357. GOSUB @MESSAGE
  358. @TCHLOOP
  359. IF TCHST==FALSE GOTO @TCHLOOP
  360. EX=FLOOR((TCHX-YOUX*8)/SELWX)
  361. EY=FLOOR((TCHY-YOUY*8)/SELWY)
  362. IF (EX<0 OR EX>4) GOTO @TCHLOOP
  363. IF (EY<0 OR EY>4) GOTO @TCHLOOP
  364. SELN=THKN(EX,EY)
  365. IF (SELN==MARKER OR SELN==MARKSEL) GOTO @TCHLOOP
  366. RETURN
  367. ’*** CPUノ ハ゛ン ***
  368. @CPUTURN
  369. FOR X=0 TO 4
  370. FOR Y=0 TO 4
  371. THKN(X,Y)=CPUN(X,Y)
  372. NEXT Y
  373. NEXT X
  374. GOSUB @AUTOTHK
  375. CPUN(EX,EY)=MARKER
  376. IF (GM==GMDEMO OR DM==TRUE) THEN GOSUB @PRTCPUN
  377. FOR Y=0 TO 4
  378. FOR X=0 TO 4
  379. IF YOUN(X,Y)==SELN THEN SX=X:SY=Y:X=4:Y=4
  380. NEXT X
  381. NEXT Y
  382. YOUN(SX,SY)=MARKSEL
  383. GOSUB @PRTYOUN
  384. RETURN
  385. ’*** シコウ ルーチン ***
  386. @AUTOTHK
  387. ’オモミ リセット
  388. FOR Y=0 TO 4
  389. FOR X=0 TO 4
  390. THKI(X,Y)=0
  391. NEXT X
  392. NEXT Y
  393. ’オモミ ケイサン ヨコ
  394. FOR Y=0 TO 4
  395. LINEC=0
  396. IF Y!=2 THEN LINEC=1
  397. FOR X=0 TO 4
  398. IF THKN(X,Y)==MARKSEL THEN LINEC=LINEC+3
  399. IF THKN(X,Y)==MARKER THEN LINEC=-1:X=4
  400. NEXT X
  401. FOR X=0 TO 4
  402. THKI(X,Y)=THKI(X,Y)+LINEC
  403. NEXT X
  404. NEXT Y
  405. ’オモミ ケイサン タテ
  406. FOR X=0 TO 4
  407. LINEC=0
  408. IF X!=2 THEN LINEC=1
  409. FOR Y=0 TO 4
  410. IF THKN(X,Y)==MARKSEL THEN LINEC=LINEC+3
  411. IF THKN(X,Y)==MARKER THEN LINEC=-1:Y=4
  412. NEXT Y
  413. FOR Y=0 TO 4
  414. THKI(X,Y)=THKI(X,Y)+LINEC
  415. NEXT Y
  416. NEXT X
  417. ’オモミ ケイサン ナナメ1
  418. LINEC=4
  419. FOR XY=0 TO 4
  420. IF THKN(XY,XY)==MARKSEL THEN LINEC=LINEC+3
  421. IF THKN(XY,XY)==MARKER THEN LINEC=-1:XY=4
  422. NEXT XY
  423. FOR XY=0 TO 4
  424. THKI(XY,XY)=THKI(XY,XY)+LINEC
  425. NEXT XY
  426. ’オモミ ケイサン ナナメ2
  427. LINEC=4
  428. FOR XY=0 TO 4
  429. IF THKN(4-XY,XY)==MARKSEL THEN LINEC=LINEC+3
  430. IF THKN(4-XY,XY)==MARKER THEN LINEC=-1:XY=4
  431. NEXT XY
  432. FOR XY=0 TO 4
  433. THKI(4-XY,XY)=THKI(4-XY,XY)+LINEC
  434. NEXT XY
  435. ’オモミ サイショウ マス
  436. IM=100
  437. FOR Y=0 TO 4
  438. FOR X=0 TO 4
  439. IF (THKI(X,Y)<IM AND THKN(X,Y)>0) THEN IM=THKI(X,Y):EX=X:EY=Y
  440. NEXT X
  441. NEXT Y
  442. ’ケス スウシ゛ ケッテイ
  443. SELN=THKN(EX,EY)
  444. RETURN
  445. ’*** CPUマス ヒョウシ゛ ***
  446. @CPUTABLE
  447. COLOR COLTBLTI
  448. LOCATE CPUX,CPUY-1
  449. PRINT ”CPU (”;WINCPU;”ショウ)”
  450. GPAGE 0
  451. FOR Y=0 TO 4
  452. FOR X=0 TO 4
  453. GX=CPUX*8+X*SELWX:GY=CPUY*8+Y*SELWY
  454. GBOX GX,GY,GX+SELWX,GY+SELWY,COLTBLLN
  455. GFILL GX+1,GY+1,GX+SELWX-1,GY+SELWY-1,COLTBLBG
  456. NEXT X
  457. NEXT Y
  458. RETURN
  459. ’*** PLAYERマス ヒョウシ゛ ***
  460. @YOUTABLE
  461. COLOR COLTBLTI
  462. PNLSTR YOUX,YOUY-1,”アナタ (”+STR$(WINYOU)+”ショウ)”
  463. GPAGE 1
  464. FOR Y=0 TO 4
  465. FOR X=0 TO 4
  466. GX=YOUX*8+X*SELWX:GY=YOUY*8+Y*SELWY
  467. GBOX GX,GY,GX+SELWX,GY+SELWY,COLTBLLN
  468. GFILL GX+1,GY+1,GX+SELWX-1,GY+SELWY-1,COLTBLBG
  469. NEXT X
  470. NEXT Y
  471. RETURN
  472. ’*** CPUスウシ゛ ヒョウシ゛ ***
  473. @PRTCPUN
  474. GPAGE 0
  475. FOR Y=0 TO 4
  476. FOR X=0 TO 4
  477. GX=CPUX*8+X*SELWX:GY=CPUY*8+Y*SELWY
  478. GFILL GX+1,GY+1,GX+SELWX-1,GY+SELWY-1,COLTBLBG
  479. NUM=CPUN(X,Y)
  480. IF GM==GMPLAY AND DM==FALSE THEN GOSUB @PRTSEC
  481. IF (GM!=GMPLAY OR DM==TRUE) AND NUM>0 THEN GOSUB @PRTN
  482. IF (GM!=GMPLAY OR DM==TRUE) AND NUM==MARKER THEN GOSUB @PRTER
  483. IF (GM!=GMPLAY OR DM==TRUE) AND NUM==MARKSEL THEN GOSUB @PRTSEL
  484. NEXT X
  485. NEXT Y
  486. RETURN
  487. ’*** PLAYERスウシ゛ ヒョウシ゛ ***
  488. @PRTYOUN
  489. GPAGE 1
  490. FOR Y=0 TO 4
  491. FOR X=0 TO 4
  492. GX=YOUX*8+X*SELWX:GY=YOUY*8+Y*SELWY
  493. GFILL GX+1,GY+1,GX+SELWX-1,GY+SELWY-1,COLTBLBG
  494. NUM=YOUN(X,Y)
  495. IF NUM>0 THEN GOSUB @PRTN
  496. IF NUM==MARKER THEN GOSUB @PRTER
  497. IF NUM==MARKSEL THEN GOSUB @PRTSEL
  498. NEXT X
  499. NEXT Y
  500. RETURN
  501. ’*** スウシ゛ヒョウシ゛ サフ゛ ***
  502. @PRTN
  503. NUM$=STR$(NUM)
  504. ON LEN(NUM$)-1 GOSUB @PRTN1,@PRTN2
  505. RETURN
  506. @PRTN1
  507. N1$=MID$(NUM$,0,1)
  508. GPUTCHR GX+4+8,GY+4,”BGF0”,ASC(N1$),COLTBLN,2
  509. RETURN
  510. @PRTN2
  511. N1$=MID$(NUM$,0,1)
  512. N2$=MID$(NUM$,1,1)
  513. GPUTCHR GX+4,GY+4,”BGF0”,ASC(N1$),COLTBLN,2
  514. GPUTCHR GX+4+16,GY+4,”BGF0”,ASC(N2$),COLTBLN,2
  515. RETURN
  516. @PRTER
  517. GPUTCHR GX+4+8,GY+3,”BGF0”,ASC(”X”),COLTBLER,2
  518. RETURN
  519. @PRTSEL
  520. GPUTCHR GX+4+8,GY+4,”BGF0”,ASC(”○”),COLTBLSL,2
  521. RETURN
  522. @PRTSEC
  523. GPUTCHR GX+4+8,GY+4,”BGF0”,ASC(”?”),COLTBLSC,2
  524. RETURN
  525. ’*** CPUマス ハンテイ ***
  526. @CHKCPU
  527. FOR Y=0 TO 4
  528. FOR X=0 TO 4
  529. THKN(X,Y)=CPUN(X,Y)
  530. NEXT X
  531. NEXT Y
  532. GOSUB @CHKTABLE
  533. IF RC==TRUE THEN GR=REACHCPU
  534. IF (DC==TRUE AND WC==FALSE) THEN GM=GMDRAW
  535. IF WC==TRUE THEN GM=GMCPUWIN
  536. RETURN
  537. ’*** PLAYERマス ハンテイ ***
  538. @CHKYOU
  539. FOR Y=0 TO 4
  540. FOR X=0 TO 4
  541. THKN(X,Y)=YOUN(X,Y)
  542. NEXT X
  543. NEXT Y
  544. GOSUB @CHKTABLE
  545. IF RC==TRUE THEN GR=REACHYOU
  546. IF (DC==TRUE AND WC==FALSE) THEN GM=GMDRAW
  547. IF WC==TRUE THEN GM=GMYOUWIN
  548. RETURN
  549. ’*** マス ハンテイ サフ゛ ***
  550. @CHKTABLE
  551. GR=REACHNO
  552. RC=FALSE:WC=FALSE:DC=FALSE
  553. LN=LINEN(SX,SY)
  554. ’ヨコ ハンテイ
  555. @CHKX
  556. IF (LN AND 1)==0 GOTO @CHKY
  557. CC=0
  558. FOR X=0 TO 4
  559. IF THKN(X,SY)==MARKSEL THEN CC=CC+1
  560. IF THKN(X,SY)==MARKER THEN CC=0:X=4
  561. NEXT X
  562. IF CC==5 THEN WC=TRUE
  563. IF CC==4 THEN RC=TRUE
  564. ’タテ ハンテイ
  565. @CHKY
  566. IF (LN AND 2)==0 GOTO @CHKXY
  567. CC=0
  568. FOR Y=0 TO 4
  569. IF THKN(SX,Y)==MARKSEL THEN CC=CC+1
  570. IF THKN(SX,Y)==MARKER THEN CC=0:Y=4
  571. NEXT Y
  572. IF CC==5 THEN WC=TRUE
  573. IF CC==4 THEN RC=TRUE
  574. ’ナナメ ハンテイ1
  575. @CHKXY
  576. IF (LN AND 4)==0 GOTO @CHKYX
  577. CC=0
  578. FOR XY=0 TO 4
  579. IF THKN(XY,XY)==MARKSEL THEN CC=CC+1
  580. IF THKN(XY,XY)==MARKER THEN CC=0:XY=4
  581. NEXT XY
  582. IF CC==5 THEN WC=TRUE
  583. IF CC==4 THEN RC=TRUE
  584. ’ナナメ ハンテイ2
  585. @CHKYX
  586. IF (LN AND 8)==0 GOTO @CHKEND
  587. CC=0
  588. FOR XY=0 TO 4
  589. IF THKN(4-XY,XY)==MARKSEL THEN CC=CC+1
  590. IF THKN(4-XY,XY)==MARKER THEN CC=0:XY=4
  591. NEXT XY
  592. IF CC==5 THEN WC=TRUE
  593. IF CC==4 THEN RC=TRUE
  594. @CHKEND
  595. ’ト゛ロー?
  596. CN=FALSE
  597. FOR Y=0 TO 4
  598. FOR X=0 TO 4
  599. IF THKN(X,Y)>0 THEN CN=TRUE
  600. NEXT X
  601. NEXT Y
  602. IF CN==FALSE THEN DC=TRUE
  603. RETURN
  604. ’*** メッセーシ゛ ウイント゛ウ ***
  605. @MESSAGE
  606. ’ウイント゛ウ
  607. GPAGE 1
  608. GFILL MESX*8-8,MESY*8-8,(MESX+30)*8+8,(MESY+4)*8+8,COLMESBG
  609. COLOR COLMESFL
  610. PNLSTR MESX-1,MESY-1,”┌──────────────────────────────┐”
  611. FOR Y=0 TO 3
  612. PNLSTR MESX-1,MESY+Y,”│                              │”
  613. NEXT Y
  614. PNLSTR MESX-1,MESY+4,”└──────────────────────────────┘”
  615. ’ウイント゛ウ タイトル
  616. IF MESTIT$==”” GOTO @MESTITEN
  617. XO=FLOOR(14-LEN(MESTIT$)/2)
  618. PNLSTR MESX+XO,MESY-1,”[”+MESTIT$+”]”
  619. @MESTITEN
  620. ’メッセーシ゛ キ゛ョウフ゛ンカイ
  621. FOR I=0 TO 3
  622. MES$(I)=””
  623. NEXT I
  624. FOR C=0 TO LEN(MS$)-1
  625. MN=FLOOR(C/30)
  626. MES$(MN)=MES$(MN)+MID$(MS$,C,1)
  627. NEXT C
  628. ’メッセーシ゛ ヒョウシ゛
  629. XO=0
  630. IF MESDLG==TRUE THEN XO=FLOOR(15-LEN(MES$(0))/2)
  631. COLOR COLMES
  632. FOR Y=0 TO 3
  633. PNLSTR MESX+XO,MESY+Y,MES$(Y)
  634. NEXT Y
  635. ’タ゛イアロク゛/ワンタッチ/ウェイト
  636. IF MESDLG==TRUE THEN GOSUB @MESDLG:GOTO @MESEND
  637. IF MESTCH==TRUE THEN GOSUB @MESTCH:GOTO @MESEND
  638. VSYNC MESWAIT
  639. @MESEND
  640. RETURN
  641. ’*** メッセーシ゛ タ゛イアロク゛ ***
  642. @MESDLG
  643. B1$=”ハイ”:BW1=LEN(B1$)+2
  644. BX1=MESX+8:BY1=MESY+1
  645. B2$=”イイエ”:BW2=LEN(B1$)+2
  646. BX2=MESX+17:BY2=MESY+1
  647. PNLSTR BX1,BY1,”┌──┐”
  648. PNLSTR BX1,BY1+1,”│”+B1$+”│”
  649. PNLSTR BX1,BY1+2,”└──┘”
  650. PNLSTR BX2,BY2,”┌───┐”
  651. PNLSTR BX2,BY2+1,”│”+B2$+”│”
  652. PNLSTR BX2,BY2+2,”└───┘”
  653. ’ホ゛タン タッチ マチ
  654. @MESDLGLP
  655. IF TCHST==FALSE GOTO @MESDLGLP
  656. TX=FLOOR(TCHX/8):TY=FLOOR(TCHY/8)
  657. MESBTN=FALSE
  658. IF BX1<=TX AND TX<=BX1+BW1 THEN MESBTN=TRUE:MESRET=TRUE
  659. IF BX2<=TX AND TX<=BX2+BW2 THEN MESBTN=TRUE:MESRET=FALSE
  660. IF MESBTN==FALSE GOTO @MESDLGLP
  661. BEEP BPYOUSEL
  662. RETURN
  663. ’*** メッセーシ゛ ワンタッチ マチ ***
  664. @MESTCH
  665. MESRET=FALSE
  666. TIME0=MAINCNTL
  667. @MESTCHLP
  668. TIME1=MAINCNTL-TIME0
  669. IF (TCHST==FALSE AND TIME1<MESTIME) GOTO @MESTCHLP
  670. IF TCHST==TRUE THEN MESRET=TRUE
  671. RETURN

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

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

  • 名無しさん : 面白いですね (2011/12/02 (金) 02:16:57)
  • shiro : YouTubeにプレイ動画を投稿したので、こちらも追加しました。 (2011/12/07 (水) 19:00:19)
  • shiro : プログラムリストにいくつか打ち間違いがあったので修正しました。すみませんでした。 (2011/12/13 (火) 01:15:39)
  • 初心者 : たまにCPUが”-1”を選択するときがあるんですが、これは仕様ですか? (2012/01/30 (月) 14:49:36)
  • shiro : 「-1」を選択してしまうのはおかしいですね。確認してみます。 (2012/01/31 (火) 11:02:12)
  • shiro : 533行目の重み計算の初期値を増やしてみました。これで試してみてください。>初心者さん (2012/02/01 (水) 11:24:24)
  • shiro : 533行目の重み計算の初期値を増やしてみました。これで試してみてください。>初心者さん (2012/02/01 (水) 13:14:33)
  • 初心者 : ありがとうございました。これからやってみます。(状況を思い出してみると勝敗が”DRAW”だったような…あれから何回かチャレンジしても”-1”がでないのは”DRAW”にもっていけないからかな…) (2012/02/02 (木) 16:37:46)
  • 初心者 : おもしろいので、3人 (2012/02/02 (木) 16:40:20)
  • 初心者 : ↑の続き…で机上でやってみたら、終盤にリーチの嵐で集中砲火にあいました。もしかして2人専用かな? (2012/02/02 (木) 16:42:57)
  • shiro : 基本的に2人でやるゲームです。中学時代によく友達と対戦したものでした。 (2012/02/03 (金) 00:22:35)
  • shiro : ニコニコ動画をプレーヤー表示にしました。 (2012/02/16 (木) 22:26:07)
  • shiro : mkII用のQRコードを載せました。 (2012/03/14 (水) 17:18:20)
  • ウイング : 824・・・ mk (2012/03/15 (木) 16:12:48)
  • 名無しさん : ↑↑qrコード出てない・・・ (2012/03/15 (木) 19:55:03)
  • ウイング : これはQRないと・・・長い・・・ (2012/03/15 (木) 19:57:28)
  • shiro : 私が試した限りではQRコードはちゃんと見えているのですが、名無しさん、ウイングさんはどんな環境でこのページを見ていますか? (2012/03/16 (金) 03:23:21)
  • orirakkusu : 3DSでもちゃんと見えてますよー。 (2012/03/16 (金) 09:04:02)
  • ウイング : PCです。ちなみにmkⅡ持ってないのでQRはよくわかりません (2012/03/16 (金) 15:28:01)
  • 名無しさん : ↑↑↑Windows XPです。 (2012/03/16 (金) 18:25:37)
  • shiro : QRコードを表で並べると、IE8で見えないようなので、1枚の合成画像にしました。 (2012/03/17 (土) 00:08:28)
  • 名無しさん : shiroさん、お疲れ様です (2012/03/17 (土) 00:14:20)
  • プチコンまとめWiki管理人 : IE8以前での画像表示不具合を修正しました。ご迷惑をおかけしました。詳しくは簡素ブロックくずしのページにコメントを残しました。 (2012/03/17 (土) 00:54:26)
  • shiro : プチコンmkII Ver2.1を使って再保存して、QRコードの枚数を減らしました。 (2012/05/02 (水) 13:03:44)
  • 名無しさん : 世界一イラつきゲー (2012/08/27 (月) 09:35:39)