批处理俄罗斯方块

转载 2012年03月23日 11:54:41
@echo off&rem 俄罗斯方块游戏,由netbenton编写,在bathome首发,完成时间:2009年9月25日 ver 2.0
if "%1" equ "para2" goto :para2

set "d-v=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))"
::函数d-v,把str中的图标数据,放置到总坐标空间中,如果有覆盖,则err=1。调用方法:(%d-v%)
::变量使用:one  x  y

set "d-e=set aec=!cr!!cr!        ┌───────────┐!cr!&(for /l %%a in (2,1,#) do for %%b in ("│!ebuf:@=%%a!│  !ebu%%a!") do set aec=!aec!        %%~b!cr!)&cls&echo;!aec!        └───────────┘"
::函数d-e,把总坐标空间显示出来,调用方法:(%d-e:#=行数%)
set ebu4=第!guan!关
set ebu6=总分:!fen!
set cr=^


::各种图标定义
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

echo 0 2 >%~n0.tmp
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
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
for /f "tokens=1,2" %%a in (%~n0.tmp) do (
if %%b geq 6 (call :error %%b&exit)
if %%a neq !test! (
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
(%d-v:#=3%)
                rem 调用函数把图标点放置到总坐标空间
if defined err (
endlocal
set/a m=bm,k=bk
set str=!bs!
if "%%b" equ "4" goto :jmpout
) else (
(%d-e:#=18%)
                        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
(%d-v:#=3%)
if defined err (
endlocal
goto :jmpout
) else (
(%d-e:#=18%)
endlocal
)
)

goto :cont

:jmpout
set/a n-=1
(%d-v:#=3%)
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退出
:p_lp
set/a n=n%%10+1
choice /c adwsgq /n >nul
>%~n0.tmp echo;%n% %errorlevel%
if %errorlevel% geq 6 exit
goto :p_lp

:error
if %1 equ 6 echo 谢谢使用,再见。。。
if %1 gtr 6 echo 对不起!choice.exe 文件不存在,不能运行。。。
ping -n 3 127.1 >nul
goto :eof

N6:批处理写的俄罗斯方块

转抄之,应该有不少经验可以借鉴。 @echo off&rem 俄罗斯方块游戏,由netbenton编写,在bathome首发,完成时间:2009年9月25日 ver 2.0 if "%1" equ ...
  • alga_1
  • alga_1
  • 2012年03月14日 19:06
  • 601

Java实现俄罗斯方块附源码

Java实现俄罗斯方块,稍后完善
  • codehxy
  • codehxy
  • 2014年05月11日 09:13
  • 12664

用c实现俄罗斯方块游戏过程

#include #include #include #include #include #define ROW_AR 28 #define COL_AR 14 #define BLOCK_X 4 ...

【C语言】实现俄罗斯方块

学习了C语言,写一个俄罗斯方块,代码绝对可以运行 大神勿笑,只适合初学者 本人也是菜鸟1、考虑怎么存储俄罗斯方块俄罗斯方块的形状一共有19种类型,如果拿数组来表示的话,可能会比较会浪费空间(网...

Swift游戏开发之俄罗斯方块:No.4 滴答作响的时钟机制

为什么标题要叫做“滴答作响的时钟机制”呢? 想必我们大家都玩过俄罗斯方块,那些不同形状的东西,就是哪些不同形状,你懂的,会随着游戏级别的提高而下降的越来越快。是的 ,我们也要模仿那样,做出我们自己的时...

CCF编程练习:俄罗斯方块(Java)

CCF编程练习:俄罗斯方块(Java) 问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏。 游戏在一个15行10列的方格图上进行,方格图上的每一个格子可能已经放置了方块,...

俄罗斯方块html小游戏

第一次学html、css、javascript,也第一次用他们来写东西——俄罗斯方块。总结了一下 一、需求 基本流程: 1、画表格  2、创建一个与表格里每个小格对应的标记数组 ...

easyX图形函数库开发的俄罗斯方块游戏(C版本)

大二的时候学了C语言后,利用easyX图形函数库写的一个简单版本的俄罗斯方块小游戏。游戏可使用方向键上下左右移动、变形,满行后自动消除,同时根据消行的数量进行延时的动态变化,计分等。 分享给大家,一起...
  • jing_x
  • jing_x
  • 2016年08月16日 10:19
  • 421

unity3D游戏开发实战原创视频讲座系列1之3D俄罗斯方块开发

讲解目录: 第一讲  游戏演示和游戏资源介绍 第二讲  Cube预制体和7种方块的制作 第三讲  方块的产生与下落 第四讲  方块的左右移动和旋转 第五讲  方块的停止下落 第六讲  方块的消除 第七...

CCF 201604-2 俄罗斯方块

问题描述   俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏。   游戏在一个15行10列的方格图上进行,方格图上的每一个格子可能已经放置了方块,或者没有放置方块。每一轮,都会有一个新...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:批处理俄罗斯方块
举报原因:
原因补充:

(最多只允许输入30个字)