标题: [特效代码] [分享][已更新]批处理吃苹果游戏6.0 [打印本页]
作者: zcydez 时间: 2010-6-22 15:28 标题: [分享][已更新]批处理吃苹果游戏6.0
注:本程序必须依靠Choice.exe(在附件里)!!!
添加了再玩一次的机制。
改变了部分算法。
玩法:
按字母键消去对应字母
按1键暂停
按2键退出
(只要苹果落地即 game over)
(可以设定全屏)
(增加计分功能)- @echo off
- :begen-cpg-2
- title 吃苹果
- set j=0
- set /p qp=是否全屏?(y/n)
- if %qp%==n (
- mode con:cols=16 lines=14
- goto tg
- ) else (
- if %qp%==y (goto qp) else (echo 输入错误!&%0))
- :qp
- echo exit|%ComSpec% /k prompt e 100 B4 00 B0 12 CD 10 B0 03 CD 10 CD 20 $_g$_q$_|debug>nul
- chcp 437>nul
- graftabl 936>nul
- :tg
- color 71
- set main=
- set /p time=请输入字母掉落延长时间(单位:秒):
- :begen
- ::随机抽取字母(由于是新手,方法难免有点……)
- set /a k=%random%%%10
- set /a z=%random%%%26
- set str=abcdefghijklmnopqrstuvwxyz
- setlocal EnableDelayedExpansion
- set z=!str:~%z%,1!
- setlocal
- if %k%==0 set l=%z%
- if %k%==1 set l= %z%
- if %k%==2 set l= %z%
- if %k%==3 set l= %z%
- if %k%==4 set l= %z%
- if %k%==5 set l= %z%
- if %k%==6 set l= %z%
- if %k%==7 set l= %z%
- if %k%==8 set l= %z%
- if %k%==9 set l= %z%
- set main=%l%%main:~0,-10%
- set over=%main:~100,10%
- cls
- echo.得分:%j%分
- echo. ┌─────┐
- echo. │%main:~0,10%│
- echo. │%main:~10,10%│
- echo. │%main:~20,10%│
- echo. │%main:~30,10%│
- echo. │%main:~40,10%│
- echo. │%main:~50,10%│
- echo. │%main:~60,10%│
- echo. │%main:~70,10%│
- echo. │%main:~80,10%│
- echo. │%main:~90,10%│
- echo. └─────┘
- :choice
- choice /c abcdefghijklmnopqrstuvwxyz0123456789 /cs /t %time% /d 0 /n>nul
- set /a j=j+1
- set jr=%errorlevel%
- if %errorlevel%==1 set jr=a
- if %errorlevel%==2 set jr=b
- if %errorlevel%==3 set jr=c
- if %errorlevel%==4 set jr=d
- if %errorlevel%==5 set jr=e
- if %errorlevel%==6 set jr=f
- if %errorlevel%==7 set jr=g
- if %errorlevel%==8 set jr=h
- if %errorlevel%==9 set jr=i
- if %errorlevel%==10 set jr=j
- if %errorlevel%==11 set jr=k
- if %errorlevel%==12 set jr=l
- if %errorlevel%==13 set jr=m
- if %errorlevel%==14 set jr=n
- if %errorlevel%==15 set jr=o
- if %errorlevel%==16 set jr=p
- if %errorlevel%==17 set jr=q
- if %errorlevel%==18 set jr=r
- if %errorlevel%==19 set jr=s
- if %errorlevel%==20 set jr=t
- if %errorlevel%==21 set jr=u
- if %errorlevel%==22 set jr=v
- if %errorlevel%==23 set jr=w
- if %errorlevel%==24 set jr=x
- if %errorlevel%==25 set jr=y
- if %errorlevel%==26 set jr=z
- if %errorlevel%==28 (echo 暂停中&pause&goto choice)
- if %errorlevel%==29 goto exit
- setlocal enabledelayedexpansion
- set setin=%main%&set change=!setin:%jr%= !&set main=!change!
- if not "%over%"==" " goto over
- goto begen
- :over
- cls
- echo.s=msgbox("游戏结束!"^&vbcrlf^&"得分:%j%"^&vbcrlf^&"继续努力哦!"^&vbcrlf^&"是否再玩?",4,"游戏结束"^)>temp.vbs
- echo.createobject("scripting.filesystemobject").createtextfile("temp.tmpfile").write s>>temp.vbs
- call temp.vbs
- del /f /q temp.vbs
- for /f %%x in (temp.tmpfile) do (set xz=%%x)
- del /f /q temp.tmpfile
- if "%xz%"=="7" goto exit
- if "%xz%"=="6" goto begen-cpg-2
- :exit
- cls
- echo.谢谢使用!
- ping -n 2 127.0.1>nul
- exit
复制代码
[ 本帖最后由 zcydez 于 2010-8-5 13:11 编辑 ]
作者: gxuan2008 时间: 2010-6-22 15:42
试了下,还不错。
时间设置>=1S时好象很慢,设置<1S时太快了,还没看清就game over了。
取字母的时间可以先把26个字母先设置成变量再取吧?- set str=abcdefghijklmnopqrstuvwxyz
- set z=!str:~%z%,1!
复制代码
把取字母的IF改成这样,试了下可以。但刚开始的时候会出现!str:~X,1!不知道为什么。
[ 本帖最后由 gxuan2008 于 2010-6-22 15:56 编辑 ]
作者: 523066680 时间: 2010-6-24 10:12
报告:
玩家的电脑可能没有choice.exe ,要提示一下才好。
然后是一般游戏要有个再来一次的机制,不是说结束了就退出了。
又试了几次,在没有choice的情况下,它一直往下落,我没有按键,分数一直累加。
下载了choice
发现有时候打中了却提示game over, 再加份游戏说明吧。
[ 本帖最后由 523066680 于 2010-6-24 10:21 编辑 ]
作者: zcydez 时间: 2010-8-5 13:13
- set str=abcdefghijklmnopqrstuvwxyz
- set z=!str:~%z%,1!
复制代码
把取字母的IF改成这样,试了下可以。但刚开始的时候会出现!str:~X,1!不知道为什么。]
先感谢gxuan2008新提出的算法。gxuan2008的算法虽然有点瑕疵,但是用变量延迟解决了。
[ 本帖最后由 zcydez 于 2010-8-5 13:14 编辑 ]
作者: 523066680 时间: 2010-8-5 15:46
嗯。。。。 对具体思路不了解,不敢乱改
@echo off
:begen-cpg-2
title 吃苹果
set j=0
set /p qp=是否全屏?(y/n)
if %qp%==n (
mode con:cols=16 lines=14
goto tg
) else (
if %qp%==y (goto qp) else (echo 输入错误!&%0)
)
:qp
echo exit|%ComSpec% /k prompt e 100 B4 00 B0 12 CD 10 B0 03 CD 10 CD 20 $_g$_q$_|debug>nul
chcp 437>nul
graftabl 936>nul
:tg
color 71
set main=
set /p time=请输入字母掉落延长时间(单位:秒):
:begen
::随机抽取字母(由于是新手,方法难免有点……)
set /a k=%random%%%10
set /a z=%random%%%26
set str=abcdefghijklmnopqrstuvwxyz
setlocal EnableDelayedExpansion
set z=!str:~%z%,1!
setlocal
set "space= "
set l=!space:~0,%k%!%z%!space:~%k%!
set main=%l%%main:~0,-10%
set over=%main:~100,10%
cls
echo.得分:%j%分
echo. ┌─────┐
echo. │%main:~0,10%│
echo. │%main:~10,10%│
echo. │%main:~20,10%│
echo. │%main:~30,10%│
echo. │%main:~40,10%│
echo. │%main:~50,10%│
echo. │%main:~60,10%│
echo. │%main:~70,10%│
echo. │%main:~80,10%│
echo. │%main:~90,10%│
echo. └─────┘
:choice
choice /c abcdefghijklmnopqrstuvwxyz0123456789 /cs /t %time% /d 0 /n>nul
set /a j=j+1,tmpchoic=%errorlevel%-1
set jr=%errorlevel%
for /l %%a in (1,1,26) do (
if %errorlevel% equ %%a (set jr=!str:~%tmpchoic%,1!)
)
if %errorlevel%==28 (echo 暂停中&pause&goto choice)
if %errorlevel%==29 goto exit
setlocal enabledelayedexpansion
set setin=%main%&set change=!setin:%jr%= !&set main=!change!
if not "%over%"==" " goto over
goto begen
ver
cls
echo.s=msgbox("游戏结束!"^&vbcrlf^&"得分:%j%"^&vbcrlf^&"继续努力哦!"^&vbcrlf^&"是否再玩?",4,"游戏结束"^)>temp.vbs
echo.createobject("scripting.filesystemobject").createtextfile("temp.tmpfile").write s>>temp.vbs
call temp.vbs
del /f /q temp.vbs
for /f %%x in (temp.tmpfile) do (set xz=%%x)
del /f /q temp.tmpfile
if "%xz%"=="7" goto exit
if "%xz%"=="6" goto begen-cpg-2
:exit
cls
echo.谢谢使用!
ping -n 2 127.0.1>nul
exit
[ 本帖最后由 523066680 于 2010-8-5 15:49 编辑 ]
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |