プレイ動画
概要
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





