○×ゲーム by Toshiya

再生

 「○×ゲーム」または「三目並べ」といえば、知らない人はいないだろう。このプログラムは、○×ゲームを中心にプチコンの基本機能を一通りテストするように作られている。
 実行後、Aボタンで下画面の操作コンソールが起動。右下の各アイコンをタッチして○×ゲーム、音楽再生、カラー表示とそれぞれの機能テストにアクセスできるぞ。
 右下スミのバックアイコンまたはXボタンで操作コンソールが閉じ、Yボタンでプログラム本体を終了になる。
 このプログラムの作者は偶然スマイルブームのご近所さん。わざわざ本社までやってきてアツい思いとともにプログラムを送信してくれたぞ。

私が作りました

Toshiya

Toshiyaです。最初にとかっかりとして使えるようなものを作りました。シンプルなプログラムですのでBASICを知らない方に、ご参考になると幸いです。


 CHECK POiNT 

博士
○×ゲームというよりは、プチコンの機能デモというべきじゃな。これはこれでマイコン世代には懐かしい香りじゃ。

神崎
(会社に持ってくるためにあわててゲーム要素を足したって言ってたけど、これはヒミツのほうがいいのかな……)

ワンパク
つまりヨォ、上画面の表示もただのカザリってわけじゃねえのか?

インテリ
もちろん単に決め打ちの文字列もあるけど、タッチペンの反応やシステム変数の表示のテストにもなっているんだよ。

博士
読みやすさを重視した素直なプログラムじゃから、BASIC初心者はこれをたたき台に色々付け加えてみるのもいいかもしれんのう。

プログラムリスト

  1. ’==========================
  2. ’==
  3. ’==  2011/03/09
  4. ’==  VER   1.00
  5. ’==     Toshiya
  6. ’==
  7. ’==========================
  8. CLEAR
  9. GOTO @INIT
  10. ’==========================
  11. @INDATA
  12. DIM MBDDAT(10)
  13. MBDDAT(0)=0
  14. MBDDAT(1)=0
  15. MBDDAT(2)=0
  16. MBDDAT(3)=0
  17. MBDDAT(4)=0
  18. MBDDAT(5)=0
  19. MBDDAT(6)=0
  20. MBDDAT(7)=0
  21. MBDDAT(8)=0
  22. MBDDAT(9)=0
  23. RETURN
  24. ’==========================
  25. ’==========================
  26. @MUSIC
  27. IF BGMCHK()==TRUE  THEN BGME=1:BGMSTOP
  28. IF BGME==1 THEN GOTO @MUSICE
  29. IF BGMCHK()==FALSE THEN BGMPLAY 21
  30. @MUSICE
  31. BGME=0
  32. GOSUB @WAIT
  33. RETURN
  34. ’==========================
  35. ’==========================
  36. @PEEP
  37. BEEP 2
  38. RETURN
  39. ’==========================
  40. ’==========================
  41. @WAIT
  42. TMREAD(TIME$),HH,MM,SS
  43. @WAITS
  44. TMREAD(TIME$),HH,MM,CC
  45. IF (SS+2)!=CC THEN GOTO @WAITS
  46. RETURN
  47. ’==========================
  48. ’==========================
  49. REM メニュ-ライン
  50. @MENULINE
  51. GOSUB @PEEP
  52. LOCATE 0 ,0 :PRINT”┌”
  53. LOCATE 31,0 :PRINT”┐”
  54. LOCATE 0 ,21:PRINT”└”
  55. LOCATE 31,21:PRINT”┘”
  56. FOR I=1 TO 30 STEP 1
  57. LOCATE I,0 :PRINT ”─”
  58. LOCATE I,21:PRINT ”─”
  59. NEXT
  60. FOR I=1 TO 20 STEP 1
  61. LOCATE 0 ,I:PRINT ”│”
  62. LOCATE 31,I:PRINT ”│”
  63. NEXT
  64. LOCATE 1 ,13:PRINT”┌”
  65. LOCATE 17,13:PRINT”┐”
  66. LOCATE 1 ,20:PRINT”└”
  67. LOCATE 17,20:PRINT”┘”
  68. FOR I=2 TO 16 STEP 1
  69. LOCATE I,13:PRINT ”─”
  70. LOCATE I,20:PRINT ”─”
  71. NEXT
  72. FOR I=14 TO 19 STEP 1
  73. LOCATE 1 ,I:PRINT ”│”
  74. LOCATE 17,I:PRINT ”│”
  75. NEXT
  76. RETURN
  77. ’==========================
  78. ’==========================
  79. REM メニュ-
  80. @MENU
  81. LOCATE 4,14:PRINT ”GAME”
  82. LOCATE 4,15:PRINT ””
  83. LOCATE 4,16:PRINT ””
  84. LOCATE 4,17:PRINT ”MUSIC”
  85. LOCATE 4,18:PRINT ”BEEP”
  86. LOCATE 4,19:PRINT ”COLOR LINE”
  87. LOCATE 2,14:PRINT ”Й”
  88. LOCATE 2,17:PRINT ”♪”
  89. LOCATE 2,18:PRINT ”М”
  90. LOCATE 2,19:PRINT ”╂”
  91. RETURN
  92. ’==========================
  93. ’==========================
  94. REM カラ-
  95. @CLINE
  96. GOSUB @PEEP
  97. GPAGE 1
  98. FOR I=0 TO 255 STEP 1
  99. GLINE I,0,I,191,I
  100. NEXT
  101. @LOOP4
  102. INBTN=ICONCHK()
  103. IF INBTN==BGMBTN THEN GOSUB @MUSIC
  104. IF INBTN==RETBTN THEN GOTO @LAST
  105. INKEY=BUTTON()
  106. IF INKEY==XBTN THEN GOTO @LOOPE4
  107. IF TRUE==TCHST THEN GOSUB @COLNUM
  108. GOTO @LOOP4
  109. @LOOPE4
  110. GOSUB @WAIT
  111. GCLS
  112. RETURN
  113. @COLNUM
  114. LOCATE 30,1:PRINT ” ”
  115. LOCATE 30,2:PRINT ” ”
  116. LOCATE 28,1:PRINT TCHX
  117. LOCATE 28,2:PRINT TCHY
  118. RETURN
  119. ’==========================
  120. ’==========================
  121. REM 
  122. @INIT
  123. GOSUB @INDATA
  124. ABTN=16
  125. BBTN=32
  126. XBTN=64
  127. YBTN=128
  128. LBTN=256
  129. RBTN=512
  130. UBTN=1 ’ウエ
  131. SBTN=2 ’シタ
  132. HBTN=4 ’ヒタ゛リ
  133. MBTN=8 ’ミキ゛
  134. PRGBTN=0
  135. BGMBTN=1
  136. SCRBTN=2
  137. RETBTN=3
  138. PENX=0
  139. PENY=0
  140. PENZ=0
  141. CLS
  142. ICONCLR PRGBTN
  143. ICONCLR BGMBTN
  144. ICONCLR SCRBTN
  145. ICONCLR RETBTN
  146. GPAGE 1
  147. GCLS 1
  148. GOSUB @MENULINE
  149. GOSUB @MENU
  150. GOTO @MAIN
  151. ’==========================
  152. ’==========================
  153. REM メインフ゜ロク゛ラム
  154. @MAIN
  155. LOCATE 1,1:PRINT ”Р ” TIME$
  156. LOCATE 1,2:PRINT DATE$
  157. LOCATE 1,3:PRINT ”MEM   ” FREEMEM
  158. LOCATE 1,4:PRINT ”SYSVERSION ” VERSION
  159. LOCATE 1,5:PRINT ”PGRVERSION 1.00”
  160. LOCATE 23,1:PRINT ”TCHФ”
  161. LOCATE 23,2:PRINT ”TCHХ”
  162. LOCATE 23,4:PRINT”PENX ”
  163. LOCATE 23,5:PRINT”PENY ”
  164. LOCATE 9,8:PRINT”DS GAME PROGRAM”
  165. LOCATE 9,9:PRINT”   AND DEVELOPER INFO”
  166. LOCATE 19,18:PRINT”HIT A BUTTAN”
  167. LOCATE 19,20:PRINT”HIT YKEY END”
  168. PNLTYPE ”OFF”
  169. @MAINKEY
  170. INKEY=BUTTON()
  171. IF INKEY==ABTN THEN GOTO @START
  172. IF INKEY==YBTN THEN GOTO @THEEND
  173. GOTO @MAINKEY
  174. ’==========================
  175. ’==========================
  176. REM ヘ゜-シ゛
  177. @START
  178. GPAGE 1
  179. GCOLOR 158
  180. GCLS
  181. ICONSET 0,48
  182. ICONSET 1,51
  183. ICONSET 2,55
  184. ICONSET 3,61
  185. PNLSTR 24,0,”Ф:RETURN”
  186. @LOOP2
  187. FOR I=0 TO 240 STEP 10
  188. GLINE I,10,I+5,10, 30
  189. NEXT I
  190. GLINE 250,10,255,10, 30
  191. FOR J=0 TO 180 STEP 10
  192. GLINE 10,J,10,J+5, 30
  193. NEXT J
  194. GLINE 10,190,10,193, 30
  195. INKEY=BUTTON()
  196. IF INKEY==XBTN THEN GOTO @LAST
  197. INBTN=ICONCHK()
  198. IF INBTN==PRGBTN THEN GOTO @MARUBATU
  199. IF INBTN==BGMBTN THEN GOSUB @MUSIC
  200. IF INBTN==SCRBTN THEN GOSUB @CLINE
  201. IF INBTN==RETBTN THEN GOTO @LAST
  202. GOTO @LOOP2
  203. ’==========================
  204. ’==========================
  205. @MARUBATU
  206. GLINE 100,60,160,60,97
  207. GLINE 100,80,160,80,97
  208. GLINE 120,40,120,100,97
  209. GLINE 140,40,140,100,97
  210. @LOOP3
  211. INBTN=ICONCHK()
  212. IF INBTN==PRGBTN THEN DAMY=0
  213. IF INBTN==BGMBTN THEN GOSUB @MUSIC
  214. IF INBTN==SCRBTN THEN GOSUB @CLINE
  215. IF INBTN==RETBTN THEN GOTO @LAST
  216. IF TRUE==TCHST THEN GOSUB @ONMB
  217. GOTO @LOOP3
  218. @ONMB
  219. IF TCHX>0   THEN PENX=0
  220. IF TCHX>100 THEN PENX=1
  221. IF TCHX>120 THEN PENX=2
  222. IF TCHX>140 THEN PENX=3
  223. IF TCHX>160 THEN PENX=0
  224. IF TCHY>0   THEN PENY=0
  225. IF TCHY>40  THEN PENY=1
  226. IF TCHY>60  THEN PENY=2
  227. IF TCHY>80  THEN PENY=3
  228. IF TCHY>100 THEN PENY=0
  229. IF PENX==0  THEN PENY=0
  230. IF PENY==0  THEN PENX=0
  231. LOCATE 28,4:PRINT PENX
  232. LOCATE 28,5:PRINT PENY
  233. PENZ=O
  234. IF PENY==1 THEN GOTO @IFX1PEN
  235. IF PENY==2 THEN GOTO @IFX2PEN
  236. IF PENY==3 THEN GOTO @IFX3PEN
  237. @IFX1PEN
  238. IF PENX==1 THEN PENZ=1
  239. IF PENX==2 THEN PENZ=2
  240. IF PENX==3 THEN PENZ=3
  241. GOTO @IFENDPEN
  242. @IFX2PEN
  243. IF PENX==1 THEN PENZ=4
  244. IF PENX==2 THEN PENZ=5
  245. IF PENX==3 THEN PENZ=6
  246. GOTO @IFENDPEN
  247. @IFX3PEN
  248. IF PENX==1 THEN PENZ=7
  249. IF PENX==2 THEN PENZ=8
  250. IF PENX==3 THEN PENZ=9
  251. GOTO @IFENDPEN
  252. @IFENDPEN
  253. LOCATE 23,6:PRINT ”PENZ ”PENZ
  254. ’LOCATE 23,7:PRINT ONMBD(PENZ)
  255. IF PENZ==0 THEN GOTO @MBNASI
  256. IF ONMBD(PENZ)>0 THEN GOTO @MBNASI
  257. IF PENZ>0 THEN GOSUB @PEEP
  258. IF ONMBD(0)==0 THEN GOTO @MARU
  259. IF ONMBD(0)==1 THEN GOTO @BATU
  260. @MARU
  261. ONMBD(0)=1
  262. ONMBD(PENZ)=1
  263. IF PENZ==1 THEN GCIRCLE 110,50,8,97
  264. IF PENZ==2 THEN GCIRCLE 130,50,8,97
  265. IF PENZ==3 THEN GCIRCLE 150,50,8,97
  266. IF PENZ==4 THEN GCIRCLE 110,70,8,97
  267. IF PENZ==5 THEN GCIRCLE 130,70,8,97
  268. IF PENZ==6 THEN GCIRCLE 150,70,8,97
  269. IF PENZ==7 THEN GCIRCLE 110,90,8,97
  270. IF PENZ==8 THEN GCIRCLE 130,90,8,97
  271. IF PENZ==9 THEN GCIRCLE 150,90,8,97
  272. GOTO @MBNASI
  273. @BATU
  274. ONMBD(0)=0
  275. ONMBD(PENZ)=2
  276. IF PENZ==1 THEN GLINE 103,43,117,57,97:GLINE 117,43,103,57,97
  277. IF PENZ==2 THEN GLINE 123,43,137,57,97:GLINE 137,43,123,57,97
  278. IF PENZ==3 THEN GLINE 143,43,157,57,97:GLINE 157,43,143,57,97
  279. IF PENZ==4 THEN GLINE 103,63,117,77,97:GLINE 117,63,103,77,97
  280. IF PENZ==5 THEN GLINE 123,63,137,77,97:GLINE 137,63,123,77,97
  281. IF PENZ==6 THEN GLINE 143,63,157,77,97:GLINE 157,63,143,77,97
  282. IF PENZ==7 THEN GLINE 103,83,117,97,97:GLINE 117,83,103,97,97
  283. IF PENZ==8 THEN GLINE 123,83,137,97,97:GLINE 137,83,123,97,97
  284. IF PENZ==9 THEN GLINE 143,83,157,97,97:GLINE 157,83,143,97,97
  285. GOTO @MBNASI
  286. @MBNASI
  287. @MBWIN
  288. IF (ONMBD(5)==0) THEN GOTO @MBWIN1
  289. IF (ONMBD(5)==ONMBD(2))AND(ONMBD(5)==ONMBD(8)) THEN GOTO @MBWIN3
  290. IF (ONMBD(5)==ONMBD(4))AND(ONMBD(5)==ONMBD(6)) THEN GOTO @MBWIN3
  291. IF (ONMBD(5)==ONMBD(1))AND(ONMBD(5)==ONMBD(9)) THEN GOTO @MBWIN3
  292. IF (ONMBD(5)==ONMBD(3))AND(ONMBD(5)==ONMBD(7)) THEN GOTO @MBWIN3
  293. @MBWIN1
  294. IF (ONMBD(1)==0) THEN GOTO @MBWIN2
  295. IF (ONMBD(1)==ONMBD(3))AND(ONMBD(1)==ONMBD(2)) THEN GOTO @MBWIN3
  296. IF (ONMBD(1)==ONMBD(7))AND(ONMBD(1)==ONMBD(4)) THEN GOTO @MBWIN3
  297. @MBWIN2
  298. IF (ONMBD(9)==0) THEN GOTO @MBWIN4
  299. IF (ONMBD(9)==ONMBD(3))AND(ONMBD(9)==ONMBD(6)) THEN GOTO @MBWIN3
  300. IF (ONMBD(9)==ONMBD(7))AND(ONMBD(9)==ONMBD(8)) THEN GOTO @MBWIN3
  301. GOTO @MBWIN4
  302. @MBWIN3
  303. PNLSTR 12,3,”WIN”
  304. GOTO @REMB
  305. @MBWIN4
  306. RETURN
  307. ’==========================
  308. ’==========================
  309. @REMB
  310. @LOOP5
  311. INKEY=BUTTON()
  312. IF INKEY==XBTN THEN GOTO @LAST
  313. INBTN=ICONCHK()
  314. IF INBTN==BGMBTN THEN GOSUB @MUSIC
  315. IF INBTN==RETBTN THEN GOTO @LAST
  316. GOTO @LOOP5
  317. ’==========================
  318. ’==========================
  319. REM ストッフ゜エント゛
  320. @LAST
  321. CLEAR
  322. GCLS
  323. GOTO @INIT
  324. ’==========================
  325. ’==========================
  326. REM シ゛エント゛
  327. @THEEND
  328. CLEAR
  329. GCLS
  330. CLS
  331. END
  332. ’==========================