プレイ動画
概要
CPUと対戦するビンゴゲームです。
起動するとデモ画面が表示され、ゲームのルールが説明されます。下画面にタッチすると、ゲームを開始できます。
上画面にCPUのマス目、下画面に自分のマス目が表示されます。(CPUのマス目は、ゲーム対戦中は隠されていて見えません)
自分のマス目の数字を、1手ずつタッチして「×」にして消していきます。
逆にCPUが選んだ数字は、自分のマス目では「○」になります。
「○」が縦・横・斜めのどこか1列で5個揃えば勝ちです。
どこの列を捨てて「×」で消していくかの戦略が難しく、後述のリーチ宣言ルールによる一発大逆転もあり、頭を使いますが楽しいゲームです。
CPUは結構強いです。どうしても勝てない人は、15行目の「DM=FALSE」を「DM=TRUE」に変えてデバッグモードにして、CPUの打ち方を見ながら研究してください。
リストがかなり長くて打つのが大変なので、デモ画面が必要ない人は92〜195行を削ってください。
ゲームのルール
- 5×5のマス目に1〜25の数字をランダムに並べてスタート。
- 自分が言った数字は「×」となり消える。
- 相手が言った数字は「○」となる。
- 「○」が縦・横・斜めのどこか1列で5個揃えば勝ち。
- 相手が言った数字で「○」が4個並んだ時は「リーチ」と宣言し、相手にもう一度数字を言わせることができる。
おまけ
私が通った中学校で当時流行していた紙と鉛筆のゲームを、BASICで再現しました。
今、ネットで「リーチゲーム」などと検索しても、このゲームの情報が出てきません。
私の中学だけのローカルブームだったのでしょうか?
過去に遊んだ経験がある人がいたら、ぜひコメントをください。
プログラムリスト
'************** '* * '* REACH GAME * '* Ver2 * '* 2011.11.27 * '* by shiro * '* * '************** '*** ショキセッテイ *** CLEAR 'デバッグモード DM=FALSE VISIBLE 1,1,0,0,0,1 PNLTYPE "OFF" CLS GPAGE 0:GCLS 0 GPAGE 1:GCLS 1 BGMSTOP 'マスメ カンレン DIM YOUN(5,5),CPUN(5,5) DIM THKN(5,5),THKI(5,5) DIM LINEN(5,5) 'ナラベラレル レツホウコウ 'bit0:─ bit1:│ 'bit2:\ bit3:/ FOR Y=0 TO 4 FOR X=0 TO 4 READ LINEN(X,Y) NEXT X NEXT Y DATA 7, 3, 3, 3,11 DATA 3, 7, 3,11, 3 DATA 3, 3,15, 3, 3 DATA 3,11, 3, 7, 3 DATA 11, 3, 3, 3, 7 'マーク X,○ MARKER=0 MARKSEL=-1 'ゲーム シンコウ カンリ GMDEMO=0 GMPLAY=1 GMYOUWIN=2 GMCPUWIN=3 GMDRAW=4 REACHNO=0 REACHYOU=1 REACHCPU=2 TURNCPU=0 TURNYOU=NOT TURNCPU TURN0=TURNCPU WINYOU=0:WINCPU=0 'ヒョウジ ザヒョウ YOUX=4:YOUY=3 CPUX=4:CPUY=5 SELWX=38:SELWY=21 MESX=1:MESY=19 'メッセージ DIM MES$(4) MESDLG=FALSE 'カラー COLTITLE=15:COLTITBG=2 COLDEMO=15 COLTBLTI=0 COLTBLLN=6:COLTBLBG=15 COLTBLN=11:COLTBLER=9 COLTBLSL=13:COLTBLSC=11 COLMES=0:COLMESFL=0 COLMESBG=&HEE 'サウンド BPYOUSEL=3:BPCPUSEL=2 BPREACH=5 BGMGAME=8 BGMWIN=4:BGMLOSE=6:BGMDRAW=6 '*** ルール セツメイ デモ *** @DEMO GM=GMDEMO MESTIME=400 MESWAIT=0 GOSUB @PRTTITLE GOSUB @PRTDEMO GOSUB @YOUINI GOSUB @YOUTABLE GOSUB @PRTYOUN GOSUB @CPUINI GOSUB @CPUTABLE GOSUB @PRTCPUN MESTCH=TRUE MESTIT$="ルール セツメイ" MS$="CPUト タイセンスル ビンゴゲーム デス。" GOSUB @MESSAGE IF MESRET==TRUE GOTO @DEMOEND MS$="5x5ノ マスメニ、1-25ノ スウジヲ ナラベテ スタート。" GOSUB @MESSAGE IF MESRET==TRUE GOTO @DEMOEND TURN=TURNYOU GOSUB @YOUTURN MS$="ジブンガ イッタ スウジハ、「X」ニナリ キエル。" GOSUB @MESSAGE IF MESRET==TRUE GOTO @DEMOEND TURN=TURNCPU GOSUB @CPUTURN MS$="アイテガ イッタ スウジハ、「○」ニナル。" GOSUB @MESSAGE IF MESRET==TRUE GOTO @DEMOEND MESTCH=FALSE MS$="" GOSUB @MESSAGE GR=REACHNO @DEMO1LP TURN=NOT TURN IF TURN==TURNYOU THEN GOSUB @YOUTURN:GOSUB @CHKCPU IF GR==REACHCPU GOTO @DEMO1LPE IF TURN==TURNCPU THEN GOSUB @CPUTURN:GOSUB @CHKYOU IF GR==REACHYOU GOTO @DEMO1LPE GOTO @DEMO1LP @DEMO1LPE MESTCH=TRUE MS$="アイテガ イッタ スウジデ、「○」ガ4コ ソロッタラ、「リーチ」ト センゲン。アイテニ モウイチド スウジヲ イワセラレル。" GOSUB @MESSAGE IF MESRET==TRUE GOTO @DEMOEND MESTCH=FALSE MS$="" GOSUB @MESSAGE TURN=NOT TURN GR=REACHNO @DEMO2LP TURN=NOT TURN @DEMO2LP1 IF TURN==TURNYOU THEN GOSUB @YOUTURN:GOSUB @CHKCPU IF GM==GMCPUWIN GOTO @DEMO2LPE IF GR==REACHCPU GOTO @DEMO2LP1 @DEMO2LP2 IF TURN==TURNCPU THEN GOSUB @CPUTURN:GOSUB @CHKYOU IF GM==GMYOUWIN GOTO @DEMO2LPE IF GR==REACHYOU GOTO @DEMO1LP2 GOTO @DEMO2LP @DEMO2LPE GM=GMDEMO MESTCH=TRUE MS$="「○」ガ、タテ・ヨコ・ナナメノ ドコカノレツデ 5コ ソロエバ カチ!" GOSUB @MESSAGE IF MESRET==TRUE GOTO @DEMOEND GM=GMPLAY GOSUB @YOUINI GOSUB @PRTYOUN GOSUB @CPUINI GOSUB @PRTCPUN MS$="ジッサイノ ゲームデハ、CPUノ マスメハ カクサレマス。" GOSUB @MESSAGE GM=GMDEMO GOTO @DEMO @DEMOEND GOSUB @ERDEMO MESTCH=FALSE MESDLG=TRUE MESTIT$="" MS$="ゲームヲ ヤル?" GOSUB @MESSAGE IF MESRET==FALSE GOTO @ENDINIT '*** ゲーム リスタート *** @RESTART MESDLG=FALSE MESTCH=FALSE CLS GPAGE 0:GCLS 0 GPAGE 1:GCLS 0 GOSUB @PRTTITLE GOSUB @CPUTABLE GOSUB @YOUTABLE '*** ゲーム カイシ *** BGMPLAY BGMGAME GM=GMPLAY GOSUB @CPUINI GOSUB @PRTCPUN GOSUB @YOUINI GOSUB @PRTYOUN MESWAIT=100 MS$="○○○ ゲーム カイシ! ○○○" GOSUB @MESSAGE TURN=TURN0 MS$="CPUガ センテ。" IF TURN==TURNYOU THEN MS$="アナタガ センテ。" GOSUB @MESSAGE '*** メイン ループ *** IF TURN==TURNYOU GOTO @MAINYOU @MAINLOOP 'CPUノ バン @MAINCPU TURN=TURNCPU GR=REACHNO GOSUB @CPUTURN MESWAIT=100 MS$="CPUハ "+STR$(SELN)+"ヲ ケシマシタ。" BEEP BPCPUSEL GOSUB @MESSAGE GOSUB @CHKYOU IF GM>GMPLAY GOTO @GAMEEND IF GR!=REACHYOU GOTO @MAINYOU MS$="○○ アナタガ リーチ! ○○" BEEP BPREACH GOSUB @MESSAGE GOTO @MAINCPU 'PLAYERノ バン @MAINYOU TURN=TURNYOU GR=REACHNO GOSUB @YOUTURN MESWAIT=100 MS$="アナタハ "+STR$(SELN)+"ヲ ケシマシタ。" BEEP BPYOUSEL GOSUB @MESSAGE GOSUB @CHKCPU IF GM>GMPLAY GOTO @GAMEEND IF GR!=REACHCPU GOTO @MAINLOOP MS$="○○ CPUガ リーチ! ○○" BEEP BPREACH GOSUB @MESSAGE GOTO @MAINCPU '*** ゲーム シュウリョウ *** @GAMEEND 'ケッカ ヒョウジ BGMSTOP GOSUB @PRTCPUN IF GM==GMYOUWIN THEN GOSUB @ENDWIN IF GM==GMCPUWIN THEN GOSUB @ENDLOSE IF GM==GMDRAW THEN GOSUB @ENDDRAW 'リプレイ? MESDLG=TRUE MS$="モウ1カイ ヤル?" GOSUB @MESSAGE IF MESRET==TRUE GOTO @RESTART 'シュウリョウ ショリ @ENDINIT BGMSTOP CLS GPAGE 0:GCLS 0 GPAGE 1:GCLS 0 END 'PLAYERノ カチ @ENDWIN BGMPLAY BGMWIN WINYOU=WINYOU+1 GOSUB @YOUTABLE GOSUB @PRTYOUN MS$="★★★ アナタノ カチ! ★★★" MESWAIT=300 GOSUB @MESSAGE TURN0=TURNYOU RETURN 'CPUノ カチ @ENDLOSE BGMPLAY BGMLOSE WINCPU=WINCPU+1 GOSUB @CPUTABLE GOSUB @PRTCPUN MS$="★★★ CPUノ カチ! ★★★" MESWAIT=300 GOSUB @MESSAGE TURN0=TURNCPU RETURN 'ヒキワケ @ENDDRAW BGMPLAY BGMDRAW MS$="○○○ ヒキワケ ○○○" MESWAIT=300 GOSUB @MESSAGE RETURN '===== サブルーチン ===== '*** タイトル ヒョウジ *** @PRTTITLE GPAGE 0 GFILL 0,0,255,20,COLTITBG GCOLOR COLTITLE T$="○X REACH GAME X○" TY=4 GOSUB @PRTCHR2X RETURN '*** デモ ヒョウジ *** @PRTDEMO GCOLOR COLDEMO T$="○セツメイ デモ チュウ○" TY=160 GOSUB @PRTCHR2X T$="タッチデ スキップ" TY=178 GOSUB @PRTCHR2X RETURN '*** デモ ショウキョ *** @ERDEMO GPAGE 0 GFILL 0,160,255,194,0 RETURN '2バイモジ ヒョウジ サブ @PRTCHR2X GPAGE 0 XO=128-LEN(T$)*8 FOR I=0 TO LEN(T$)-1 GPUTCHR XO+I*16+1,TY,"BGF0",ASC(MID$(T$,I,1)),0,2 NEXT I RETURN '*** PLAYERマス ショキセッテイ *** @YOUINI N=1 FOR X=0 TO 4 FOR Y=0 TO 4 YOUN(X,Y)=N N=N+1 NEXT Y NEXT X FOR N=1 TO 100 X=RND(5):Y=RND(5) I=RND(5):J=RND(5) Z=YOUN(X,Y) YOUN(X,Y)=YOUN(I,J) YOUN(I,J)=Z NEXT N RETURN '*** CPUマス ショキセッテイ *** @CPUINI N=1 FOR X=0 TO 4 FOR Y=0 TO 4 CPUN(X,Y)=N N=N+1 NEXT Y NEXT X FOR N=1 TO 100 X=RND(5):Y=RND(5) I=RND(5):J=RND(5) Z=CPUN(X,Y) CPUN(X,Y)=CPUN(I,J) CPUN(I,J)=Z NEXT N RETURN '*** PLAYERノ バン *** @YOUTURN FOR X=0 TO 4 FOR Y=0 TO 4 THKN(X,Y)=YOUN(X,Y) NEXT Y NEXT X ON GM==GMDEMO GOSUB @YOUTHK,@AUTOTHK YOUN(EX,EY)=MARKER GOSUB @PRTYOUN FOR Y=0 TO 4 FOR X=0 TO 4 IF CPUN(X,Y)==SELN THEN SX=X:SY=Y:X=4:Y=4 NEXT X NEXT Y CPUN(SX,SY)=MARKSEL IF (GM=GMDEMO OR DM==TRUE) THEN GOSUB @PRTCPUN RETURN '*** PLAYER スウジ センタク *** @YOUTHK MESWAIT=0 M$="★ケシタイ スウジヲ タッチシテ クダサイ。" GOSUB @MESSAGE @TCHLOOP IF TCHST==FALSE GOTO @TCHLOOP EX=FLOOR((TCHX-YOUX*8)/SELWX) EY=FLOOR((TCHY-YOUY*8)/SELWY) IF (EX<0 OR EX>4) GOTO @TCHLOOP IF (EY<0 OR EY>4) GOTO @TCHLOOP SELN=THKN(EX,EY) IF (SELN==MARKER OR SELN=MARKSEL) GOTO @TCHLOOP RETURN '*** CPUノ バン *** @CPUTURN FOR X=0 TO 4 FOR Y=0 TO 4 THKN(X,Y)=CPUN(X,Y) NEXT Y NEXT X GOSUB @AUTOTHK CPUN(EX,EY)=MARKER IF (GM==GMDEMO OR DM=TRUE) THEN GOSUB @PRTCPUN FOR Y=0 TO 4 FOR X=0 TO 4 IF YOUN(X,Y)==SELN THEN SX=X:SY=Y:X=4:Y=4 NEXT X NEXT Y YOUN(SX,SY)=MARKSEL GOSUB @PRTYOUN RETURN '*** シコウ ルーチン *** @AUTOTHK 'オモミ リセット FOR Y=0 TO 4 FOR X=0 TO 4 THKI(X,Y)=0 NEXT X NEXT Y 'オモミ ケイサン ヨコ FOR Y=0 TO 4 LINEC=0 IF Y!=2 THEN LINEC=1 FOR X=0 TO 4 IF THKN(X,Y)==MARKSEL THEN LINEC=LINEC+3 IF THKN(X,Y)==MARKER THEN LINEC=-1:X=4 NEXT X FOR X=0 TO 4 THKI(X,Y)=THKI(X,Y)+LINEC NEXT X NEXT Y 'オモミ ケイサン タテ FOR X=0 TO 4 LINEC=0 IF X!=2 THEN LINEC=1 FOR Y=0 TO 4 IF THKN(X,Y)==MARKSEL THEN LINEC=LINEC+3 IF THKN(X,Y)==MARKER THEN LINEC=-1:Y=4 NEXT Y FOR Y=0 TO 4 THKI(X,Y)=THKI(X,Y)+LINEC NEXT Y NEXT X 'オモミ ケイサン ナナメ1 LINEC=4 FOR XY=0 TO 4 IF THKN(XY,XY)==MARKSEL THEN LINEC=LINEC+3 IF THKN(XY,XY)==MARKER THEN LINEC=-1:XY=4 NEXT XY FOR XY=0 TO 4 THKI(XY,XY)=THKI(XY,XY)+LINEC NEXT XY 'オモミ ケイサン ナナメ2 LINEC=4 FOR XY=0 TO 4 IF THKN(4-XY,XY)==MARKSEL THEN LINEC=LINEC+3 IF THKN(4-XY,XY)==MARKER THEN LINEC=-1:XY=4 NEXT XY FOR XY=0 TO 4 THKI(4-XY,XY)=THKI(4-XY,XY)+LINEC NEXT XY 'オモミ サイショウ マス IM=20 FOR Y=0 TO 4 FOR X=0 TO 4 IF (THKI(X,Y)<IM AND THKN(X,Y)>0) THEN IM=THKI(X,Y):EX=X:EY=Y NEXT X NEXT Y 'ケス スウジ ケッテイ SELN=THKN(EX,EY) RETURN '*** CPUマス ヒョウジ *** @CPUTABLE COLOR COLTBLTI LOCATE CPUX,CPUY-1 PRINT "CPU (";WINCPU;"ショウ)" GPAGE 0 FOR Y=0 TO 4 FOR X=0 TO 4 GX=CPUX*8+X*SELWX:GY=CPUY*8+Y*SELWY GBOX GX,GY,GX+SELWX,GY+SELWY,COLTBLLN GFILL GX+1,GY+1,GX+SELWX-1,GY+SELWY-1,COLTBLBG NEXT X NEXT Y RETURN '*** PLAYERマス ヒョウジ *** @YOUTABLE COLOR COLTBLTI PNLSTR YOUX,YOUY-1,"アナタ ("+STR$(WINYOU)+"ショウ)" GPAGE 1 FOR Y=0 TO 4 FOR X=0 TO 4 GX=YOUX*8+X*SELWX:GY=YOUY*8+Y*SELWY GBOX GX,GY,GX+SELWX,GY+SELWY,COLTBLLN GFILL GX+1,GY+1,GX+SELWX-1,GY+SELWY-1,COLTBLBG NEXT X NEXT Y RETURN '*** CPUスウジ ヒョウジ *** @PRTCPUN GPAGE 0 FOR Y=0 TO 4 FOR X=0 TO 4 GX=CPUX*8+X*SELWX:GY=CPUY*8+Y*SELWY GFILL GX+1,GY+1,GX+SELWX-1,GY+SELWY-1,COLTBLBG NUM=CPUN(X,Y) IF GM==GMPLAY AND DM==FALSE THEN GOSUB @PRTSEC IF (GM!=GMPLAY OR DM==TRUE) AND NUM>0 THEN GOSUB @PRTN IF (GM!=GMPLAY OR DM==TRUE) AND NUM==MARKER THEN GOSUB @PRTER IF (GM!=GMPLAY OR DM==TRUE) AND NUM==MARKSEL THEN GOSUB @PRTSEL NEXT X NEXT Y RETURN '*** PLAYERスウジ ヒョウジ *** @PRTYOUN GPAGE 1 FOR Y=0 TO 4 FOR X=0 TO 4 GX=YOUX*8+X*SELWX:GY=YOUY*8+Y*SELWY GFILL GX+1,GY+1,GX+SELWX-1,GY+SELWY-1,COLTBLBG NUM=YOUN(X,Y) IF NUM>0 THEN GOSUB @PRTN IF NUM==MARKER THEN GOSUB @PRTER IF NUM==MARKSEL THEN GOSUB @PRTSEL NEXT X NEXT Y RETURN '*** スウジヒョウジ サブ *** @PRTN NUM$=STR$(NUM) ON LEN(NUM$)-1 GOSUB @PRTN1,@PRTN2 RETURN @PRTN1 N1$=MID$(NUM$,0,1) GPUTCHR GX+4+8,GY+4,"BGF0",ASC(N1$),COLTBLN,2 RETURN @PRTN2 N1$=MID$(NUM$,0,1) N2$=MID$(NUM$,1,1) GPUTCHR GX+4,GY+4,"BGF0",ASC(N1$),COLTBLN,2 GPUTCHR GX+4+16,GY+4,"BGF0",ASC(N2$),COLTBLN,2 RETURN @PRTER GPUTCHR GX+4+8,GY+3,"BGF0",ASC("X"),COLTBLER,2 RETURN @PRTSEL GPUTCHR GX+4+8,GY+4,"BGF0",ASC("○"),COLTBLSL,2 RETURN @PRTSEC GPUTCHR GX+4+8,GY+4,"BGF0",ASC("?"),COLTBLSC,2 RETURN '*** CPUマス ハンテイ *** @CHKCPU FOR Y=0 TO 4 FOR X=0 TO 4 THKN(X,Y)=CPUN(X,Y) NEXT X NEXT Y GOSUB @CHKTABLE IF RC==TRUE THEN GR=REACHCPU IF (DC==TRUE AND WC==FALSE) THEN GM=GMDRAW IF WC==TRUE THEN GM=GMCPUWIN RETURN '*** PLAYERマス ハンテイ *** @CHKYOU FOR Y=0 TO 4 FOR X=0 TO 4 THKN(X,Y)=YOUN(X,Y) NEXT X NEXT Y GOSUB @CHKTABLE IF RC==TRUE THEN GR=REACHYOU IF (DC==TRUE AND WC==FALSE) THEN GM=GMDRAW IF WC==TRUE THEN GM=GMYOUWIN RETURN '*** マス ハンテイ サブ *** @CHKTABLE GR=REACHNO RC=FALSE:WC=FALSE:DC=FALSE LN=LINEN(SX,SY) 'ヨコ ハンテイ @CHKX IF (LN AND 1)==0 GOTO @CHKY CC=0 FOR X=0 TO 4 IF THKN(X,SY)==MARKSEL THEN CC=CC+1 IF THKN(X,SY)==MARKER THEN CC=0:X=4 NEXT X IF CC==5 THEN WC=TRUE IF CC==4 THEN RC=TRUE 'タテ ハンテイ @CHKY IF (LN AND 2)==0 GOTO @CHKXY CC=0 FOR Y=0 TO 4 IF THKN(SX,Y)==MARKSEL THEN CC=CC+1 IF THKN(SX,Y)==MARKER THEN CC=0:Y=4 NEXT Y IF CC==5 THEN WC=TRUE IF CC==4 THEN RC=TRUE 'ナナメ ハンテイ1 @CHKXY IF (LN AND 4)==0 GOTO @CHKYX CC=0 FOR XY=0 TO 4 IF THKN(XY,XY)==MARKSEL THEN CC=CC+1 IF THKN(XY,XY)==MARKER THEN CC=0:XY=4 NEXT XY IF CC==5 THEN WC=TRUE IF CC==4 THEN RC=TRUE 'ナナメ ハンテイ2 @CHKYX IF (LN AND 8)==0 GOTO @CHKEND CC=0 FOR XY=0 TO 4 IF THKN(4-XY,XY)==MARKSEL THEN CC=CC+1 IF THKN(4-XY,XY)==MARKER THEN CC=0:XY=4 NEXT XY IF CC==5 THEN WC=TRUE IF CC==4 THEN RC=TRUE @CHKEND 'ドロー? CN=FALSE FOR Y=0 TO 4 FOR X=0 TO 4 IF THKN(X,Y)>0 THEN CN=TRUE NEXT X NEXT Y IF CN==FALSE THEN DC=TRUE RETURN '*** メッセージ ウインドウ *** @MESSAGE 'ウインドウ GPAGE 1 GFILL MESX*8-8,MESY*8-8,(MESX+30)*8+8,(MESY+4)*8+8,COLMESBG COLOR COLMESFL PNLSTR MESX-1,MESY-1,"┌──────────────────────────────┐" FOR Y=0 TO 3 PNLSTR MESX-1,MESY+Y,"│ │" NEXT Y PNLSTR MESX-1,MESY+4,"└──────────────────────────────┘" 'ウインドウ タイトル IF MESTIT$=="" GOTO @MESTITEN XO=FLOOR(15-LEN(MESTIT$)/2) PNLSTR MESX+XO,MESY-1,"["+MESTIT$+"]" @MESTITEN 'メッセージ ギョウブンカイ FOR I=0 TO 3 MES$(I)="" NEXT I FOR C=0 TO LEN(MS$)-1 MN=FLOOR(C/30) MES$(MN)=MES$(MN)+MID$(MS$,C,1) NEXT C 'メッセージ ヒョウジ XO=0 IF MESDLG==TRUE THEN XO=FLOOR(15-LEN(MES$(0))/2) COLOR COLMES FOR Y=0 TO 3 PNLSTR MESX+XO,MESY+Y,MES$(Y) NEXT Y 'ダイアログ/ワンタッチ/ウェイト IF MESDLG==TRUE THEN GOSUB @MESDLG:GOTO @MESEND IF MESTCH==TRUE THEN GOSUB @MESTCH:GOTO @MESEND VSYNC MESWAIT @MESEND RETURN '*** メッセージ ダイアログ *** @MESDLG B1$="ハイ":BW1=LEN(B1$)+2 BX1=MESX+8:BY1=MESY+1 B2$="イイエ":BW2=LEN(B1$)+2 BX2=MESX+17:BY2=MESY+1 PNLSTR BX1,BY1,"┌──┐" PNLSTR BX1,BY1+1,"│"+B1$+"│" PNLSTR BX1,BY1+2,"└──┘" PNLSTR BX2,BY2,"┌───┐" PNLSTR BX2,BY2+1,"│"+B2$+"│" PNLSTR BX2,BY2+2,"└───┘" 'ボタン タッチ マチ @MESDLGLP IF TCHST==FALSE GOTO @MESDLGLP TX=FLOOR(TCHX/8):TY=FLOOR(TCHY/8) MESBTN=FALSE IF (BX1<=TX AND TX<=BX1+BW1) THEN MESBTN=TRUE:MESRET=TRUE IF (BX2<=TX AND TX<=BX2+BW2) THEN MESBTN=TRUE:MESRET=FALSE IF MESBTN=FALSE GOTO @MESDLGLP BEEP BPYOUSEL RETURN '*** メッセージ ワンタッチ マチ *** @MESTCH MESRET=FALSE TIME0=MAINCNTL @MESTCHLP TIME1=MAINCNTL-TIME0 IF (TCHST==FALSE AND TIME1<MESTIME) GOTO @MESTCHLP IF TCHST==TRUE THEN MESRET=TRUE RETURN