批处理实现三子棋游戏

@echo off
setlocal enabledelayedexpansion
mode con lines=25
:start
cls
set str=a1a2a3b1b2b3c1c2c3
set slt1=0
for %%i in (a b c) do (
set m%%i=
for %%j in (1 2 3) do (
set m%%j=
set m%%i%%j=
set n%%i%%j=
)
)
set mlr=
set mrl=
set mmlr=a1b2c3
set mmrl=c1b2a3
set win=
for %%i in (a,b,c) do (
for %%j in (1,2,3) do (
set %%i%%j=
)
)
echo ┏━┳━┳━┓
echo ┃1 ┃2 ┃3 ┃
echo ┣━╋━╋━┫
echo ┃4 ┃5 ┃6 ┃
echo ┣━╋━╋━┫
echo ┃7 ┃8 ┃9 ┃
echo ┗━┻━┻━┛
echo 谁先走?(c代表电脑,h代表人)
set /p slt1=
set human=
set cpu=
if %slt1% equ c set human=○&set cpu=●&goto 2
if %slt1% equ C set human=○&set cpu=●&goto 2
set human=●&set cpu=○
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:begin
:1
echo 请您走棋!(输入数字1~9)
set /p slt2=
if !slt2! equ 1 set slt2=a1
if !slt2! equ 2 set slt2=b1
if !slt2! equ 3 set slt2=c1
if !slt2! equ 4 set slt2=a2
if !slt2! equ 5 set slt2=b2
if !slt2! equ 6 set slt2=c2
if !slt2! equ 7 set slt2=a3
if !slt2! equ 8 set slt2=b3
if !slt2! equ 9 set slt2=c3
if "!n%slt2%!" neq "" echo 此处已经有子!&goto 1
set str=!str:%slt2%=!
set mmrl=!mmrl:%slt2%=!
set mmlr=!mmlr:%slt2%=!
set %slt2%=%human%
set m%slt2%=h
set n%slt2%=h
cls
echo ┏━┳━┳━┓
echo ┃%a1%┃%b1%┃%c1%┃
echo ┣━╋━╋━┫
echo ┃%a2%┃%b2%┃%c2%┃
echo ┣━╋━╋━┫
echo ┃%a3%┃%b3%┃%c3%┃
echo ┗━┻━┻━┛
call :judge
if !win! equ h echo 你居然赢了,太让我惊讶了!&pause&goto end
if !win! equ c echo 嘿嘿,不好意思我赢了!&pause&goto end
if "!str!" equ "" echo 平局!&pause&goto end
:2
echo 等待电脑走棋
call :ai
for /l %%i in (1,1,15) do set/p r=^><nul&ping /n 0 127.1>nul
set slt3=!max!
set str=!str:%slt3%=!
set mmrl=!mmrl:%slt3%=!
set mmlr=!mmlr:%slt3%=!
cls
set %slt3%=%cpu%
set m%slt3%=c
set n%slt3%=c
echo ┏━┳━┳━┓
echo ┃%a1%┃%b1%┃%c1%┃
echo ┣━╋━╋━┫
echo ┃%a2%┃%b2%┃%c2%┃
echo ┣━╋━╋━┫
echo ┃%a3%┃%b3%┃%c3%┃
echo ┗━┻━┻━┛
call :judge
if !win! equ h echo 你居然赢了,太让我惊讶了!&pause&goto end
if !win! equ c echo 嘿嘿,不好意思我赢了!&pause&goto end
if "!str!" equ "" echo 平局!&pause&goto end
goto begin
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: :judge这一段是判断胜负的
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:judge
for %%i in (a,b,c) do (
for %%j in (1,2,3) do (
set m%%i=!m%%i!!m%%i%%j!
set m%%j=!m%%j!!m%%i%%j!
)
)
set mlr=!mlr!!ma1!!mb2!!mc3!
set mrl=!mrl!!ma3!!mb2!!mc1!
for %%i in (a,b,c) do (
if !m%%i! equ hhh set win=h
if !m%%i! equ ccc set win=c
)
for /l %%j in (1,1,3) do (
if !m%%j! equ hhh set win=h
if !m%%j! equ ccc set win=c
)
if !mlr! equ hhh set win=h
if !mrl! equ hhh set win=h
if !mlr! equ ccc set win=c
if !mrl! equ ccc set win=c
for %%i in (a,b,c) do (
for %%j in (1,2,3) do (
set m%%i%%j=
)
)
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: :ai这一段是电脑下棋的思路
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:ai
set k=0
for /l %%i in (0,2,16) do (
set/a k+=1
set t!k!=!str:~%%i,2!
if not defined t!k! goto next
)
:next
set/a k=!k!-1
for /l %%i in (1,1,!k!) do (
set score%%i=0
)
for /l %%j in (1,1,!k!) do (
set left%%j=!t%%j:~0,1!
set right%%j=!t%%j:~1,1!
set bb%%j=!left%%j!!right%%j!
if !mlr! equ hh if !bb%%j! equ !mmlr! set score%%j=4
if !mrl! equ hh if !bb%%j! equ !mmrl! set score%%j=4
if !mlr! equ cc if !bb%%j! equ !mmlr! set score%%j=5
if !mrl! equ cc if !bb%%j! equ !mmrl! set score%%j=5
for %%n in (a b c) do (
if !left%%j! equ %%n (
if !left%%j! equ b if !right%%j! equ 2 set score%%j=3
if !m%%n! equ hh if !score%%j! lss 4 set score%%j=4
if !m%%n! equ cc set score%%j=5
)
)
for %%m in (1 2 3) do (
if !right%%j! equ %%m (
if !m%%m! equ hh if !score%%j! lss 4 set score%%j=4
if !m%%m! equ cc set score%%j=5
)
)
)
set max=!t1!
set/a tempk=!k!+1
for /l %%i in (1,1,!tempk!) do (
set qq=%%i+1
for /l %%j in (!qq!,1,!k!) do (
if !score%%i! equ 5 set max=!t%%j!&goto 3
if !score%%i! lss !score%%j! set max=!t%%j!
)
)
:3
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:end
cls
echo 重玩吗?(是/y,否/n)
set /p sss=
if !sss! equ y goto start
if !sss! equ Y goto start

(0)

相关推荐

  • 同人战棋游戏攻略

    霸王英雄传(原吕布),乔峰传(已经下架),英杰传(更新了无数版本),魏国英雄传(增加特技的圣三魏国,其实就是大兔子曹操传),隋唐英雄传(不是瓦岗),风云三国(三国衰哥行)等都是同人游戏.内购频繁,如果 ...

  • 【棋牌游戏】两人军棋之暗棋游戏说明(完整版)

    一直以来有特别多小可爱都想掌握好/军棋/的玩法,可是感觉规则特别多,始终没有办法下手.不要担心,优秀的小编大大掌握了熟练的军棋玩法,并且整理出了一套极其优秀的操作哦~加油~ 操作方法 01 /了解游戏 ...

  • 数独棋游戏的玩法与数独攻略

    数独棋一种游戏娱乐领域的棋类.由棋子.棋盘.棋盒构成,棋盘与棋子相互独立,棋子上的数字由正反两色标明,玩家可以以正面颜色作为数独棋的迷题棋子,反面颜色做为答案棋子,按照游戏规则将带有相应数字的棋子放入 ...

  • "孔明棋“游戏高分攻略

    这个游戏咋一看不觉得什么乐趣,当你发现你离最高目标越来越近的时候,就越想战胜它! 操作方法 01 这个游戏,我目前最好的成绩是剩两颗棋子,周排名有个第一,小开心一下哈. 02 这个游戏是一个圆圈,四个 ...

  • 老K游戏暗棋阁—新手教程

    "老K游戏"新游<暗棋阁>让您将穿越进行到底.分久必合,合久必分,三国巨献,闭月之貌俏貂蝉,绝色美女大小乔,一代枭雄曹孟德,仁义治天下的刘主公等等更多历史人物将会在游戏 ...

  • 十款iPad桌游类游戏推荐

    经典的棋盘类游戏具有永恒的魅力,并且在当今非常火爆的iPad平板电脑上发挥出了全新的特性,而桌游题材甚至要比以往更加吸引人.虽然和朋友们面对面坐在一起玩桌游类游戏是一件非常有趣的事情,但是这种机会现在 ...

  • 2016年游戏销量排行榜:守望先锋2000万,火遍全球

    2016年游戏销量排行榜,守望先锋毫无悬念的登上了冠军宝座,作为少有的网游销售,守望先锋采用了一次付费终生免费的方法,这也使得不光是游戏本身还是开发商都受到了玩家的大力支持,暴雪大作理应居首.而排名第 ...

  • 《RAD陆战队》:回合制的策略游戏

    <RAD Soldiers>在加区App Store放出了一个Beta版本,在上架前官方也放出了游戏的宣传视频,相信精美的画面和极富趣味地战斗系统吸引了包括小编在内的不少玩家的眼球,究竟本 ...

  • 韦诺之战的游戏攻略

    <The Battle for Wesnoth>(韦诺之战)是一款回合制战略角色扮演游戏,这款游戏具有较高的幻想主题和RPG元素.这款游戏最早是在Windows平台上的,后来相继出现在Li ...