一个用bat写的扫雷游戏,物喜勿喷

新建文件改名为扫雷.bat即可

代码如下:

rem 转载请说明原作者:bat吧明月嫣然若夕
@echo off
setlocal enabledelayedexpansion
mode con: cols=25 lines=15
title mine clearance
color 3f

set cheat=0
set die=1
set s=0
for /l %%b in (1,1,5) do (
set /a x=1+!random!%%5
set /a y=1+!random!%%5
set bomb%%b=!x!!y!
)

:scans
for /l %%a in (1,1,4) do (
set /a A+=1
for /l %%k in (!A!,1,5) do (
if !bomb%%a!==!bomb%%k! (
    set /a x=1+!random!%%5
    set /a y=1+!random!%%5
    set bomb%%a=!x!!y!
    goto scans
)
)
)

for /l %%x in (1,1,5) do (
for /l %%y in (1,1,5) do (
set x%%xy%%y=?
)
)

:game
if !s!==20 goto win
call :display
call :input

:display
if !cheat!==1 (
    for /l %%f in (1,1,5) do set bombc%%f=!bomb%%f!
) else (
    for /l %%f in (1,1,5) do set bombc%%f=
)
cls
echo.
echo       1 2 3 4 5
echo      ___________
for /l %%d in (1,1,5) do echo   %%d  ^|!x1y%%d!^|!x2y%%d!^|!x3y%%d!^|!x4y%%d!^|!x5y%%d!^|   ^|!bombc%%d!
echo      ~~~~~~~~~~~
echo  text:!text!
echo.
goto :eof

:input
set /p input=(xy):
if /i !input!==command goto command
for /l %%X in (1,1,5) do (
for /l %%Y in (1,1,5) do (
set XY=%%X%%Y
if !input!==!XY! goto ie
)
)
goto game
goto :eof

:ie
set bombs=0
for /l %%b in (1,1,5) do if !input!==!bomb%%b! goto lose
set Y=%input:~1,1%
set /a A=!Y!-1
set /a B=!Y!+1
set X=%input:~0,1%
set /a C=!X!-1
set /a D=!X!+1
for /l %%i in (1,1,5) do if !bomb%%i!==!Y!!C! set /a bombs+=1
for /l %%i in (1,1,5) do if !bomb%%i!==!Y!!D! set /a bombs+=1
for /l %%i in (1,1,5) do if !bomb%%i!==!A!!C! set /a bombs+=1
for /l %%i in (1,1,5) do if !bomb%%i!==!A!!X! set /a bombs+=1
for /l %%i in (1,1,5) do if !bomb%%i!==!A!!D! set /a bombs+=1
for /l %%i in (1,1,5) do if !bomb%%i!==!B!!C! set /a bombs+=1
for /l %%i in (1,1,5) do if !bomb%%i!==!B!!X! set /a bombs+=1
for /l %%i in (1,1,5) do if !bomb%%i!==!B!!D! set /a bombs+=1
set x!X!y%Y%=!bombs!
set /a s+=1
goto game

:lose
cls
set Y=%input:~1,1%
set X=%input:~0,1%
set x!X!y%Y%=*
if !die!==0 goto game
call :display
echo you lose!
echo !input!
pause>nul
exit

:command
cls
echo commands:
echo -----------------------
echo msg [内容]     显示内容
echo cheaton        显示雷位
echo cheatoff       关闭雷位
echo dieon          开启生命
echo dieoff         关闭生命
echo sign [坐标]    标记位置
echo cancel [坐标]  取消标记
echo win            直接获胜
echo back           返回游戏
echo -----------------------
set /p cmdinput=^>^>^>
if /i !cmdinput!==back goto game
if /i !cmdinput!==win goto win
if /i !cmdinput!==cheaton set cheat=1&goto game
if /i !cmdinput!==cheatoff set cheat=0&goto game
if /i !cmdinput!==dieon set die=1&goto game
if /i !cmdinput!==dieoff set die=0&goto game
set aaa=%cmdinput:~0,3%
set bbb=%cmdinput:~4,20%
if /i !aaa!==msg set text=!bbb!&goto game
set aaa=%cmdinput:~0,4%
set bbb=%cmdinput:~5,1%
set ccc=%cmdinput:~6,1%
if /i !aaa!==sign set x!bbb!y%ccc%==P&goto game
set aaa=%cmdinput:~0,6%
set bbb=%cmdinput:~7,1%
set ccc=%cmdinput:~8,1%
if /i !aaa!==cancel set x!bbb!y%ccc%==?&goto game
goto command

:win
cls
call :display
echo you win!
pause>nul
exit

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值