中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]彩色贪吃蛇 绿色无3方文件 基于SYBC1.1.31
作者:
标题: [原创]彩色贪吃蛇 绿色无3方文件 基于SYBC1.1.31 上一主题 | 下一主题
sl543001
中级用户




积分 499
发帖 225
注册 2008-12-30
状态 离线
『楼 主』:  [原创]彩色贪吃蛇 绿色无3方文件 基于SYBC1.1.31

纯属娱乐,不能控制,绿色,无3方文件,无临时文件,只能拿来看看...代码在2楼

[ Last edited by sl543001 on 2010-4-1 at 14:01 ]

附件 1: tcs.GIF (2010-3-31 21:12, 11.31 K)




SYBNQQ:354324773
2010-3-31 21:12
查看资料  发送邮件  发短消息 网志  OICQ (354324773)  编辑帖子  回复  引用回复
sl543001
中级用户




积分 499
发帖 225
注册 2008-12-30
状态 离线
『第 2 楼』:  


@echo off&color f1&title SYBN 贪吃蛇 主程序&SETLOCAL ENABLEDELAYEDEXPANSION&(CHCP 437&GRAFTABL 936)>NUL
SET SYBCOM=A100`80BE AC00 3C 375 83E9 3C00 ACFF 4275`2CBE AC00 E08A 86AC 50C4 BE1F 0 3CAC`7553 ACFB 593C F675 3CAC 7542 ACF1 433C`EC75 3CAC 7553 ACE7 3D3C E275 14EB 3CAC`743A 3C0F 740D 3C4D 7400 8349 1EE 48EB`54B4 E8AC 93 ADE8 3C00 7F18 8A37 E8F0`87 A1E8 3C00 7F4F 8A2B B0D0 F602 50E2`A0B0 E6F6 35F 57F8 3CAC 7424 E80A 6A`49E8 8A00 EBCA E817 3F CA8A 10EB B0`16CD C48A 4CB4 21CD 815F A0C7 5700 B850`B800 750 2B5A 8AEE ACD1 243C D974 3B3C`8C74 D3C DE74 3C DA74 233C 575 D783`EB01 AA01 C28A EBAA E8E0 1D 3C93 7E39`402 8009 39FB 37E C380 2409 800F FE3`10B2 E2F6 C302 D08A ACC3 203C FB74 D3C`A274 3C 9E74 D88A 3CAC 7420 3CEC 740D`3C93 7400 C38F 2C93 8030 30EB AB4 E4F6`C302 C3`
SET SYBCV=`A80`DB FF``RCX`120`G`Q
ECHO {贪吃蛇 脚本动画} 内含SYBC 1.1.31 初始化,按任意键继续...
SET V=`A80`DB 00``RCX`120`g`Q
(ECHO.%SYBCOM:`=&ECHO.DW %&ECHO.%V:`=&ECHO.%)|DEBUG>nul
SET SYBK=SYBK1=┌─┐│└┘┼;SYBK2=┏━┓┃┗┛╋;SYBK3=╔═╗║╚╝╬;c1=1f;c2=fa;c3=f2;c4=f5;ls=01
SET %SYBK:;=&SET %
set ys=3
:new
cls
for /l %%a in (10000,1,12500) do set s%%a=0
set thf=+1&set tlf=+0&set f1=-1
set /a th=12,tl=15,chang=3,t3=11230,t1=11230,t2=11230,cqs=0,bjs=0,bjx=24,bjz=0,bjy=39,bjh=23,bjl=38,hd=10,changjx=300,ranc=0  
for /l %%a in (1,1,100) do title 正在放置食物:%%a/100&&call :rans2
:go
title 小蛇出动咯...
set /a ranc+=1
if %ranc% gtr 40 goto :new
::title %t0%,%BZ0%,%t1%,%BZ1%,%t2%,%BZ2%,%t3%,%BZ3%,%time%,%t%
if %chang% gtr %changjx% goto :new
if %th% gtr %BJx% if %cqs% == 1 (goto over) else set th=%BJs%
if %th% lss %BJs% if %cqs% == 1 (goto over) else set th=%BJx%
if %tl% gtr %BJy% if %cqs% == 1 (goto over) else set tl=%BJz%
if %tl% lss %BJz% if %cqs% == 1 (goto over) else set tl=%BJy%
set /a t=10000+th*100+tl*2
if !S%t%! == 1 set /a tl=tlc,th=thc&&goto ran
set ranc=0
if !S%t%! == 2 call :rans
set s%t%=1
for /l %%a in (1,1,%chang%) do set /a a=%%a-1&set t!a!=!t%%a!&set BZ!a!=!BZ%%a!
set t%chang%=%t%
if not "%t0%" == "" set s%t0%=0&set SYBCS=%t0%f1  
set /a BZW=chang-1
set /a BZW2=chang-2
for /l %%a in (2,1,%BZW2%) do set SYBCS=!SYBCS!;:!t%%a!1f!BZ%%a!
set /a thc=th,tlc=tl
set /a tc=10000+thc*100+tlc*2
if %thf% == -0 if %f1% == -1 (set bz=!SYBK%ys%:~0,1!) else (if %f1% == +1 (set bz=!SYBK%ys%:~4,1!) else (if %f1% == -0 (set bz=!SYBK%ys%:~1,1!) else (if %f1% == +0 (set bz=!SYBK%ys%:~1,1!))))
if %thf% == +0 if %f1% == -1 (set bz=!SYBK%ys%:~2,1!) else (if %f1% == +1 (set bz=!SYBK%ys%:~5,1!) else (if %f1% == -0 (set bz=!SYBK%ys%:~1,1!) else (if %f1% == +0 (set bz=!SYBK%ys%:~1,1!))))
if %thf% == -1 if %f1% == -1 (set bz=!SYBK%ys%:~3,1!) else (if %f1% == +1 (set bz=!SYBK%ys%:~3,1!) else (if %f1% == -0 (set bz=!SYBK%ys%:~5,1!) else (if %f1% == +0 (set bz=!SYBK%ys%:~4,1!))))
if %thf% == +1 if %f1% == -1 (set bz=!SYBK%ys%:~3,1!) else (if %f1% == +1 (set bz=!SYBK%ys%:~3,1!) else (if %f1% == -0 (set bz=!SYBK%ys%:~2,1!) else (if %f1% == +0 (set bz=!SYBK%ys%:~0,1!))))
set BZ%BZW%=%BZ%
set f1=%thf%
set SYBCS=!SYBCS!;:!to!1f%bz%
set BZ%chang%=%bz%
set to=%tc%
set bz2=%bz%
set SYBCS=!SYBCS!;:!t%chang%!C1:D
::echo %SYBCS%>>sy.txt
call :SYBCS
::pause>nul
:ran
set /a ran=%random%%%%hd%
if %ran% == 0 if not %thf% == -1 set thf=+1&set tlf=-0
if %ran% == 1 if not %thf% == +1 set thf=-1&set tlf=+0
if %ran% == 2 if not %tlf% == -1 set tlf=+1&set thf=-0
if %ran% == 3 if not %tlf% == +1 set tlf=-1&set thf=+0
set /a th=th%thf%,tl=tl%tlf%
goto go
:rans
set !S%t%!=0
set /a chang2=chang,chang+=1
set t%chang%=!t%chang2%!
call :SYBC 12400f0长度: [ $f2%chang%$f0 / %changjx% ]  ;
:rans2
set /a rh=%random%%%bjh+bjs,rl=%random%%%bjl+bjz
set /a rt=10000+rh*100+rl*2
if "!s%rt%!" == "1" goto rans2
if "!s%rt%!" == "2" goto rans2
set S%rt%=2
call :SYBC %rt%f2◎
goto :eof
:over
pause
:SYBCS
(ECHO.%SYBCOM:`=&ECHO.DW %&ECHO.%SYBCV:`=&ECHO.%)|DEBUG>NUL
goto :EOF
:SYBC
IF "%1" == "" SET SYBCCD=00&GOTO SYBCC
SET SYBCCD=54
set SYBCC=%*
:SYBCC
SET V=`A80`DB %SYBCCD% 00 "%SYBCC%" 0D``RCX`120`G`Q
(ECHO.%SYBCOM:`=&ECHO.DW %&ECHO.%V:`=&ECHO.%)|DEBUG>NUL
EXIT /B %ERRORLEVEL%




SYBNQQ:354324773
2010-3-31 21:12
查看资料  发送邮件  发短消息 网志  OICQ (354324773)  编辑帖子  回复  引用回复
sl543001
中级用户




积分 499
发帖 225
注册 2008-12-30
状态 离线
『第 3 楼』:  

1.1.31版的SYBC已经可以很方便的利用DEBUG直接在内存中运行
参数也可以放进SYBCS变量中,由SYBC自己去内存中找参数,无需DEBUG中转
利用1.1.31版的SYBC在内存中调用相对于1.1.21版以文件被调用要快很多
实测在斗地主脚本中,刷新速度快了三分之一以上



SYBNQQ:354324773
2010-3-31 21:16
查看资料  发送邮件  发短消息 网志  OICQ (354324773)  编辑帖子  回复  引用回复
yiqingnan
初级用户





积分 38
发帖 24
注册 2010-3-21
状态 离线
『第 4 楼』:  坐沙发了

很好很强大

2010-4-1 12:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 5 楼』:  

那么多点…… 这下吃不消了……



综合型编程论坛

我的作品索引
  
2010-4-1 18:14
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
zaixinxiangnian
初级用户





积分 151
发帖 106
注册 2009-10-9
来自 河南省
状态 离线
『第 6 楼』:  ,,,

sl543001老大,,,,真历害,,,这代码是自己写出来的吗????能给下解释该多好呀

2010-4-1 20:06
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (657614933)  编辑帖子  回复  引用回复
pan542
新手上路





积分 9
发帖 8
注册 2006-12-15
状态 离线
『第 7 楼』:  

太牛了。怎么玩呢?

2010-4-2 09:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sl543001
中级用户




积分 499
发帖 225
注册 2008-12-30
状态 离线
『第 8 楼』:  

注意:目前这个代码还不能控制,只能当动画看看,类似的代码还有几个.
写他们只是为了娱乐,顺便测试SYBC的稳定性.
=========================================
代码解释:[不知道大家最需要解释代码的那一部分,所以先只解释贪吃蛇的大体思路]
变量T0-TXXX是射各个部分的坐标,1是最后一个,0是刚过期需要擦掉的哪个
变量BZ0-BZXXX是射各个部分的图形,一般是一个制表符
变量changdu是射的长度,T%changdu%代表射头的坐标
蛇每前进一不都会执行几个FOR使T(n-1)=T(n)  BZ(n-1)=BZ(n)
=========================================

下面的代码用于计算脖子的位置应该用哪个制表符
if %thf% == -0 if %f1% == -1 (set bz=!SYBK%ys%:~0,1!) else (if %f1% == +1 (set bz=!SYBK%ys%:~4,1!) else (if %f1% == -0 (set bz=!SYBK%ys%:~1,1!) else (if %f1% == +0 (set bz=!SYBK%ys%:~1,1!))))
if %thf% == +0 if %f1% == -1 (set bz=!SYBK%ys%:~2,1!) else (if %f1% == +1 (set bz=!SYBK%ys%:~5,1!) else (if %f1% == -0 (set bz=!SYBK%ys%:~1,1!) else (if %f1% == +0 (set bz=!SYBK%ys%:~1,1!))))
if %thf% == -1 if %f1% == -1 (set bz=!SYBK%ys%:~3,1!) else (if %f1% == +1 (set bz=!SYBK%ys%:~3,1!) else (if %f1% == -0 (set bz=!SYBK%ys%:~5,1!) else (if %f1% == +0 (set bz=!SYBK%ys%:~4,1!))))
if %thf% == +1 if %f1% == -1 (set bz=!SYBK%ys%:~3,1!) else (if %f1% == +1 (set bz=!SYBK%ys%:~3,1!) else (if %f1% == -0 (set bz=!SYBK%ys%:~2,1!) else (if %f1% == +0 (set bz=!SYBK%ys%:~0,1!))))
===========================================

:ran标签后是随机运动代码,变量HD控制小蛇的活动指数,越大越喜欢走直线.
:rans2标签后是随机生成食物,最开始会一次生成很多
bjs=0,bjx=24,bjz=0,bjy=39是小蛇的活动区限,超出则出现在对面
bjh=23,bjl=38已经没用了
changjx=300极限长度



SYBNQQ:354324773
2010-4-2 11:59
查看资料  发送邮件  发短消息 网志  OICQ (354324773)  编辑帖子  回复  引用回复
acaigg
初级用户





积分 115
发帖 92
注册 2010-12-24
状态 离线
『第 9 楼』:  

希望能改到能控制

2010-12-28 12:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: