找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27550|回复: 7

[游戏娱乐] 批处理贪吃蛇程序

[复制链接]
发表于 2017-7-25 13:56:45 | 显示全部楼层 |阅读模式
本帖最后由 a2002 于 2017-7-26 09:02 编辑

无聊写了个贪吃蛇,练练笔。(原创区发不了,放在这儿)



源码:
  1. @echo off&setlocal EnableDelayedExpansion&rem made by a2002
  2. if "%~1" equ "Control" set fw=s&set fa=d&set fs=w&set fd=a&goto :Control
  3. start /b "" "%~f0" Control

  4. set Speed=100
  5. set long=3
  6. set Snake=■
  7. set food=◇
  8. set Empty= 

  9. call :StartWith
  10. :Main
  11. set mov=1&call :echo
  12. Cons Sleep,!Speed!
  13. set /p drv=<snk.tmp
  14. if !drv! equ w set /a X-=1
  15. if !drv! equ a set /a Y-=1
  16. if !drv! equ s set /a X+=1
  17. if !drv! equ d set /a Y+=1
  18. call :Check
  19. call :Move !mov!
  20. goto :Main

  21. :StartWith
  22. mode 80,24&set crlf=^

  23. &Cons SetTitle,贪吃蛇游戏
  24. Cons SetIcon,%~dp0Snake.ico&Cons HideCur
  25. for /l %%# in (1,1,!long!) do set t=!t!1
  26. set t=!t!00000000000000000000
  27. set Data=!t:~0,20!
  28. for /l %%# in (2,1,20) do set Data=!Data!00000000000000000000
  29. set Top=┏━━━━━━━━━━━━━━━━━━━━┓
  30. set Bot=┗━━━━━━━━━━━━━━━━━━━━┛
  31. for /l %%# in (1,1,!long!) do set Pos=!Pos!,1.%%#
  32. set Pos=!Pos:~1!&set /a X=1,Y=long
  33. echo d>snk.tmp&set foodPos=378&call :Setfood
  34. set Mark=0&exit /b

  35. :echo
  36. Cons SetCurPos,0,0
  37. set _Data=!Data:0=%Empty%!&set _Data=!_Data:1=%Snake%!&set _Data=!_Data:2=%food%!
  38. set echo=!Top!&for /l %%# in (0,20,380) do set echo=!echo!!crlf!┃!_Data:~%%#,20!┃&if %%# equ 0 set echo=!echo!分数:!mark!    蛇长:!long!
  39. echo;!echo!!crlf!!Bot!!crlf!made by a2002     press "u" to quit
  40. exit /b

  41. :Control
  42. set /p drv=<snk.tmp
  43. set "t="&for /f "delims=" %%a in ('xcopy /w . . 2^>nul') do if not defined t set "t=%%a"
  44. set "t=!t:~-1!"
  45. for %%# in (w a s d) do if "!t!" equ "%%#" if !f%drv%! neq %%# echo %%#>snk.tmp
  46. if "!t!" equ "u" Cons SendMsg,274,61536,0
  47. goto :Control

  48. :Getfood
  49. set /a foodPos=!random!%%400
  50. exit /b

  51. :Over
  52. set /p=Game over,press "u" to quit<nul
  53. pause>nul

  54. :Check
  55. if !X! gtr 20 goto :Over
  56. if !X! lss 1 goto :Over
  57. if !Y! gtr 20 goto :Over
  58. if !Y! lss 1 goto :Over
  59. set /a t1=X*20+Y-21
  60. if "!Data:~%t1%,1!" equ "2" call :Getfood&exit /b
  61. if "!Data:~%t1%,1!" equ "1" goto :Over
  62. exit /b

  63. :Move
  64. set /a t1=X*20+Y-21,t2=t1+1
  65. set Data=!Data:~0,%t1%!1!Data:~%t2%!
  66. for /f "tokens=1* delims=," %%a in ("!Pos!") do (
  67. for /f "tokens=1,2 delims=." %%x in ("%%a") do set /a t1=%%x*20+%%y-21,t2=t1+1
  68. if %1 equ 1 (set Pos=%%b,!X!.!Y!) else set Pos=!Pos!,!X!.!Y!)
  69. if %1 equ 1 set Data=!Data:~0,%t1%!0!Data:~%t2%!
  70. exit /b

  71. :Getfood
  72. set /a t1=X*20+Y-21,t2=t1+1,long+=1,mark+=long/10+1,mov=0
  73. set Data=!Data:~0,%t1%!1!Data:~%t2%!
  74. :Getfood_loop
  75. set /a foodPos=!random!%%400
  76. if "!Data:~%foodPos%,1!" neq "0" goto :Getfood_loop
  77. call :Setfood&exit /b

  78. :Setfood
  79. set /a t1=foodPos+1
  80. set Data=!Data:~0,%foodPos%!2!Data:~%t1%!
  81. exit /b
复制代码
下载:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

参与人数 2PB +6 技术 +2 收起 理由
老刘1号 + 1 6
523066680 + 6 + 1 后生可畏

查看全部评分

发表于 2017-7-25 14:20:48 | 显示全部楼层
按键:习惯了按q退出
 楼主| 发表于 2017-7-25 14:27:29 | 显示全部楼层
回复 2# 523066680


   本来是q的,但wasd旁边是q,玩着玩着
不小心按到就退了,就取第二个字母u代替了
 楼主| 发表于 2017-7-25 14:32:31 | 显示全部楼层
我估计玩到350长时速度会变慢甚至很卡,但应该很难玩到这么长吧
 楼主| 发表于 2017-7-25 15:05:34 | 显示全部楼层
更改地图。增加难度



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

参与人数 1技术 +1 收起 理由
happy886rr + 1 看你骨骼惊奇 拯救批家的重任就靠你了

查看全部评分

发表于 2017-7-25 21:59:33 | 显示全部楼层
自从你往第三方原创开源区放帖子以后,布局都变了……
现在这个板块叫开源原创工具……
 楼主| 发表于 2017-7-25 22:07:47 | 显示全部楼层
回复 6# 老刘1号


    是吗,随便发发而已啦
 楼主| 发表于 2017-7-25 22:39:39 | 显示全部楼层
感谢Batcher的移帖..........好尴尬
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:28 , Processed in 0.031044 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表