Board logo

标题: [特效代码] 批处理贪吃蛇代码求解释 !!另我想把它改成自动输入 [打印本页]

作者: ads350668398    时间: 2014-11-14 22:32     标题: 批处理贪吃蛇代码求解释 !!另我想把它改成自动输入

  1. mode con cols=135 lines=18 &title made by 523066680 -- If_Exist
  2. echo,p>x
  3. for %%a in (w a s d p q) do (set de%%a=d)
  4. set _w=s
  5. set _s=w
  6. set _a=d
  7. set _d=a
  8. :a
  9. cls
  10. set /p input="w a s d q(退出) r(重来) p(暂停):"
  11. set input=%input:~0,1%
  12. if not defined de%input% (goto :a)
  13. if "%input%"=="%ever%" (goto :a)
  14. if "%input%"=="q" (echo,q>x &exit)
  15. if "%input%"=="r" (echo,r>x)
  16. call,set ever=%%_%input%%%
  17. echo %input%>x
  18. goto :a
复制代码
以上是一个大神写的 贪吃蛇游戏 的控制部分我想把它 改成 自动输入 的怎么能做到

**********************************
主程序
  1. @echo off
  2. start direction.bat
  3. title made by hi.baidu.com/523066680
  4. :action
  5. color 07
  6. setlocal enabledelayedexpansion
  7. mode con cols=65 lines=35
  8. for /l %%a in (1,1,60) do (set space= !space!)
  9. for /l %%a in (1,1,30) do (set L%%a=%space%)
  10. set /a line=15,col=29,i=0,long=9
  11. :loop
  12. :::::控制蛇长,判断是否建立食物部分(set /a i+=1)
  13. if %i% lss %long% (set /a i=1) else (set i=1)
  14. if defined cut%i% (
  15.     if not defined dot (call :dot)
  16.     !cut%i%:"=!
  17.     set "L%a%=!L%a%:~0,%b%! !L%a%:~%c%!"
  18.     set "%a%_%b%="
  19. )
  20. :pausego
  21.     :::::显示
  22.     cls
  23.     echo, %space: =_%__
  24.     for /l %%a in (1,1,30) do echo,│!L%%a!│
  25.     echo, %space: =-%--
  26.     echo,- 分数:%fen%00  %echo%
  27.     for /l %%a in (1,1,2) do (ping -n 1 127.0>nul)
  28. ::::::读取数据,分析部分
  29. :typex
  30. set /p way=<x
  31. if %way%==q (exit)
  32. if %way%==r (endlocal &set echo=按wasd方向键激活。&goto :action) else (set echo=)
  33. if %way%==p (ping -n 2 127.0>nul &set echo=按wasd方向键激活。&goto :pausego) else (set echo=)
  34. if %way%==w (set /a line-=1)
  35. if %way%==s (set /a line+=1)
  36. if %way%==a (set /a col-=1)
  37. if %way%==d (set /a col+=1)
  38.     if defined %line%_%col% (goto :gameover)
  39.     if %line% equ 31 (goto :gameover)
  40.     if %line% equ 0 (goto :gameover)
  41.     if %col% equ -1 (goto :gameover)
  42.     if %col% equ 60 (goto :gameover)
  43. ::::::句2描点,3记录点坐标并加以编号,4定义该点是存在的,5判断吃到食物否.
  44. set /a C2=col+1
  45. set "L%line%=!L%line%:~0,%col%!*!L%line%:~%C2%!"
  46. set cut%i%="set /a a=%line%,b=%col%,c=%C2%"
  47. set "%line%_%col%=exist"
  48. if "%line%_%col%"=="%dotl%_%dotc%" (set /a long+=3,fen+=1 &set dot=)
  49. goto :loop
  50.   ::::::建立食物O的调用部分
  51.   :dot
  52.   set /a dotl=%random%%%28+2,dotc=%random%%%58+1
  53.   if defined %dotl%_%dotc% (goto :dot)
  54.   set dot=%dotl%_%dotc%
  55.   set /a dotc2=dotc+1
  56.   set "L%dotl%=!L%dotl%:~0,%dotc%!0!L%dotl%:~%dotc2%!"
  57.   goto :eof
  58. :gameover
  59. echo,p>x
  60. color 0a
  61. ping -n 2 127.0>nul &cls
  62. echo,game over 在控制台按q结束游戏,r再玩一次,然后按任意方向键激活暂停状态
  63. ping -n 3 127.0>nul
  64. endlocal
  65. 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