技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 429|回复: 0
收起左侧

【批处理】关灯益智游戏

[复制链接]

10

主题

41

帖子

430

积分

用户组: 中·技术宅

UID
3517
精华
0
威望
0 点
宅币
382 个
贡献
7 次
宅之契约
0 份
在线时间
70 小时
注册时间
2018-3-2
发表于 2019-7-21 18:26:12 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x
本帖最后由 套路 于 2019-7-21 18:24 编辑

批处理关灯益智游戏重制版
[mw_shl_code=patch,true]@echo off
title 关灯
setlocal enabledelayedexpansion
set x=5
set y=4
set c1=█
set c2=□
set c3=□
set c4=□
set n=0
:main
set "v0=          "
for /l %%k in (1,1,%x%) do (
set v0=!v0!  %%k)

for /l %%i in (1,1,%y%) do (
for /l %%o in (1,1,%x%) do (
set a%%o%%i=□))

set /a j=x*y
set /a n1=%random% %% %j%
set /a num=%n1%+2
:rd
if %n%==%num% (
set /a n=0
goto ec
) else (
set /a n+=1
set /a rx=!random! %% !x!
set /a ry=!random! %% !y!
set /a rx=!rx!+1
set /a ry=!ry!+1
call set a%rx%%ry%=█
goto rd)

:ec
cls
for /l %%t in (1,1,%y%) do (
for /l %%e in (1,1,%x%) do (
if not !a%%e%%t!==□ (goto nx)))
goto win
:nx
echo 关灯游戏规则:将所有█变成□
for /l %%p in (1,1,%y%) do (
set v%%p=     %%p       
for /l %%u in (1,1,%x%) do (
set "v%%p=!v%%p! !a%%u%%p!
))
for /l %%r in (0,1,%y%) do (
echo !v%%r!)
echo 请输入坐标(都为0进入设置)
set /p gx=列数:
set /p gy=行数:
if %gx%==0 if %gy%==0 (goto st)
set /a gxc=gx+0
set /a gyc=gy+0
if %gx% lss 1 (goto error)
if %gx% gtr %x% (goto error)
if %gy% lss 1 (goto error)
if %gy% gtr %y% (goto error)
if %gx% neq %gxc% (goto error)
if %gy% neq %gyc% (
:error
echo 错误:输入数字错误
pause
cls
goto nx
)
cls
goto cl

:cl
if !a%gx%%gy%!==□ (call set a%gx%%gy%=█) else (call set a%gx%%gy%=□)
set /a cx1=gx+1,cx0=gx-1,cy1=gy+1,cy0=gy-1
if %gx%==1 (
if !a%cx1%%gy%!==□ (call set a%cx1%%gy%=█) else (call set a%cx1%%gy%=□)
)
if %gx%==%x% (
if !a%cx0%%gy%!==□ (call set a%cx0%%gy%=█) else (call set a%cx0%%gy%=□)
)
if %gy%==1 (
if !a%gx%%cy1%!==□ (call set a%gx%%cy1%=█) else (call set a%gx%%cy1%=□)
)
if %gy%==%y% (
if !a%gx%%cy0%!==□ (call set a%gx%%cy0%=█) else (call set a%gx%%cy0%=□)
)

if not %gx%==1 if not %gx%==%x% (
if !a%cx1%%gy%!==□ (call set a%cx1%%gy%=█) else (call set a%cx1%%gy%=□)
if !a%cx0%%gy%!==□ (call set a%cx0%%gy%=█) else (call set a%cx0%%gy%=□)
)
if not %gy%==1 if not %gy%==%y% (
if !a%gx%%cy1%!==□ (call set a%gx%%cy1%=█) else (call set a%gx%%cy1%=□)
if !a%gx%%cy0%!==□ (call set a%gx%%cy0%=█) else (call set a%gx%%cy0%=□)
)
goto ec

:st
cls
echo.
echo.                   游戏难度:
echo.                %c1%.普通[1]
echo.                %c2%.中等[2]
echo.                %c3%.困难[3]
echo.                %c4%.自定义[4]
echo.                ...返回[5]
echo.
set /p gs=请输入数字:
set /a gsc=gs+0
if %gs% lss 1 (goto error2)
if %gs% gtr 5 (goto error2)
if %gs% neq %gsc% (
:error2
echo 错误:输入数字错误
pause
goto st
)
if %gs%==5 (
goto main
)
if %gs%==1 if %c1%==□ (
set c1=█
set c2=□
set c3=□
set c4=□
set x=5
set y=4
goto st
)
if %gs%==2 if %c2%==□ (
set c2=█
set c1=□
set c3=□
set c4=□
set x=7
set y=6
goto st
)
if %gs%==3 if %c3%==□ (
set c3=█
set c1=□
set c2=□
set c4=□
set x=10
set y=10
goto st
)
if %gs%==4 (
set c4=█
set c1=□
set c2=□
set c3=□
echo 请输入自定义行列数
set /p x=列数:
set /p y=行数:
set /a xc=!x!+0
set /a yc=!y!+0
if !x! lss 3 (goto error3)
if !y! lss 3 (goto error3)
if !x! neq !xc! (goto error3)
if !y! neq !yc! (
:error3
echo 错误:输入数字错误[注:最小不能小于3]
pause
set x=5
set y=4
cls
goto st
)
goto st
)
goto st

:win
echo.
echo.
echo.
echo                 你赢了
pause
goto main[/mw_shl_code]
2019-07-21-2.png
...自定义列数大于10坐标数就对不准...不过也不会也没有人设置怎么高折磨自己吧。
游戏规则:点击一个方块,自身和附近方块会变成另一种颜色,当所有方块都为□时游戏胜利。
例如点击下方中间方块,如图变化。
□ □ □        □ █ □
□ █ □  --→  █ □ █
□ □ □        □ █ □
可惜bat没有自定义GUI,不然可以实现点击方块更加还原了(其实时懒得换一个语言)
游戏搬运于mc服务器hypixel的某个角落:
2019-07-21-1.png

本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2019-12-13 02:44 , Processed in 0.090515 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表