OXゲームバッチver2.0
以前公開したOXゲームバッチを改修しました。
改良点
・プレイヤーの誤入力対応。
・COMが一手目は必ず四隅のどこかに印を付ける。(その方が後々有利らしいので)
・COMが自分のリーチを判定して勝ちに行く。
・COMがプレイヤーのリーチを判定して邪魔をする。
・あいこ対応。
・他もろもろ
ファイル数がやたら多く(全9ファイル)なった。
ついでにコマンドソースを良い感じに表示する方法を覚えました。
- OXGAME.bat
- PLAYDEC.bat
- PLAYALCHK.bat
- COMDEC1.bat
- COMDEC.bat
- COMALCHK.bat
- PLAYREACH.bat
- COMREACH.bat
- JUDGE.bat
OXGAME.bat
@echo off setlocal setlocal ENABLEDELAYEDEXPANSION rem OXゲームバッチ rem 変数を定義 set COM=AAA set PLAY=AAA set O=AAA set X=AAA set NUM=0 set VAL=0 set VALABC=3 set VAL123=3 set COMVALABC=0 set COMVAL123=AAA set COMALFLG=0 set PLAYALFLG=0 set COMVAL=AAA set PLAYVAL=AAA set JUDGE=0 set A1=- set A2=- set A3=- set B1=- set B2=- set B3=- set C1=- set C2=- set C3=- set A1FLG=0 set A2FLG=0 set A3FLG=0 set B1FLG=0 set B2FLG=0 set B3FLG=0 set C1FLG=0 set C2FLG=0 set C3FLG=0 set SEL1=A1 set SEL2=A2 set SEL3=A3 set SEL4=B1 set SEL5=B2 set SEL6=B3 set SEL7=C1 set SEL8=C2 set SEL9=C3 set COMREACHFLG=0 set PLAYREACHFLG=0 rem 先行/後攻決定 echo OXゲームをするよ! echo 最初に先行・後攻を決めよう! echo コインを投げるよ!表ならあなたが先行ね! echo (ピンッ!)(効果音) set NUM=%RANDOM% set /a VAL=%NUM%%%2 if %VAL% equ 0 ( echo コインは裏でした。 echo あなたは後攻、印はXね! set COM=f set PLAY=s set O=COM set X=PLAY ) else ( echo コインは表でした。 echo あなたは先行、印はOね! set COM=s set PLAY=f set O=PLAY set X=COM ) call :lbla rem ★PLAY先行★ if !PLAY!==f ( rem 1手目(PLAY1) call PLAYDEC.bat call :lbla rem 2手目(COM1) call COMDEC1.bat call :lbla rem 3手目(PLAY2) call PLAYDEC.bat call :lbla rem 4手目(COM2) call PLAYREACH.bat if !PLAYREACHFLG! equ 0 call COMDEC.bat call :lbla call JUDGE.bat if !JUDGE! equ 1 goto endoffile rem 5手目(PLAY3) call PLAYDEC.bat call :lbla call JUDGE.bat if !JUDGE! equ 1 goto endoffile rem 6手目(COM3) call COMREACH.bat if !COMREACHFLG! equ 0 ( call PLAYREACH.bat if !PLAYREACHFLG! equ 0 call COMDEC.bat ) call :lbla call JUDGE.bat if !JUDGE! equ 1 goto endoffile rem 7手目(PLAY4) call PLAYDEC.bat call :lbla call JUDGE.bat if !JUDGE! equ 1 goto endoffile rem 8手目(COM4) call COMREACH.bat if !COMREACHFLG! equ 0 ( call PLAYREACH.bat if !PLAYREACHFLG! equ 0 call COMDEC.bat ) call :lbla call JUDGE.bat if !JUDGE! equ 1 goto endoffile rem 9手目(PLAY5) call PLAYDEC.bat call :lbla call JUDGE.bat if !JUDGE! equ 1 ( goto endoffile ) else ( echo 勝敗はつきませんでした。 echo ゲームを終了します。 goto endoffile ) rem ★COM先行★ ) else if !COM!==f ( rem 1手目(COM1) call COMDEC1.bat call :lbla rem 2手目(PLAY1) call PLAYDEC.bat call :lbla rem 3手目(COM2) call COMDEC.bat call :lbla rem 4手目(PLAY2) call PLAYDEC.bat call :lbla rem 5手目(COM3) call COMREACH.bat if !COMREACHFLG! equ 0 ( call PLAYREACH.bat if !PLAYREACHFLG! equ 0 call COMDEC.bat ) call :lbla call JUDGE.bat if !JUDGE! equ 1 goto endoffile rem 6手目(PLAY3) call PLAYDEC.bat call :lbla call JUDGE.bat if !JUDGE! equ 1 goto endoffile rem 7手目(COM4) call COMREACH.bat if !COMREACHFLG! equ 0 ( call PLAYREACH.bat if !PLAYREACHFLG! equ 0 call COMDEC.bat ) call :lbla call JUDGE.bat if !JUDGE! equ 1 goto endoffile rem 8手目(PLAY4) call PLAYDEC.bat call :lbla call JUDGE.bat if !JUDGE! equ 1 goto endoffile rem 9手目(COM5) call COMDEC.bat call :lbla call JUDGE.bat if !JUDGE! equ 1 ( goto endoffile ) else ( echo 勝敗はつきませんでした。 echo ゲームを終了します。 goto endoffile ) ) :endoffile endlocal pause exit :lbla echo ==== echo ABC echo 1!A1!!B1!!C1! echo 2!A2!!B2!!C2! echo 3!A3!!B3!!C3! echo ====
PLAYDEC.bat
@echo off rem PLAY側選択 if not !A1!==- set SEL1=- if not !A2!==- set SEL2=- if not !A3!==- set SEL3=- if not !B1!==- set SEL4=- if not !B2!==- set SEL5=- if not !B3!==- set SEL6=- if not !C1!==- set SEL7=- if not !C2!==- set SEL8=- if not !C3!==- set SEL9=- :lblc if !PLAY!==f ( echo Oを付ける場所を選んでください。 set /p PLAYVAL=!SEL1!/!SEL2!/!SEL3!/!SEL4!/!SEL5!/!SEL6!/!SEL7!/!SEL8!/!SEL9!を入力してください: call PLAYALCHK.bat if !PLAYALFLG! equ 1 ( echo そこは選択出来ません。選び直してください。 goto lblc ) set !PLAYVAL!=O echo PLAYは!PLAYVAL!にOを書きました。 ) else if !PLAY!==s ( echo Xを付ける場所を選んでください。 set /p PLAYVAL=!SEL1!/!SEL2!/!SEL3!/!SEL4!/!SEL5!/!SEL6!/!SEL7!/!SEL8!/!SEL9!を入力してください: call PLAYALCHK.bat if !PLAYALFLG! equ 1 ( echo そこは選択出来ません。選び直してください。 goto lblc ) set !PLAYVAL!=X echo PLAYは!PLAYVAL!にXを書きました。 )
PLAYALCHK.bat
@echo off rem PLAYの選択済確認 set PLAYALFLG=0 if !PLAYVAL!==A1 ( if !A1FLG! equ 1 ( set PLAYALFLG=1 ) else if !A1FLG! equ 0 ( set A1FLG=1 ) ) else if !PLAYVAL!==A2 ( if !A2FLG! equ 1 ( set PLAYALFLG=1 ) else if !A2FLG! equ 0 ( set A2FLG=1 ) ) else if !PLAYVAL!==A3 ( if !A3FLG! equ 1 ( set PLAYALFLG=1 ) else if !A3FLG! equ 0 ( set A3FLG=1 ) ) else if !PLAYVAL!==B1 ( if !B1FLG! equ 1 ( set PLAYALFLG=1 ) else if !B1FLG! equ 0 ( set B1FLG=1 ) ) else if !PLAYVAL!==B2 ( if !B2FLG! equ 1 ( set PLAYALFLG=1 ) else if !B2FLG! equ 0 ( set B2FLG=1 ) ) else if !PLAYVAL!==B3 ( if !B3FLG! equ 1 ( set PLAYALFLG=1 ) else if !B3FLG! equ 0 ( set B3FLG=1 ) ) else if !PLAYVAL!==C1 ( if !C1FLG! equ 1 ( set PLAYALFLG=1 ) else if !C1FLG! equ 0 ( set C1FLG=1 ) ) else if !PLAYVAL!==C2 ( if !C2FLG! equ 1 ( set PLAYALFLG=1 ) else if !C2FLG! equ 0 ( set C2FLG=1 ) ) else if !PLAYVAL!==C3 ( if !C3FLG! equ 1 ( set PLAYALFLG=1 ) else if !C3FLG! equ 0 ( set C3FLG=1 ) ) else set PLAYALFLG=1
COMDEC1.bat
@echo off rem COM側選択 :lblb set NUM=%RANDOM% set /a VALABC=!NUM!%%2 if !VALABC! equ 0 set COMVALABC=A if !VALABC! equ 1 set COMVALABC=C set NUM=%RANDOM% set /a VAL123=!NUM!%%2 if !VAL123! equ 0 set COMVAL123=1 if !VAL123! equ 1 set COMVAL123=3 set COMVAL=!COMVALABC!!COMVAL123! call COMALCHK.bat if !COMALFLG! equ 1 goto lblb if !COM!==f ( set !COMVAL!=O echo COMは!COMVAL!にOを書きました。 ) else if !COM!==s ( set !COMVAL!=X echo COMは!COMVAL!にXを書きました。 )
COMDEC.bat
@echo off rem COM側選択 :lblb set NUM=%RANDOM% set /a VALABC=!NUM!%%3 if !VALABC! equ 0 set COMVALABC=A if !VALABC! equ 1 set COMVALABC=B if !VALABC! equ 2 set COMVALABC=C set NUM=%RANDOM% set /a VAL123=!NUM!%%3 if !VAL123! equ 0 set COMVAL123=1 if !VAL123! equ 1 set COMVAL123=2 if !VAL123! equ 2 set COMVAL123=3 set COMVAL=!COMVALABC!!COMVAL123! call COMALCHK.bat if !COMALFLG! equ 1 goto lblb if !COM!==f ( set !COMVAL!=O echo COMは!COMVAL!にOを書きました。 ) else if !COM!==s ( set !COMVAL!=X echo COMは!COMVAL!にXを書きました。 )
COMALCHK.bat
@echo off rem COMの選択済確認 set COMALFLG=0 if !COMVAL!==A1 ( if !A1FLG! equ 1 ( set COMALFLG=1 ) else if !A1FLG! equ 0 ( set A1FLG=1 ) ) else if !COMVAL!==A2 ( if !A2FLG! equ 1 ( set COMALFLG=1 ) else if !A2FLG! equ 0 ( set A2FLG=1 ) ) else if !COMVAL!==A3 ( if !A3FLG! equ 1 ( set COMALFLG=1 ) else if !A3FLG! equ 0 ( set A3FLG=1 ) ) else if !COMVAL!==B1 ( if !B1FLG! equ 1 ( set COMALFLG=1 ) else if !B1FLG! equ 0 ( set B1FLG=1 ) ) else if !COMVAL!==B2 ( if !B2FLG! equ 1 ( set COMALFLG=1 ) else if !B2FLG! equ 0 ( set B2FLG=1 ) ) else if !COMVAL!==B3 ( if !B3FLG! equ 1 ( set COMALFLG=1 ) else if !B3FLG! equ 0 ( set B3FLG=1 ) ) else if !COMVAL!==C1 ( if !C1FLG! equ 1 ( set COMALFLG=1 ) else if !C1FLG! equ 0 ( set C1FLG=1 ) ) else if !COMVAL!==C2 ( if !C2FLG! equ 1 ( set COMALFLG=1 ) else if !C2FLG! equ 0 ( set C2FLG=1 ) ) else if !COMVAL!==C3 ( if !C3FLG! equ 1 ( set COMALFLG=1 ) else if !C3FLG! equ 0 ( set C3FLG=1 ) )
PLAYREACH.bat
rem PLAYに対するリーチ判定、邪魔をする set PLAYREACHFLG=0 if !PLAY!==f ( if !A1!==O ( if !B1!==O ( if !C1!==- ( set C1=X set C1FLG=1 echo COMはC1にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A1!==O ( if !B2!==O ( if !C3!==- ( set C3=X set C3FLG=1 echo COMはC3にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A1!==O ( if !A2!==O ( if !A3!==- ( set A3=X set A3FLG=1 echo COMはA3にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A1!==O ( if !C1!==O ( if !B1!==- ( set B1=X set B1FLG=1 echo COMはB1にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A1!==O ( if !C3!==O ( if !B2!==- ( set B2=X set B2FLG=1 echo COMはB2にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A1!==O ( if !A3!==O ( if !A2!==- ( set A2=X set A2FLG=1 echo COMはA2にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A2!==O ( if !B2!==O ( if !C2!==- ( set C2=X set C2FLG=1 echo COMはC2にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A2!==O ( if !C2!==O ( if !B2!==- ( set B2=X set B2FLG=1 echo COMはB2にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A2!==O ( if !A3!==O ( if !A1!==- ( set A1=X set A1FLG=1 echo COMはA1にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A3!==O ( if !B2!==O ( if !C1!==- ( set C1=X set C1FLG=1 echo COMはC1にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A3!==O ( if !C1!==O ( if !B2!==- ( set B2=X set B2FLG=1 echo COMはB2にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A3!==O ( if !B3!==O ( if !C3!==- ( set C3=X set C3FLG=1 echo COMはC3にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A3!==O ( if !C3!==O ( if !B3!==- ( set B3=X set B3FLG=1 echo COMはB3にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B1!==O ( if !B2!==O ( if !B3!==- ( set B3=X set B3FLG=1 echo COMはB3にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B1!==O ( if !B3!==O ( if !B2!==- ( set B2=X set B2FLG=1 echo COMはB2にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B1!==O ( if !C1!==O ( if !A1!==- ( set A1=X set A1FLG=1 echo COMはA1にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B2!==O ( if !B3!==O ( if !B1!==- ( set B1=X set B1FLG=1 echo COMはB1にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B2!==O ( if !C1!==O ( if !A3!==- ( set A3=X set A3FLG=1 echo COMはA3にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B2!==O ( if !C3!==O ( if !A1!==- ( set A1=X set A1FLG=1 echo COMはA1にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B2!==O ( if !C2!==O ( if !A2!==- ( set A2=X set A2FLG=1 echo COMはA2にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B3!==O ( if !C3!==O ( if !A3!==- ( set A3=X set A3FLG=1 echo COMはA3にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !C1!==O ( if !C2!==O ( if !C3!==- ( set C3=X set C3FLG=1 echo COMはC3にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !C1!==O ( if !C3!==O ( if !C2!==- ( set C2=X set C2FLG=1 echo COMはC2にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !C2!==O ( if !C3!==O ( if !C1!==- ( set C1=X set C1FLG=1 echo COMはC1にXを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) ) if !COM!==f ( if !A1!==X ( if !B1!==X ( if !C1!==- ( set C1=O set C1FLG=1 echo COMはC1にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A1!==X ( if !B2!==X ( if !C3!==- ( set C3=O set C3FLG=1 echo COMはC3にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A1!==X ( if !A2!==X ( if !A3!==- ( set A3=O set A3FLG=1 echo COMはA3にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A1!==X ( if !C1!==X ( if !B1!==- ( set B1=O set B1FLG=1 echo COMはB1にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A1!==X ( if !C3!==X ( if !B2!==- ( set B2=O set B2FLG=1 echo COMはB2にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A1!==X ( if !A3!==X ( if !A2!==- ( set A2=O set A2FLG=1 echo COMはA2にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A2!==X ( if !B2!==X ( if !C2!==- ( set C2=O set C2FLG=1 echo COMはC2にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A2!==X ( if !C2!==X ( if !B2!==- ( set B2=O set B2FLG=1 echo COMはB2にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A2!==X ( if !A3!==X ( if !A1!==- ( set A1=O set A1FLG=1 echo COMはA1にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A3!==X ( if !B2!==X ( if !C1!==- ( set C1=O set C1FLG=1 echo COMはC1にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A3!==X ( if !C1!==X ( if !B2!==- ( set B2=O set B2FLG=1 echo COMはB2にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A3!==X ( if !B3!==X ( if !C3!==- ( set C3=O set C3FLG=1 echo COMはC3にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !A3!==X ( if !C3!==X ( if !B3!==- ( set B3=O set B3FLG=1 echo COMはB3にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B1!==X ( if !B2!==X ( if !B3!==- ( set B3=O set B3FLG=1 echo COMはB3にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B1!==X ( if !B3!==X ( if !B2!==- ( set B2=O set B2FLG=1 echo COMはB2にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) goto lbld if !B1!==X ( if !C1!==X ( if !A1!==- ( set A1=O set A1FLG=1 echo COMはA1にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B2!==X ( if !B3!==X ( if !B1!==- ( set B1=O set B1FLG=1 echo COMはB1にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B2!==X ( if !C1!==X ( if !A3!==- ( set A3=O set A3FLG=1 echo COMはA3にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B2!==X ( if !C3!==X ( if !A1!==- ( set A1=O set A1FLG=1 echo COMはA1にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B2!==X ( if !C2!==X ( if !A2!==- ( set A2=O set A2FLG=1 echo COMはA2にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !B3!==X ( if !C3!==X ( if !A3!==- ( set A3=O set A3FLG=1 echo COMはA3にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !C1!==X ( if !C2!==X ( if !C3!==- ( set C3=O set C3FLG=1 echo COMはC3にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !C1!==X ( if !C3!==X ( if !C2!==- ( set C2=O set C2FLG=1 echo COMはC2にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) if !C2!==X ( if !C3!==X ( if !C1!==- ( set C1=O set C1FLG=1 echo COMはC1にOを書きました。 set PLAYREACHFLG=1 goto lbld ) ) ) ) :lbld
COMREACH.bat
rem 自分のリーチ判定、勝ちに行く set COMREACHFLG=0 if !PLAY!==f ( if !A1!==X ( if !B1!==X ( if !C1FLG! equ 0 ( set COMVAL=C1 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !B2!==X ( if !C3FLG! equ 0 ( set COMVAL=C3 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !A2!==X ( if !A3FLG! equ 0 ( set COMVAL=A3 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !C1!==X ( if !B1FLG! equ 0 ( set COMVAL=B1 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !C3!==X ( if !B2FLG! equ 0 ( set COMVAL=B2 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !A3!==X ( if !A2FLG! equ 0 ( set COMVAL=A2 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) ) else if !A2!==X ( if !B2!==X ( if !C2FLG! equ 0 ( set COMVAL=C2 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !C2!==X ( if !B2FLG! equ 0 ( set COMVAL=B2 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !A3!==X ( if !A1FLG! equ 0 ( set COMVAL=A1 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) ) else if !A3!==X ( if !B2!==X ( if !C1FLG! equ 0 ( set COMVAL=C1 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !C1!==X ( if !B2FLG! equ 0 ( set COMVAL=B2 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !B3!==X ( if !C3FLG! equ 0 ( set COMVAL=C3 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !C3!==X ( if !B3FLG! equ 0 ( set COMVAL=B3 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) ) else if !B1!==X ( if !B2!==X ( if !B3FLG! equ 0 ( set COMVAL=B3 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !B3!==X ( if !B2FLG! equ 0 ( set COMVAL=B2 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !C1!==X ( if !A1FLG! equ 0 ( set COMVAL=A1 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) ) else if !B2!==X ( if !B3!==X ( if !B1FLG! equ 0 ( set COMVAL=B1 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !C1!==X ( if !A3FLG! equ 0 ( set COMVAL=A3 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !C3!==X ( if !A1FLG! equ 0 ( set COMVAL=A1 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !C2!==X ( if !A2FLG! equ 0 ( set COMVAL=A2 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) ) else if !B3!==X ( if !C3!==X ( if !A3FLG! equ 0 ( set COMVAL=A3 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) ) else if !C1!==X ( if !C2!==X ( if !C3FLG! equ 0 ( set COMVAL=C3 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) else if !C3!==X ( if !C2FLG! equ 0 ( set COMVAL=C2 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) ) else if !C2!==X ( if !C3!==X ( if !C1FLG! equ 0 ( set COMVAL=C1 set !COMVAL!=X set !COMVAL!FLG=1 echo COMは!COMVAL!にXを書きました。 set COMREACHFLG=1 ) ) ) ) else if !COM!==f ( if !A1!==O ( if !B1!==O ( if !C1FLG! equ 0 ( set COMVAL=C1 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !B2!==O ( if !C3FLG! equ 0 ( set COMVAL=C3 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !A2!==O ( if !A3FLG! equ 0 ( set COMVAL=A3 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !C1!==O ( if !B1FLG! equ 0 ( set COMVAL=B1 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !C3!==O ( if !B2FLG! equ 0 ( set COMVAL=B2 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !A3!==O ( if !A2FLG! equ 0 ( set COMVAL=A2 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) ) else if !A2!==O ( if !B2!==O ( if !C2FLG! equ 0 ( set COMVAL=C2 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !C2!==O ( if !B2FLG! equ 0 ( set COMVAL=B2 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !A3!==O ( if !A1FLG! equ 0 ( set COMVAL=A1 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) ) else if !A3!==O ( if !B2!==O ( if !C1FLG! equ 0 ( set COMVAL=C1 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !C1!==O ( if !B2FLG! equ 0 ( set COMVAL=B2 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !B3!==O ( if !C3FLG! equ 0 ( set COMVAL=C3 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !C3!==O ( if !B3FLG! equ 0 ( set COMVAL=B3 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) ) else if !B1!==O ( if !B2!==O ( if !B3FLG! equ 0 ( set COMVAL=B3 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !B3!==O ( if !B2FLG! equ 0 ( set COMVAL=B2 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !C1!==O ( if !A1FLG! equ 0 ( set COMVAL=A1 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) ) else if !B2!==O ( if !B3!==O ( if !B1FLG! equ 0 ( set COMVAL=B1 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !C1!==O ( if !A3FLG! equ 0 ( set COMVAL=A3 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !C3!==O ( if !A1FLG! equ 0 ( set COMVAL=A1 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !C2!==O ( if !A2FLG! equ 0 ( set COMVAL=A2 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) ) else if !B3!==O ( if !C3!==O ( if !A3FLG! equ 0 ( set COMVAL=A3 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) ) else if !C1!==O ( if !C2!==O ( if !C3FLG! equ 0 ( set COMVAL=C3 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) else if !C3!==O ( if !C2FLG! equ 0 ( set COMVAL=C2 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) ) else if !C2!==O ( if !C3!==O ( if !C1FLG! equ 0 ( set COMVAL=C1 set !COMVAL!=O set !COMVAL!FLG=1 echo COMは!COMVAL!にOを書きました。 set COMREACHFLG=1 ) ) ) )
JUDGE.bat
@ echo off rem 勝敗判定 rem Oの勝ち if !A1!==O ( if !A2!==O ( if !A3!==O ( echo %O%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) if !B1!==O ( if !C1!==O ( echo %O%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) if !B2!==O ( if !C3!==O ( echo %O%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) ) if !B1!==O ( if !B2!==O ( if !B3!==O ( echo %O%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) ) if !C1!==O ( if !C2!==O ( if !C3!==O ( echo %O%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) if !B2!==O ( if !A3!==O ( echo %O%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) ) if !A2!==O ( if !B2!==O ( if !C2!==O ( echo %O%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) ) if !A3!==O ( if !B3!==O ( if !C3!==O ( echo %O%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) ) rem Xの勝ち if !A1!==X ( if !A2!==X ( if !A3!==X ( echo %X%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) if !B1!==X ( if !C1!==X ( echo %X%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) if !B2!==X ( if !C3!==X ( echo %X%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) ) if !B1!==X ( if !B2!==X ( if !B3!==X ( echo %X%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) ) if !C1!==X ( if !C2!==X ( if !C3!==X ( echo %X%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) if !B2!==X ( if !A3!==X ( echo %X%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) ) if !A2!==X ( if !B2!==X ( if !C2!==X ( echo %X%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) ) if !A3!==X ( if !B3!==X ( if !C3!==X ( echo %X%の勝ちです。 echo ゲームを終了します。 set JUDGE=1 ) ) )