标题: [特效代码] 批处理贪吃蛇代码求解释 !!另我想把它改成自动输入 [打印本页]
作者: ads350668398 时间: 2014-11-14 22:32 标题: 批处理贪吃蛇代码求解释 !!另我想把它改成自动输入
- mode con cols=135 lines=18 &title made by 523066680 -- If_Exist
- echo,p>x
- for %%a in (w a s d p q) do (set de%%a=d)
- set _w=s
- set _s=w
- set _a=d
- set _d=a
- :a
- cls
- set /p input="w a s d q(退出) r(重来) p(暂停):"
- set input=%input:~0,1%
- if not defined de%input% (goto :a)
- if "%input%"=="%ever%" (goto :a)
- if "%input%"=="q" (echo,q>x &exit)
- if "%input%"=="r" (echo,r>x)
- call,set ever=%%_%input%%%
- echo %input%>x
- goto :a
复制代码
以上是一个大神写的 贪吃蛇游戏 的控制部分我想把它 改成 自动输入 的怎么能做到
**********************************
主程序- @echo off
- start direction.bat
- title made by hi.baidu.com/523066680
- :action
- color 07
- setlocal enabledelayedexpansion
- mode con cols=65 lines=35
- for /l %%a in (1,1,60) do (set space= !space!)
- for /l %%a in (1,1,30) do (set L%%a=%space%)
- set /a line=15,col=29,i=0,long=9
- :loop
- :::::控制蛇长,判断是否建立食物部分(set /a i+=1)
- if %i% lss %long% (set /a i=1) else (set i=1)
- if defined cut%i% (
- if not defined dot (call :dot)
- !cut%i%:"=!
- set "L%a%=!L%a%:~0,%b%! !L%a%:~%c%!"
- set "%a%_%b%="
- )
- :pausego
- :::::显示
- cls
- echo, %space: =_%__
- for /l %%a in (1,1,30) do echo,│!L%%a!│
- echo, %space: =-%--
- echo,- 分数:%fen%00 %echo%
- for /l %%a in (1,1,2) do (ping -n 1 127.0>nul)
- ::::::读取数据,分析部分
- :typex
- set /p way=<x
- if %way%==q (exit)
- if %way%==r (endlocal &set echo=按wasd方向键激活。&goto :action) else (set echo=)
- if %way%==p (ping -n 2 127.0>nul &set echo=按wasd方向键激活。&goto :pausego) else (set echo=)
- if %way%==w (set /a line-=1)
- if %way%==s (set /a line+=1)
- if %way%==a (set /a col-=1)
- if %way%==d (set /a col+=1)
- if defined %line%_%col% (goto :gameover)
- if %line% equ 31 (goto :gameover)
- if %line% equ 0 (goto :gameover)
- if %col% equ -1 (goto :gameover)
- if %col% equ 60 (goto :gameover)
- ::::::句2描点,3记录点坐标并加以编号,4定义该点是存在的,5判断吃到食物否.
- set /a C2=col+1
- set "L%line%=!L%line%:~0,%col%!*!L%line%:~%C2%!"
- set cut%i%="set /a a=%line%,b=%col%,c=%C2%"
- set "%line%_%col%=exist"
- if "%line%_%col%"=="%dotl%_%dotc%" (set /a long+=3,fen+=1 &set dot=)
- goto :loop
- ::::::建立食物O的调用部分
- :dot
- set /a dotl=%random%%%28+2,dotc=%random%%%58+1
- if defined %dotl%_%dotc% (goto :dot)
- set dot=%dotl%_%dotc%
- set /a dotc2=dotc+1
- set "L%dotl%=!L%dotl%:~0,%dotc%!0!L%dotl%:~%dotc2%!"
- goto :eof
- :gameover
- echo,p>x
- color 0a
- ping -n 2 127.0>nul &cls
- echo,game over 在控制台按q结束游戏,r再玩一次,然后按任意方向键激活暂停状态
- ping -n 3 127.0>nul
- endlocal
- goto :action
复制代码
作者: ads350668398 时间: 2014-11-14 22:36
自己习惯性的顶下
作者: ads350668398 时间: 2014-11-14 22:42
本帖最后由 ads350668398 于 2014-11-14 22:50 编辑
11
作者: ads350668398 时间: 2014-11-14 23:22
有个想法 在这个 假随即面前 把它当做真随即 而不是找到后在用算法 去吃他
能有个样子我拿下来学习下
作者: 523066680 时间: 2014-11-15 08:54
本帖最后由 523066680 于 2014-11-15 09:00 编辑
不要求解释了, 想要做游戏,好好学编程语言配合游戏引擎或者图形库
请在一开始就确定好方向。
作者: ads350668398 时间: 2014-11-15 09:04
我只是一个 爱好 那里还方向 就是你写的???
作者: ads350668398 时间: 2014-11-15 09:07
就是你写的 晕 出来 注释下 然后 做个搜索 食物的 谢谢
作者: ads350668398 时间: 2014-11-15 09:13
yao 要解释啊 晕
作者: 523066680 时间: 2014-11-15 10:40
本帖最后由 523066680 于 2014-11-15 10:42 编辑
回复 8# ads350668398
你不要看别人写的 自己琢磨,做出来会比别人做的更好。
你看我的代码,会被代码风格带坏。
作者: ads350668398 时间: 2014-11-15 11:46
本帖最后由 ads350668398 于 2014-11-15 11:52 编辑
还带坏 风格 我要啥 风格 别人用一行 我用10行都没有所谓啦
能基本达到目的 实现功能 你要是坏风格 我也能忍了
作者: 523066680 时间: 2014-11-15 12:08
回复 4# ads350668398
雏形
http://bbs.bathome.net/viewthread.php?tid=1926
作者: ads350668398 时间: 2014-11-15 12:36
收藏了
作者: ads350668398 时间: 2014-11-15 22:44
@echo off
title made by 523066680
setlocal enabledelayedexpansion
mode con cols=66 lines=35
for /l %%a in (1,1,60) do (set space= !space!)
for /l %%a in (1,1,30) do (set L%%a=%space%)
set /a line=15,col=29,i=0,long=9
:loop
:::::控制蛇长,判断是否建立食物部分(set /a i+=1)
if %i% lss %long% (set /a i+=1) else (set i=1)
if defined cut%i% (
if not defined dot (call :dot)
!cut%i%:"=!
set "L%a%=!L%a%:~0,%b%! !L%a%:~%c%!"
set "%a%_%b%="
)
:pausego
:::::显示
cls
echo, %space: =_%__
for /l %%a in (1,1,30) do echo,│!L%%a!│
echo, %space: =-%--
echo,- 分数:%fen%00 %echo%
for /l %%a in (1,1,1) do (ping -n 1 127.0>nul)
::::::句2描点,3记录点坐标并加以编号,4定义该点是存在的,5判断吃到食物否.
set /a C2=col+1
set "L%line%=!L%line%:~0,%col%!*!L%line%:~%C2%!"
set cut%i%="set /a a=%line%,b=%col%,c=%C2%"
set "%line%_%col%=exist"
if "%line%_%col%"=="%dotl%_%dotc%" (set /a long+=3,fen+=1 &set dot=)
goto :loop
::::::建立食物O的调用部分
:dot
set /a dotl=%random%%%28+2,dotc=%random%%%58+1
if defined %dotl%_%dotc% (goto :dot)
set dot=%dotl%_%dotc%
set /a dotc2=dotc+1
set "L%dotl%=!L%dotl%:~0,%dotc%!0!L%dotl%:~%dotc2%!"
goto :eof
:loop
set /a linenext=%random%%%30+1,colnext=%random%%%60
for %%a in (line col) do (
if !%%a! lss !%%anext! (set %%aadd=+) else (set %%aadd=-)
)
:loop-1
::控制蛇身的长度
if %i% lss 8 (set /a i+=1) else (set i=1)
if defined cut%i% (
!cut%i%:"=!
::!回收收*号!
set "L%a%=!L%a%:~0,%b%! !L%a%:~%c%!"
)
set /a C2=col+1
set "L%line%=!L%line%:~0,%col%!*!L%line%:~%C2%!"
set cut%i%="set /a a=%line%,b=%col%,c=%C2%"
cls
for /l %%a in (1,1,30) do echo,!L%%a!
::*号走一步的速度
for /l %%a in (1,1,200) do (echo,>nul)
if %line% neq %linenext% (
set /a line%lineadd%=1
) else (
set /a col%coladd%=1
)
if %col% neq %colnext% (goto :loop-1)
goto :loop
大神呢 来来 帮忙 怎么吃一个就不出现第二个了 还有分数怎么也不增加啊???
作者: ads350668398 时间: 2014-11-17 14:02
作者 呢 怎么 也出来说机句啊
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |