标题: 批处理:跳舞机
[打印本页]
作者: PPdos
时间: 2007-1-14 17:59
标题: 批处理:跳舞机
(困难总是有地~娱乐总是要地)大家都玩过跳舞机游戏的吧~
难一下你:
要求:随机出现上下左右的箭头,累积计分 过关加速,格式不限
材料:↓↑←→↖ ↗ ↙ ↘▲▼◤ ◢ ◣◥ (建议从简)
希望多款式思路 类比出新:各就位~~预备~------跳!
作者: namejm
时间: 2007-1-14 22:08
累计计分倒是可以做到,但是过关加速就有点难以理解了:怎样才能过关?也就是说,在什么情况下可以计分?——批处理对绝大部分鼠标点击事件不会产生任何反应的。
[
Last edited by namejm on 2007-1-14 at 12:18 PM ]
作者: namejm
时间: 2007-1-14 22:10
发一个演示代码,没有解决在什么情况下可以计分的问题:
@echo off
mode con cols=40 lines=20
set str=↓↑←→↖↗↙↘▲▼◤◢◣◥
:begin
for /l %%i in (1,1,9) do set n%%i=
set /a num=%random%%%14
call set char=%%str:~%num%,1%%
set /a num=%random%%%9+1
set n%num%=%char%
call :result
goto begin
:result
cls
echo.
echo.
echo.
echo.
echo.
echo ┌──┬──┬──┐
echo │ %n1% │ %n2% │ %n3% │
echo ├──┼──┼──┤
echo │ %n4% │ %n5% │ %n6% │
echo ├──┼──┼──┤
echo │ %n7% │ %n8% │ %n9% │
echo └──┴──┴──┘
ping -n 2 127.1>nul
goto :eof
[
Last edited by namejm on 2007-1-14 at 10:00 AM ]
作者: chainliq
时间: 2007-1-15 01:14
楼主玩劲舞玩过头啦,呵呵``
作者: redtek
时间: 2007-1-15 01:24
Quote: |
┌──┬──┬──┐
│ │ │ │
├──┼──┼──┤
│ │ │ ↖ │
├──┼──┼──┤
│ │ │ │
└──┴──┴──┘ |
|
namejm兄这个代码有意思~~:)
猛然间看这个 “动画” 一样的运行过程,特别象 “记忆力测试” 游戏~:)
[
Last edited by redtek on 2007-1-14 at 12:27 PM ]
作者: vkill
时间: 2007-1-15 01:27
批处理要是等你输入必须回车的啊~
作者: tghksj
时间: 2007-1-15 02:20
今天早上看这个帖子的时候想的问题正如6楼
感觉不是批处理能力所在.
作者: zh159
时间: 2007-1-15 02:40
可以考虑用choice /c 123456780 /t
3 /d 0 /n /m [↓↑←→↖↗↙↘]进行选择然后判断对错
调整/t
3秒数速度
作者: PPdos
时间: 2007-1-15 06:39
计分 是在操作符合屏幕显示的时候+1可以设置上限为100分 如果GEQ 100就显示速
度提升 此题目是由9527的发廊标志引发的 但在实现上确实难度 ,但在斑竹的启发下
学会了或与异或的位运算 感谢但因我分加完了给与口头加分 +5 ^^
作者: namejm
时间: 2007-1-15 09:32
按照跳舞机的工作原理,当某个格子里的图形显示出来的时候,要迅速地在那个格子上踩上一脚,过期不候。在批处理中,如何在图形显示出来的时候,准确无误地“踩”上那一脚才是问题的关键。但是非常不幸,批处理窗口内容没法对鼠标的点击产生反应。按照 zh159 兄的说法,choice.exe 可能派得上用场。
作者: zh159
时间: 2007-1-15 23:11
可惜choice只能以秒作单位,能有0.5秒最好,买个便宜的USB数字小键盘和跳舞毯改造一下,完善记分代码就OK
这些都可以写出来,思路也有,只是过程罗嗦,没多少空写。
作者: minmin888
时间: 2007-5-8 13:54
奇思妙想,期待源码!
作者: everest79
时间: 2007-5-8 16:32
改版主的
@echo off 2>nul 3>nul&mode con cols=40 lines=20&set/atitle=%random%
:top
set str= ↙↓↘← →↖↑↗
for /l %%i in (1,1,9) do set "n%%i= %%i "&&call :pri
ping 127.1 -n 2 >nul
for /l %%i in (1,1,9) do (
call set "n%%i=%%str:~%%i,1%% "
call :pri
ping 127.1 -n 1 >nul
)
for /l %%i in (1,1,9) do set "n%%i= "&set n5=End&set ax=0
echo CreateObject("WScript.Shell").AppActivate "test">%temp%\%title%.vbs
echo Wscript.Sleep"800">>%temp%\%title%.vbs
echo CreateObject("WScript.Shell").SendKeys "{enter}">>%temp%\%title%.vbs
echo start...&pause>nul
:st
set /a cc+=1,dd=cc%%10,num=%random%%%9+1,1/(num-5)||set /a num+=%random%%%3+1
call set "n%num%=%%str:~%num%,1%% "&&color %dd%7
:pri
cls&title=%title%&echo.&echo\&echo/
echo ┌──┬──┬──┐
echo │ %n7%│ %n8%│ %n9%│
echo ├──┼──┼──┤
echo │ %n4%│ %n5%│ %n6%│
echo ├──┼──┼──┤
echo │ %n1%│ %n2%│ %n3%│
echo └──┴──┴──┘
echo end:5 rest:0
set/a in=10,%num%||goto :eof
cscript //logo //b %temp%\%title%.vbs
set/p in=
set/a 1/(5-in)||goto end
set/a 1/(num-in)&&set/aax-=1||set/aax+=1
set/a 1/(1*in)||set num=&&goto top
set "n%num%= "
goto st
:end
echo %ax%&del /f /q %temp%\%title%.vbs
pause