返回列表 发帖

[游戏娱乐] Brain Memory Challenge,挑战你脑袋的记忆力

代码有点长,需要4个外部文件(2个wav 2个exe),所以建议大家直接下载压缩包

这次这个版本,亮点在于滚动文字动画和颜色效果,个人感觉很赞的说~ 就是cls有点多,有点闪~

代码:
@echo off
set user=%username%
title Brain Memory Challenge
setlocal enabledelayedexpansion
mode con cols=70 lines=18
set anim=1
set sound=1
call :resetani
call :initintro
call :aniintro
call :shinenormal
echo.
echo      Are you ready? Press any key to continue.
pause>nul
:menu
call :resetani
call :initmenu
if "!anim!"=="1" (call :ani) else (call :static)
:menu2
call :static
set /p choice=Choice:
if "%choice%"=="1" goto playgame
if "%choice%"=="2" goto settings
if "%choice%"=="3" goto help
if "%choice%"=="4" goto about
if "%choice%"=="5" start "" "http://brainmemchallenge.blogspot.com/"&goto menu2
call :shinewrong
goto menu2
:playgame
call :initgame
:playgame2
set /a ques+=1
set numdisp=
for /l %%i in (1 1 8) do (set numdisp=!random:~-1!!numdisp!)
call :resetani
call :initready
if "!anim!"=="1" (call :ani2) else (call :static2)
call :shinenormal
cls
echo.
echo.           [    Question: %ques%^/10        Score: %score%^/10    ]
echo.
echo.               Remember it now!
echo.
echo.               Secret number: !numdisp!
sleep 5000
cls
echo.
echo.           [    Question: %ques%^/10        Score: %score%^/10    ]
echo.
echo.               OK, now you enter the secret number...
echo.
echo.               Secret number: ????????
echo.
echo.                  [PRESS ENTER TO ENTER THE NUMBER]
pause>nul
echo.
set numenter=
set /p numenter=Number:
if "!numenter!"=="!numdisp!" (
set /a score+=1
call :resetani
call :initcorrect
if "!sound!"=="1" start /b gplay correct.mp3>nul 2>nul
if "!anim!"=="1" (call :ani2) else (call :static2)
goto abc
) else (
if "%numenter%"=="" set numenter=blank..
call :resetani
call :initwrong
if "!sound!"=="1" start /b gplay wrong.mp3>nul 2>nul
if "!anim!"=="1" (call :ani2) else (call :static2))
:abc
echo.
echo Press any key to continue...
pause>nul
if "%ques%"=="10" (
call :resetani
call :initfinal
if "!anim!"=="1" (call :ani2) else (call :static2)
echo Press any key to back to main menu
pause>nul
goto menu
)
goto playgame2
:settings
call :resetani
call :initsettings
if "!anim!"=="1" (call :ani) else (call :static)
:settings2
call :initsettings
call :static
set /p choice=Choice:
if "%choice%"=="1" if "!sound!"=="1" (set sound=0&goto settings2) else (set sound=1&goto settings2)
if "%choice%"=="2" if "!anim!"=="1" (set anim=0&goto settings2) else (set anim=1&goto settings2)
if "%choice%"=="3" goto username
if "%choice%"=="4" goto menu
call :shinewrong
goto settings2
:username
call :resetani
call :initusername
set skip=
if "!anim!"=="1" (call :ani3) else (call :static3)
cls&set choice=
call :static3
set /p choice=You want to change your name to?:
if "%choice%"=="" goto settings
set user=%choice%
echo.
echo.      Name Changed...
call :shinenormal
goto menu
:about
call :resetani
call :initabout
set skip=
if "!anim!"=="1" (call :ani3) else (call :static3)
call :static3
echo Press any key to back to main menu...
pause>nul
goto menu
:help
call :resetani
call :inithelp
set skip=
if "!anim!"=="1" (call :ani3) else (call :static3)
call :static3
echo Press any key to back to main menu...
pause>nul
goto menu
:shinewrong
for /l %%i in (1 1 3) do (
color 04
sleep 100
color 0c
sleep 100)
color 0f
exit /b
:shinenormal
for /l %%i in (1 1 3) do (
color 03
sleep 100
color 0b
sleep 100)
color 0f
exit /b
:shinecorrect
for /l %%i in (1 1 3) do (
color 02
sleep 100
color 0a
sleep 100)
color 0f
exit /b
:resetani
set /a echo=0,echo2=0,echo3=0,echo4=0
set choice=
exit /b
:initintro
set introl1=    ::                  ::
set introl2=    ::     .::::  .::::    :::::.
set introl3=    :::::. ::    ::  :: :: ::  ::
set introl4=    ::  :: ::    :: .:: :: ::  ::
set introl5=    :::::  ::     :: :: :: ::  :: memory
set introl6=         ::           :: ::
set introl7=         ::           :: :: .::::.        .::::: .::::.
set introl8=  .::::: ::::.  .:::: :: :: ::  :: :::::. ::  :: ::  ::
set introl9=  ::     :: :: ::  :: :: :: :::::: ::  ::  ::::: ::::::
set introla=  ::     :: :: :: .:: :: :: ::     ::  ::     .: ::   
set introlb=  :::::: :: ::  :: :: :: ::  ::::: ::  :: :::::   :::::
set dot=............................................................
set /a echo=0,echo2=0,echo3=60
exit /b
:initmenu
set menuprompt=Welcome %user%
set menul1=1. Play now
set menul2=2. Settings
set menul3=3. How To Play
set menul4=4. About
set menul5=5. Offical Blog
set skip=
set echo=18
set echo2=0
set choice=
exit /b
:initsettings
set menuprompt=Settings
if "!sound!"=="1" (set menul1=1. Turn off sound) else (set menul1=1. Turn on sound)
if "!anim!"=="1" (set menul2=2. Turn off animation) else (set menul2=2. Turn on animation)
set menul3=3. Change name
set menul4=4. Back
set menul5=
set skip=
set echo=10
set echo2=0
set choice=
exit /b
:initgame
set /a score=0,ques=0
exit /b
:initready
cls
set readyl1=        .::::: .::::.  ::
set readyl2=        ::     ::  ::  ::
set readyl3=        ::  :: ::  ::  ''
set readyl4=         ::::: '::::'  ::
set readyl5=  :::::.  ::::::   .:.   :::.  ::   ::  .::::
set readyl6=  ::  ::  ::      :: ::  :: ::  :: ::  ''  ::
set readyl7=  :::::   :::::: ::::::: :: ::    ::      ::
set readyl8=  ::  ::  ::     ::   :: :: ::    ::     ''
set readyl9=  ::   :: :::::: ::   :: :::'     ::     ::
set echo3=50
set echo4=20
set tmp=1
exit /b
:aniintro
if !echo!==40 if !echo2!==60 if !echo3!==0 exit /b
if !echo!==40 (if not !echo2!==60 set /a echo2+=5) else (set /a echo+=2)
if !echo2! geq 30 set /a echo3-=5
cls
echo.
echo.    !introl1:~0,%echo%!
echo.    !introl2:~0,%echo%!
echo.    !introl3:~0,%echo%!
echo.    !introl4:~0,%echo%!
echo.    !introl5:~0,%echo%!
if !echo!==40 (
echo.    !dot:~0,%echo2%!
if !echo2! geq 30 (
echo.
echo.    !introl6:~%echo3%!
echo.    !introl7:~%echo3%!
echo.    !introl8:~%echo3%!
echo.    !introl9:~%echo3%!
echo.    !introla:~%echo3%!
echo.    !introlb:~%echo3%!
)
)
sleep 50
goto aniintro
:ani
cls
if not "%skip%"=="1" (
if not "!echo!"=="0" set /a echo-=2
if not "!echo2!"=="22" set /a echo2+=2
if "!echo!"=="0" if "!echo2!"=="22" set skip=1
echo.
echo.
echo.    !menuprompt:~%echo%!
echo.
echo.         !menul1:~0,%echo2%!
echo.                                 !menul2:~0,%echo2%!
echo.         !menul3:~0,%echo2%!
echo.                                 !menul4:~0,%echo2%!
echo.         !menul5:~0,%echo2%!
sleep 50
goto ani)
exit /b
:ani2
cls
if not "!echo3!"=="0" set /a echo3-=2
echo.
echo.           [    Question: %ques%^/10        Score: %score%^/10    ]
echo.
echo.         !readyl5:~%echo3%!
echo.         !readyl6:~%echo3%!
echo.         !readyl7:~%echo3%!
echo.         !readyl8:~%echo3%!
echo.         !readyl9:~%echo3%!
if "!echo3!"=="0" (
if "!tmp!"=="1" sleep 1000&set tmp=
if "!tmp2!"=="1" call :shinewrong&set tmp2=
if "!tmp3!"=="1" call :shinecorrect&set tmp3=
set /a echo4-=2)
if "!echo3!"=="0" (
echo.
echo.
echo.
echo.              !readyl1:~%echo4%!
echo.              !readyl2:~%echo4%!
echo.              !readyl3:~%echo4%!
echo.              !readyl4:~%echo4%!
)
sleep 50
if "!echo3!"=="0" if "!echo4!"=="0" exit /b
goto ani2
:ani3
cls
if not "%skip%"=="1" (
if not "!echo!"=="0" set /a echo-=2
if not "!echo2!"=="55" set /a echo2+=5
if "!echo!"=="0" if "!echo2!"=="55" set skip=1
echo.
echo.    !title:~%echo%!
echo.
echo.    !pmt1:~0,%echo2%!&echo.
echo.    !pmt2:~0,%echo2%!&echo.
echo.    !pmt3:~0,%echo2%!&echo.
echo.    !pmt4:~0,%echo2%!&echo.
echo.    !pmt5:~0,%echo2%!&echo.
sleep 50
goto ani3)
exit /b
:inithelp
set title=How to play
set pmt1=Welcome to Brain Memory Challenge.bat
set pmt2=The game will show you a group of number, then all you
set pmt3=need to do is remember the number and type it after the
set pmt4=number disappears.
set pmt5=Note: You only have 5 seconds to remember it.
set /a echo=8
exit /b
:initabout
set title=About
set pmt1=I'm the author of this program, Raymai.
set pmt2=Thanks to Karl M. Syring for the gplay.exe.
set pmt3=Thanks to Herbert Kleebauer for the sleep.com.
set pmt4=Thanks to Valve for the sound.
set pmt5=If you wanna use my code, add my name to your program's "about".
set /a echo=8
exit /b
:initusername
set title=Change your name
set pmt1=Here's the way you can change your name.
set pmt2=Current Name: %user%
set pmt3=Current Windows Username: %username%
set pmt4=  * To go back, just leave blank and enter
set pmt5=Note: The change only valid for this session.
set /a echo=16
exit /b
:initwrong
set readyl1=
set readyl2=YOU TYPED: !numenter!
set readyl3=
set readyl4=THE CORRECT NUMBER IS: !numdisp!
set readyl5=    :: :: :: :::::  .:::. ::  :: .:::: ::
set readyl6=    :: :: :: ::  :: :: :: ::: :: ::    ::
set readyl7=    :: :: :: :::::  :: :: :: ::: :: :: ::
set readyl8=    :: :: :: :: ::  :: :: ::  :: :: :: ''
set readyl9=     ::  ::  ::  ::  :::  ::  :: ::::: ::
set echo3=32
set echo4=22
set tmp2=1
exit /b
:initcorrect
set readyl1=
set readyl2=WOW, THE NUMBER YOU TYPED IS TRUE
set readyl3=
set readyl4=YOU'RE COOL, KEEP IT UP
set readyl5= ::::  :: :: :: :::::: .::::: .:::. .::::::. :::::: ::
set readyl6=::  :: :: :: :: ::     ::     :: :: :: :: :: ::     ::
set readyl7=:::::: :: :: :: :::::: '::::. :: :: :: :: :: :::::: ::
set readyl8=::  :: :: :: :: ::         :: :: :: :: :: :: ::     ''
set readyl9=::  ::  ::  ::  :::::: :::::'  :::  :: :: :: :::::: ::
set echo3=42
set echo4=22
set tmp3=1
exit /b
:initfinal
if !score! leq 2 set grade=Bad
if !score! geq 3 if !score! leq 5 set grade=Acceptable
if !score! geq 6 if !score! leq 8 set grade=Good
if !score! equ 9 set grade=Great
if !score! equ 10 set grade=Excellent
set readyl1= YOUR NAME: !user!
set readyl2= SCORE: !score!
set readyl3= GRADE: !grade!
set readyl4=
set readyl5=   ::::.  :::::: .::::: ::  :: ::    ::::::
set readyl6=   :: ::  ::     ::     ::  :: ::      ::
set readyl7=   ::::   :::::: '::::. ::  :: ::      ::
set readyl8=   :: ::  ::         :: ::  :: ::      ::
set readyl9=   ::  :: :::::: :::::'  ::::  ::::::  ::
set echo3=36
set echo4=22
exit /b
:static
cls
echo.
echo.
echo.    !menuprompt!
echo.
echo.         !menul1!
echo.                                 !menul2!
echo.         !menul3!
echo.                                 !menul4!
echo.         !menul5!
echo.
echo.
exit /b
:static2
cls
echo.
echo.           [    Question: %ques%^/10        Score: %score%^/10    ]
echo.
echo.         !readyl5!
echo.         !readyl6!
echo.         !readyl7!
echo.         !readyl8!
echo.         !readyl9!
if "!tmp!"=="1" sleep 1000&set tmp=
if "!tmp2!"=="1" call :shinewrong&set tmp2=
if "!tmp3!"=="1" call :shinecorrect&set tmp3=
echo.
echo.
echo.
echo.              !readyl1!
echo.              !readyl2!
echo.              !readyl3!
echo.              !readyl4!
exit /b
:static3
cls
echo.
echo.    !title!
echo.
echo.    !pmt1!&echo.
echo.    !pmt2!&echo.
echo.    !pmt3!&echo.
echo.    !pmt4!&echo.
echo.    !pmt5!&echo.
exit /bCOPY
呵呵~ 代码有点乱的说~ 希望大家多多支持啦~

链接: https://pan.baidu.com/s/1R9kl9mcMXip6vK64bYnsfA?pwd=sgvw
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

本帖最后由 weichenxiehou 于 2011-9-3 08:39 编辑

兄台写的代码还真是长啊,不简单啊……闪烁的效果在下觉得可以考虑运用批处理多行回退来改进。有兴趣的话可以研究下本人在http://www.bathome.net/thread-11607-1-1.html中在显示方面所做的努力,呵呵
看得多说得多,远比不上写得多。

TOP

回复 2# weichenxiehou


感谢你的回复,去谷歌了一下“批处理多行回退”,虽然可以解决闪动的问题,但是我的动画貌似不适合,因为我的不是单行,而是多行啊~
无论如何,谢谢你的回复。

对了,觉得我这个批处理的动画做得ok么?好看么?
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

老实说,我有点心灰意冷…… 怎么 没有其他人回帖了…… 也许你们会觉得这个游戏很白痴…… 作弊易如反掌…… 但毕竟在界面那方面我用了不少心血啦…… 怎么就不能支持一下呢……
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

如果你继续做这些东西,心只能越来越冷,不如多花点时间帮他人答疑解惑吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

版主说的对,批处理应该用来做更实际的东西

TOP

回复 3# raymai97
总的来说,还是很不错啦,写这些东西练练手,提升下技术可以,但也别陷进去了,毕竟我觉得批处理的初衷不是这个哦,加油!
看得多说得多,远比不上写得多。

TOP

看看左上角,“批处理之家”下面的那一条蓝背白底的字。

TOP

回复 4# raymai97


    小意思咯,我写过的、发过的比你的多了去了,捧场的稀稀拉拉,我也没觉得有什么。技术是自己的,学到了自己高兴。作品嘛,自我感觉好就好。
    正如楼上所言,仅当练手好了,毕竟看起来你的思路和技术还有待提高。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

本帖最后由 garyng 于 2011-9-13 17:39 编辑

每个帖子都有往下沉的时候......

想赞的是:楼主的英文太好了!!!!!
哪里人啊?

小小的建议而已~
WOW, THE NUMBER YOU TYPED IS TRUE
WOW, THE NUMBER YOU TYPED IS CORRECT

The game will show you a group of number, then all you...
The game will show you a group of number, then what you...

Thanks to Karl M. Syring for the gplay.exe.
Thanks to Karl M. Syring, the author of gplay.exe.

Thanks to Herbert Kleebauer for the sleep.com.
Thanks to Herbert Kleebauer, the author of sleep.com.

TOP

楼主很用心,很强大!

TOP

返回列表