在论坛里搜索了一下,只搜到了youxi01编写的一个共享版,运行了一下看是猜大小的。我来发个文曲星版的,大概以前的文曲星上都带有这种猜数字游戏吧,肯定会玩吧。呵呵,不多说了,大家先玩玩,有问题就指出啊!- 更新历史:
- 2008.11.28 经wxcute兄提示,颜色换了个不晃眼的,右栏提示合为一行。
- 2008.11.29 对输入进行了更细致的判断,可能有些繁琐,大家有好的代码还望提出!
- 【仍存问题】:若输入四个数字中有重复的,程序运行会出错。解决方法:1.对输入进行判断,若发现重复数字,则提示重新输入。2.重复数字在程序中只算出现一次(现为数字重复几次则提示中相应加几个)。个人认为方法1较好,写了一段代码可是比较繁琐,看大家有没有精简一点的判断是否出现重复数字的代码!
复制代码
- @echo off&setlocal enabledelayedexpansion
- :begin
- color 31
- mode con cols=77 lines=26
- set num=123456789
- for /l %%i in (1 1 50) do (
- set /a num1=!random!%%9+1
- call set num=%%num:!num1!=%%!!num1!
- )
- set str=!num:~,4!
- set /a count=0
- set "ok= "
- :loop
- cls
- set /a times=10-!count!
- if !count! equ 9 (echo 你还有最后一次机会) else echo 你还有!times!次机会
- echo.
- set /p= ╭─────────╮ │已猜数字:<nul&echo.
- set /p= ╭───────┤ 猜数字(文曲星版) ├───────╮ │<nul&set /p=!ok:~,11!<nul 2>nul&echo.
- set /p= │ ╰─────────╯ │ │<nul&echo.
- set /p= │ │ │<nul&set /p=!ok:~11,11!<nul 2>nul&echo.
- set /p= │ 这个游戏想必大家都在文曲星上玩过吧!本程序 │ │<nul&echo.
- set /p= │ │ │<nul&set /p=!ok:~22,11!<nul 2>nul&echo.
- set /p= │ 用批处理实现了此游戏。大家还记得怎么玩吧?简介: │ │<nul&echo.
- set /p= │ │ │<nul&set /p=!ok:~33,11!<nul 2>nul&echo.
- set /p= │ 系统随机生成数字各不相同(不包括0)的四位数,玩家 │ │<nul&echo.
- set /p= │ │ │<nul&set /p=!ok:~44,11!<nul 2>nul&echo.
- set /p= │ 有十次机会来猜测,其中每猜一次提示一次 (A:数对位 │ │<nul&echo.
- set /p= │ │ │<nul&set /p=!ok:~55,11!<nul 2>nul&echo.
- set /p= │ 对,B:数对位错)。如系统生成数为6705,则1375为1A1 │ │<nul&echo.
- set /p= │ │ │<nul&set /p=!ok:~66,11!<nul 2>nul&echo.
- set /p= │ B,6750为2A2B。输入有误不减少剩余次数! │ │<nul&echo.
- set /p= │ │ │<nul&set /p=!ok:~77,11!<nul 2>nul&echo.
- set /p= │ 祝大家玩的愉快,有错误请指出啊! │ │<nul&echo.
- set /p= │ │ │<nul&set /p=!ok:~88,11!<nul 2>nul&echo.
- set /p= │ code by lhjoanna │ │<nul&echo.
- set /p= │ │ │<nul&set /p=!ok:~99,11!<nul 2>nul&echo.
- set /p= ╰─────────────────────────╯ │<nul&echo.
- echo.
- set /a a=0,b=0
- set /p input=请输入一个四位各不相同的四位数:
- for /l %%i in (0 1 3) do (
- set ss=!input:~%%i,1!
- if "!ss!" equ " " echo 输入有空格,请重新输入!&pause>nul&goto loop
- if "!ss!" equ "" echo 输入过短,请重新输入!&pause>nul&goto loop
- if !ss! equ 0 echo 数字不包括0,请重新输入!&pause>nul&goto loop
- if not !ss! gtr 0 echo 包含非法字符,请重新输入!&pause>nul&goto loop
- if not !ss! leq 9 echo 包含非法字符,请重新输入!&pause>nul&goto loop
- )
- set s=!input:~4,1!
- if not "!s!" equ "" echo 输入过长,请重新输入!&pause>nul&goto loop
- for /l %%i in (0 1 3) do (
- set n=!input:~%%i,1!
- set s=!str:~%%i,1!
- if !n! equ !s! ( set /a a+=1 ) else (
- set str_=!str!
- for /l %%j in (0 1 3) do (
- set s_=!str_:~%%j,1!
- if !n! equ !s_! set /a b+=1
- )
- )
- )
- set /a count+=1
- if !input! equ !str! goto reward
- if !count! equ 1 set ok=
- set "ok=!ok!!count!.!input! !a!A!b!B"
- if !count! equ 10 goto punish
- if !count! leq 9 goto loop
- pause
- :reward
- for /l %%i in (1 1 4) do (
- cls&color c1
- ping -n 1 127.1>nul
- cls&color e1
- ping -n 1 127.1>nul
- cls&color 91
- ping -n 1 127.1>nul
- )
- msg %username% 恭喜,你猜中了!你真聪明!
- goto begin
- :punish
- for /l %%i in (1 1 6) do (
- cls&color 71
- ping -n 1 127.1>nul
- cls&color 81
- ping -n 1 127.1>nul
- )
- msg %username% 唉,没机会了,下次吧!!正确答案为!str!
- goto begin
复制代码 嘿,大家玩的愉快哦! |