Board logo

标题: 批处理:跳舞机 [打印本页]

作者: 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