|
sl543001
中级用户
  
积分 499
发帖 225
注册 2008-12-30
状态 离线
|
『楼 主』:
[原创]彩色贪吃蛇 绿色无3方文件 基于SYBC1.1.31
使用 LLM 解释/回答一下
纯属娱乐,不能控制,绿色,无3方文件,无临时文件,只能拿来看看...代码在2楼
Last edited by sl543001 on 2010-4-1 at 14:01 ]
Purely for entertainment, not controllable, green, no third-party files, no temporary files, only for looking... The code is on the second floor
Last edited by sl543001 on 2010-4-1 at 14:01 ]
附件
1: tcs.GIF (2010-3-31 21:12, 11.31 KiB)
|

SYBNQQ:354324773
|
|
2010-3-31 21:12 |
|
|
sl543001
中级用户
  
积分 499
发帖 225
注册 2008-12-30
状态 离线
|
『第 2 楼』:
使用 LLM 解释/回答一下
@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长度: ;
: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%
```batch
@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长度: ;
: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 |
|
|
sl543001
中级用户
  
积分 499
发帖 225
注册 2008-12-30
状态 离线
|
『第 3 楼』:
使用 LLM 解释/回答一下
1.1.31版的SYBC已经可以很方便的利用DEBUG直接在内存中运行
参数也可以放进SYBCS变量中,由SYBC自己去内存中找参数,无需DEBUG中转
利用1.1.31版的SYBC在内存中调用相对于1.1.21版以文件被调用要快很多
实测在斗地主脚本中,刷新速度快了三分之一以上
Version 1.1.31 of SYBC can already conveniently run directly in memory using DEBUG. Parameters can also be put into the SYBCS variable, and SYBC can find the parameters in memory by itself without the need for DEBUG to act as an intermediary. Using version 1.1.31 of SYBC to call in memory is much faster than being called as a file in version 1.1.21. In actual measurements, in the斗地主 script, the refresh speed is more than one-third faster.
|

SYBNQQ:354324773
|
|
2010-3-31 21:16 |
|
|
yiqingnan
初级用户
 
积分 38
发帖 24
注册 2010-3-21
状态 离线
|
|
2010-4-1 12:27 |
|
|
523066680
银牌会员
     SuperCleaner
积分 2362
发帖 1133
注册 2008-2-2
状态 离线
|
|
2010-4-1 18:14 |
|
|
zaixinxiangnian
初级用户
 
积分 151
发帖 106
注册 2009-10-9 来自 河南省
状态 离线
|
『第 6 楼』:
,,,
使用 LLM 解释/回答一下
sl543001老大,,,,真历害,,,这代码是自己写出来的吗????能给下解释该多好呀
sl543001 boss,,,,really awesome,,,is this code written by yourself????It would be great to have an explanation
|
|
2010-4-1 20:06 |
|
|
pan542
新手上路

积分 9
发帖 8
注册 2006-12-15
状态 离线
|
『第 7 楼』:
使用 LLM 解释/回答一下
太牛了。怎么玩呢?
That's really amazing. How to play it?
|
|
2010-4-2 09:15 |
|
|
sl543001
中级用户
  
积分 499
发帖 225
注册 2008-12-30
状态 离线
|
『第 8 楼』:
使用 LLM 解释/回答一下
注意:目前这个代码还不能控制,只能当动画看看,类似的代码还有几个.
写他们只是为了娱乐,顺便测试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极限长度
Note: Currently, this code cannot be controlled; it can only be viewed as an animation. There are several similar codes. They are written just for entertainment and to test the stability of SYBC.
=========================================
Code explanation:
Variables T0-TXXX are the coordinates of each part. 1 is the last one, and 0 is the one that has just expired and needs to be erased.
Variables BZ0-BZXXX are the graphics of each part. Generally, it's a tab character.
changdu is the length of the snake. T%changdu% represents the coordinates of the snake head.
Each time the snake moves forward, several FOR loops are executed to make T(n-1) = T(n) and BZ(n-1) = BZ(n).
=========================================
The following code is used to calculate which tab character the neck position should use
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!))))
===========================================
The :ran label is followed by random movement code. The variable HD controls the activity index of the little snake. The larger it is, the more it likes to go straight.
The :rans2 label is followed by randomly generating food. Initially, many will be generated at once.
bjs=0, bjx=24, bjz=0, bjy=39 are the activity limits of the snake. If it exceeds, it will appear on the opposite side.
bjh=23, bjl=38 are no longer useful.
changjx=300 is the limit length
|

SYBNQQ:354324773
|
|
2010-4-2 11:59 |
|
|
acaigg
初级用户
 
积分 115
发帖 92
注册 2010-12-24
状态 离线
|
|
2010-12-28 12:28 |
|
|