批处理写的俄罗斯方块

  1 @echo off&rem 俄罗斯方块游戏,由netbenton编写,在bathome首发,完成时间:2009年9月25日 ver 2.0
  2 if "%1" equ "para2" goto :para2
  3
  4 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))"
  5 ::函数d-v,把str中的图标数据,放置到总坐标空间中,如果有覆盖,则err=1。调用方法:(%d-v%)
  6 ::变量使用:one  x  y
  7
  8 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!        └───────────┘"
  9 ::函数d-e,把总坐标空间显示出来,调用方法:(%d-e:#=行数%)
 10 set ebu4=第!guan!关
 11 set ebu6=总分:!fen!
 12 set cr=^
 13
 14
 15 ::各种图标定义
 16 set ga1=0 1 5 6
 17 set ga2=1 4 5 8
 18 ::■■
 19 ::  ■■
 20 set gb1=1 2 4 5
 21 set gb2=0 4 5 9
 22 ::  ■■
 23 ::■■
 24
 25 set za1=4 5 6 7
 26 set za2=1 5 9 d
 27 ::■■■■
 28
 29 set qa1=1 5 9 8
 30 set qa2=0 4 5 6
 31 set qa3=0 1 4 8
 32 set qa4=0 1 2 6
 33 ::■■
 34 ::  ■
 35 ::  ■
 36
 37 set qb1=0 4 8 9
 38 set qb2=0 1 2 4
 39 set qb3=0 1 5 9
 40 set qb4=2 4 5 6
 41 ::■■
 42 ::■
 43 ::■
 44
 45 set ta1=0 1 4 5
 46 ::■■
 47 ::■■
 48
 49 set sa1=0 1 2 5
 50 set sa2=1 4 5 9
 51 set sa3=1 4 5 6
 52 set sa4=0 4 5 8
 53 ::  ■
 54 ::■■■
 55 set tw1=0 1
 56 set tw2=0 4
 57
 58 set on1=0
 59 set on2=0
 60
 61 set sh1=1 4 5 6 9
 62 set sh2=1 4 5 6 9
 63
 64 set ao1=0 1 2 4 6
 65 set ao2=0 1 4 8 9
 66 set ao3=0 4 5 6 2
 67 set ao4=0 1 5 8 9
 68
 69 set tt1=0 1 2 5 9
 70 set tt2=0 4 8 5 6
 71 set tt3=1 5 8 9 a
 72 set tt4=2 4 5 6 a
 73
 74
 75 ::cdef
 76 ::89ab
 77 ::4567
 78 ::0123
 79
 80 echo 0 2 >%~n0.tmp
 81 start "aswd" %0 para2
 82 ::起动控制窗口
 83
 84 set k3=k%%=mx,k+
 85 set k4=down
 86 set k1=m-
 87 set k2=m+
 88 set k5=t+
 89 ::按键定义
 90
 91 setlocal enabledelayedexpansion
 92 for /l %%a in (0,1,10) do (set "ebuf=!ebuf!^[email protected]%%a^!")
 93 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 (
 94 for /f "tokens=1,2 delims=_" %%b in ("%%a") do (
 95 set _%%b=%%c
 96 for /l %%d in (1,1,%%c) do set/a nx+=1&set ran!nx!=%%b%%d
 97 )
 98 )
 99 ::定义各种图型的可变型数,及单个图的随机号
100
101 :restart
102 for /l %%a in (0,1,18) do (for /l %%b in (0,1,10) do set r%%a.%%b= )
103 set/a fen=0,guan=1
104 ::初始化坐标空间18行,10列
105
106
107 :loop
108 set/a "m=4,t=2,n=1,down=450/(guan<<2),bti=0"
109 set/a r=!random!%%nx+1
110 set err=
111
112 set ttr=!_ttr!
113 set _ttr=!ran%r%!
114 ::随机取一个图标,
115
116 if not defined ttr goto :loop
117
118 set mx=!_%ttr:~,2%!
119 set k=%ttr:~2%
120 set str=!%ttr%!
121
122 set _str=!%_ttr%!
123
124
125 setlocal enabledelayedexpansion
126 for %%a in (!_str!) do set/a one=0x%%a,x=one/4+8,y=one%%4&set kk!x!.!y!=■
127 for /l %%a in (8,1,11) do for /l %%b in (0,1,3) do (
128 if defined kk%%a.%%b (set kk%%a=!kk%%a!!kk%%a.%%b!) else (set kk%%a=!kk%%a! )
129 )
130 endlocal&set ebu8=%kk8%&set ebu9=%kk9%&set ebu10=%kk10%&set ebu11=%kk11%
131 ::对预备图标的处理
132
133
134 :cont
135 for /f "tokens=1,2" %%a in (%~n0.tmp) do (
136 if %%b geq 6 (call :error %%b&exit)
137 if %%a neq !test! (
138 set bs=!str!&set/a bm=m,bk=k
139 set/a !k%%b!=1
140 if "%%b" equ "3" (for %%b in ("!ttr:~,2!!k!") do set str=!%%~b!)
141 setlocal enabledelayedexpansion
142 (%d-v:#=3%)
143                 rem 调用函数把图标点放置到总坐标空间
144 if defined err (
145 endlocal
146 set/a m=bm,k=bk
147 set str=!bs!
148 if "%%b" equ "4" goto :jmpout
149 ) else (
150 (%d-e:#=18%)
151                         rem 调用显示函数
152 endlocal
153 )
154 )
155 set test=%%a
156 )
157
158
159 set ti=1!time:~7,1!!time:~9,2!
160 if !ti! lss !bti! (set /a tn=ti-bti+1000) else (set /a tn=ti-bti)
161 if !tn! gtr !down! (
162 set/a bti=ti,n+=1
163 setlocal enabledelayedexpansion
164 (%d-v:#=3%)
165 if defined err (
166 endlocal
167 goto :jmpout
168 ) else (
169 (%d-e:#=18%)
170 endlocal
171 )
172 )
173
174 goto :cont
175
176 :jmpout
177 set/a n-=1
178 (%d-v:#=3%)
179 set m=18
180
181 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)
182
183 if !m! neq 1 (
184 for /l %%a in (!m!,-1,2) do set "e%%a=           "
185 for /l %%a in (18,-1,2) do (
186 for /l %%b in (0,1,10) do set r%%a.%%b=!e%%a:~%%b,1!
187 )
188 set/a "fen=fen+(m-1)*10,guan=fen/150+1"
189 )
190
191 if !n! leq 2 (
192 echo 游戏结束!
193 ping -n 3 127.1 >nul
194 goto :restart
195 )
196 goto :loop
197
198 :para2
199 mode con: cols=30 lines=2
200 echo a左 d右 w转 s加速 q退出
201 :p_lp
202 set/a n=n%%10+1
203 choice /c adwsgq /n >nul
204 >%~n0.tmp echo;%n% %errorlevel%
205 if %errorlevel% geq 6 exit
206 goto :p_lp
207
208 :error
209 if %1 equ 6 echo 谢谢使用,再见。。。
210 if %1 gtr 6 echo 对不起!choice.exe 文件不存在,不能运行。。。
211 ping -n 3 127.1 >nul
212 goto :eof

时间: 2024-11-13 14:22:53

批处理写的俄罗斯方块的相关文章

60行代码:Javascript 写的俄罗斯方块游戏

先看效果图: 游戏结束图: javascript实现源码: <!doctype html> <html><head><title>俄罗斯方块</title> <meta name="Description" content="俄罗斯方块Javascript实现"> <meta name="Keywords" content="俄罗斯方块,Javascript,

很强大的shell写的俄罗斯方块

网上看到的一个用linux的shell脚本写的俄罗斯方块. 是我至今见过写的最牛逼的shell了.共享一下. 原作者信息在脚本的凝视中有. 下载地址:点击下载 #!/bin/bash # Tetris Game # 10.21.2003 xhchen<[email][email protected][/email]> #APP declaration APP_NAME="${0##*[\\/]}" APP_VERSION="1.0" #颜色定义 cRed

【转】shell脚本写的俄罗斯方块游戏

作者:[email protected] [转载时请以超链接形式标明文章] 链接:http://www.cnblogs.com/david-zhang-index/p/4185381.html 亲测一个很好玩的shell脚本写的俄罗斯方块游戏,脚本来自互联网,不知是哪位大师写的,有兴趣学习shell脚本的同学不妨可以揣摩一下,转载请说明. #!/bin/bash # Tetris Game # 10.21.2003 xhchen<[email][email protected][/email]>

【分享】60行代码:Javascript 写的俄罗斯方块游戏

效果如下,可测试: javascript实现源码: <!doctype html> <html><head><title>俄罗斯方块</title> <meta name="Description" content="俄罗斯方块Javascript实现"> <meta name="Keywords" content="俄罗斯方块,Javascript,实现,短

非常强大的shell写的俄罗斯方块

网上看到的一个用linux的shell脚本写的俄罗斯方块.是我至今见过写的最牛逼的shell了.共享一下. 原作者信息在脚本的注释中有. #!/bin/bash # Tetris Game # 10.21.2003 xhchen<[email][email protected][/email]> #APP declaration APP_NAME="${0##*[\\/]}" APP_VERSION="1.0" #颜色定义 cRed=1 cGreen=2

整理一下以前写的俄罗斯方块的文章

很早以前写了一些俄罗斯方块系列的文章,很多人读,一直有很多人留言提问,我整理下,定置起来,如果有时间,根据自己的理解,继续完善一下.希望大家喜欢. 学习C#从俄罗斯方块开始(一)概述 学习C#从俄罗斯方块开始(二)俄罗斯方块的规则和算法的简单实现 学习C#从俄罗斯方块开始(三)俄罗斯方块的优化和美化 因为时间关系,根据自己对俄罗斯方块的理解些了以上的三个文章,大家希望看到如何更新,写一些什么内容,我继续来完善吧. 版权声明:本文为博主原创文章,未经博主允许不得转载.

用JAVA写的俄罗斯方块

业务需求->业务对象模型(对象关系)->数据建模->类的设计->概要编码->详细功能设计 基本规则: 1)首先呢,俄罗斯方块都是由一个个小格子构成的,我们叫它Cell: 行宽:10,列高:20,以每个小正方形为单位 2)其次,所有的俄罗斯方块都是一组由4个小型正方形组成的规则图形,我们叫它Tetromino    分别为:S.Z.L.J.I.O.T这几种 哈哈,有了这样的分析,就可以构建数据结构设计了 数据结构设计: Cell     格子|--     int row 行|

共享一个以前写的俄罗斯方块

源于几年前一次在百度贴吧开贴讨论Swing MVC,最近又间歇性的把代码整理了一下,然后从bitbucket挪到了github,不得不说这年头代码要是不放在github就好像白写了一样. https://github.com/raistlic/raistlic-app-tetris 版权声明:本文为博主原创文章,未经博主允许不得转载.

当年写的俄罗斯方块(现在更喜欢研究别人的代码)

这个东西大概是4年多前写的,那时写代码很疯狂,不知疲惫,一写就是好几万行.现在则更喜欢研究别人的代码,有时也写些测试代码,或者研究开源的东西.希望真正有些积累后, 再考虑写自己的东西. 感觉当时大的框架做的还行,源代码或许对新手有用. 源代码下载:sourceCode 上几个截图 单人游戏: 人机对战: 设置: posted on 2012-05-03 23:00 http://www.cppblog.com/weiym/archive/2012/05/03/173616.html http:/