返回列表 发帖
四个批处理全部不能在WIN7环境下运行。

TOP

2018.10.6前来考古

TOP

本帖最后由 netbenton 于 2021-12-7 00:10 编辑
@echo off&rem 俄罗斯方块游戏,win10测试运行。由netbenton编写,在bathome首发,完成时间:20211206
if "%1" equ "para2" goto :para2
rem 取控制符到变量。(1BH=27=033)
for /F "tokens=1 delims=#" %%a in ('"prompt #$E# & echo on & for %%b in (1) do rem"') do set "ESC=%%a"
set ebu4=第!guan!
set ebu6=总分:!fen!
::各种图标定义
set ga1=0 1 5 6
set ga2=1 4 5 8
::■■
::  ■■
set gb1=1 2 4 5
set gb2=0 4 5 9
::  ■■
::■■
set za1=4 5 6 7
set za2=1 5 9 d
::■■■■
set qa1=1 5 9 8
set qa2=0 4 5 6
set qa3=0 1 4 8
set qa4=0 1 2 6
::■■
::  ■
::  ■
  
set qb1=0 4 8 9
set qb2=0 1 2 4
set qb3=0 1 5 9
set qb4=2 4 5 6
::■■
::■
::■
set ta1=0 1 4 5
::■■
::■■
set sa1=0 1 2 5
set sa2=1 4 5 9
set sa3=1 4 5 6
set sa4=0 4 5 8
::  ■
::■■■
set tw1=0 1
set tw2=0 4
set on1=0
set on2=0
set sh1=1 4 5 6 9
set sh2=1 4 5 6 9
set ao1=0 1 2 4 6
set ao2=0 1 4 8 9
set ao3=0 4 5 6 2
set ao4=0 1 5 8 9
set tt1=0 1 2 5 9
set tt2=0 4 8 5 6
set tt3=1 5 8 9 a
set tt4=2 4 5 6 a
::cdef
::89ab
::4567
::0123
start "aswd" %0 para2
::起动控制窗口
set k3=k%%=mx,k+
set k4=down
set k1=m-
set k2=m+
set k5=t+
::按键定义
setlocal enabledelayedexpansion
for /l %%a in (0,1,10) do (set "ebuf=!ebuf!^!r@.%%a^!")
for %%a in (sa_4 ta_1 qb_4 qa_4 za_2 ga_2 gb_2 tw_2 on_2 sh_2 ao_4 tt_4) do (
for /f "tokens=1,2 delims=_" %%b in ("%%a") do (
  set _%%b=%%c
  for /l %%d in (1,1,%%c) do set/a nx+=1&set ran!nx!=%%b%%d
)
)
::定义各种图型的可变型数,及单个图的随机号
:restart
cls
echo 0 2 >%~n0.tmp
for /l %%a in (0,1,18) do (for /l %%b in (0,1,10) do set r%%a.%%b= )
set/a fen=0,guan=1
::初始化坐标空间18行,10
:loop
set/a "m=4,t=2,n=1,down=450/(guan<<2),bti=0"
set/a r=!random!%%nx+1
set err=
set ttr=!_ttr!
set _ttr=!ran%r%!
::随机取一个图标,
if not defined ttr goto :loop
set mx=!_%ttr:~,2%!
set k=%ttr:~2%
set str=!%ttr%!
set _str=!%_ttr%!
setlocal enabledelayedexpansion
for %%a in (!_str!) do set/a one=0x%%a,x=one/4+8,y=one%%4&set kk!x!.!y!=■
for /l %%a in (8,1,11) do for /l %%b in (0,1,3) do (
if defined kk%%a.%%b (set kk%%a=!kk%%a!!kk%%a.%%b!) else (set kk%%a=!kk%%a! )
)
endlocal&set ebu8=%kk8%&set ebu9=%kk9%&set ebu10=%kk10%&set ebu11=%kk11%
::对预备图标的处理
:cont
set/p var=<%~n0.tmp
for /f "tokens=1,2" %%a in ("%var%") do (
if %%a neq !test! (
  if %%b geq 6 call :error %%b&del/q %~n0.tmp&exit
  set bs=!str!&set/a bm=m,bk=k
  set/a !k%%b!=1
  if "%%b" equ "3" (for %%b in ("!ttr:~,2!!k!") do set str=!%%~b!)
  setlocal enabledelayedexpansion
for %%a in (!str!) do (set/a one=0x%%a,x=one/4+n,y=one%%4+m
for %%b in ("r!x!.!y!") do (
if "!%%~b!" equ " " (set r!x!.!y!=■) else (set err=1)
)
)
  rem 调用函数把图标点放置到总坐标空间
  if defined err (
   endlocal
   set/a m=bm,k=bk
   set str=!bs!
  ) else (
echo;%ESC%[0;0H
echo;
echo;
for /l %%a in (2,1,18) do (
for %%b in ("│!ebuf:@=%%a!│  !ebu%%a!") do echo; %%~b
)
echo;
   rem 调用显示函数
   endlocal
  )
)
set test=%%a
)
set ti=1!time:~7,1!!time:~9,2!
if !ti! lss !bti! (set /a tn=ti-bti+1000) else (set /a tn=ti-bti)
if !tn! gtr !down! (
set/a bti=ti,n+=1
setlocal enabledelayedexpansion
for %%a in (!str!) do (set/a one=0x%%a,x=one/4+n,y=one%%4+m
for %%b in ("r!x!.!y!") do (
if "!%%~b!" equ " " (set r!x!.!y!=■) else (set err=1)
))
if defined err (
  endlocal
  goto :jmpout
) else (
echo;%ESC%[0;0H
echo;
echo; ┌──────────────────────┐
for /l %%a in (2,1,18) do (
for %%b in ("│!ebuf:@=%%a!│  !ebu%%a!") do echo; %%~b
)
echo; └──────────────────────┘
  endlocal
)
)
goto :cont
:jmpout
set/a n-=1
for %%a in (!str!) do (set/a one=0x%%a,x=one/4+n,y=one%%4+m
for %%b in ("r!x!.!y!") do (
if "!%%~b!" equ " " (set r!x!.!y!=■) else (set err=1)
)
)
set m=18
for /l %%a in (18,-1,2) do for %%b in ("!ebuf:@=%%a!") do if "%%~b" neq "■■■■■■■■■■■" (set e!m!=%%~b&set/a m-=1)
if !m! neq 1 (
for /l %%a in (!m!,-1,2) do set "e%%a=           "
for /l %%a in (18,-1,2) do (
  for /l %%b in (0,1,10) do set r%%a.%%b=!e%%a:~%%b,1!
)
set/a "fen=fen+(m-1)*10,guan=fen/150+1"
)
if !n! leq 2 (
echo 游戏结束!
ping -n 3 127.1 >nul
goto :restart
)
goto :loop
:para2
mode con: cols=30 lines=2
echo a左 d右 w转 s加速 q退出
for %%a in (a d w s g q) do set /a n+=1,K%%a=n
:p_lp
for /F "tokens=2 delims=键" %%L in ('xcopy /w . 2^>nul') do set k=%%L
if not defined K%k% goto :p_lp
set/a n=n%%50+1,k=K%k%
>%~n0.tmp echo;%n% %k%
if %k% geq 6 exit
for /l %%a in (1,1,25) do ver>nul
goto :p_lp
:error
if %1 equ 6 echo 谢谢使用,再见。。。
ping -n 3 127.1 >nul
goto :eofCOPY
1

评分人数

TOP

回复 33# netbenton 你的代码还是不能在win7下运行啊,显示
[

TOP

回复 34# sds
控制台虚拟终端序列仅支持 Windows 10 / Windows 11
详见:https://learn.microsoft.com/zh-cn/windows/console/console-virtual-terminal-sequences
Why join the navy, if you can be a pirate? - Steve Jobs

TOP

佩服!批处理侦测输入没几个做的这么好的

TOP

?孵???蝵?孵?嚗?00?蛹銝?? 執行的程式或批次檔。
'?銵?30??' 不是內部或外部命令、可執行的程式或批次檔。
'?0??' 不是內部或外部命令、可執行的程式或批次檔。新啟動。
'瘨?銵?70??' 不是內部或外部命令、可執行的程式或批次檔。
'ping' 不是內部或外部命令、可執行的程式或批次檔。
霂瑁摰???? 檔案。 令、可執行的程式或批次檔。
摰?嚗?不是內部或外部命令、可執行的程式或批次檔。
摰?嚗?不是內部或外部命令、可執行的程式或批次檔。新啟動。
摰?嚗?不是內部或外部命令、可執行的程式或批次檔。
'ping' 不是內部或外部命令、可執行的程式或批次檔。
系統找不到指定的檔案。 令、可執行的程式或批次檔。
摰?嚗?不是內部或外部命令、可執行的程式或批次檔。
摰?嚗?不是內部或外部命令、可執行的程式或批次檔。新啟動。
'ping' 不是內部或外部命令、可執行的程式或批次檔。
系統找不到指定的檔案。 令、可執行的程式或批次檔。
摰?嚗?不是內部或外部命令、可執行的程式或批次檔。
摰?嚗?不是內部或外部命令、可執行的程式或批次檔。
'ping' 不是內部或外部命令、可執行的程式或批次檔。新啟動。
系統找不到指定的檔案。
摰?嚗?不是內部或外部命令、可執行的程式或批次檔。
摰?嚗?不是內部或外部命令、可執行的程式或批次檔。
'ping' 不是內部或外部命令、可執行的程式或批次檔。
系統找不到指定的檔案。、可執行的程式或批次檔。 重新啟動。
摰?嚗????指定的檔案。
摰?嚗?不是內部或外部命令、可執行的程式或批次檔。
'ping' 不是內部或外部命令、可執行的程式或批次檔。
系統找不到指定的檔案。 令、可執行的程式或批次檔。
'?' 不是內部或外部命令、可執行的程式或批次檔。 重新啟動。
摰?嚗????指定的檔案。
'ping' 不是內部或外部命令、可執行的程式或批次檔。
系統找不到指定的檔案。
'mode' 不是內部或外部命令、可執行的程式或批次檔。
'?' 不是內部或外部命令、可執行的程式或批次檔。 重新啟動。
系統找不到指定的檔案。
這個時候不應有 )。

[處理結束,代碼為 255 (0x000000ff)]
您現在可以使用 Ctrl+D 關閉此終端機,或按 Enter 重新啟動。

TOP

回复 37# GenshinImpact


请参考Q-04把test.bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

win11下可以运行,保存ANSI编码格式的bat文件
用右键“管理员身份运行”

可以界面有点小

TOP

返回列表