标题: [ 新手习题 小结 ] 批处理随机显示俄罗斯方块中一种图案 [打印本页]
作者: wxcute 时间: 2009-3-8 12:56 标题: [ 新手习题 小结 ] 批处理随机显示俄罗斯方块中一种图案
[ 新手习题 小结 ] 随机显示俄罗斯方块中一种图案
目的:学会怎么将变量转化为图案,以达到格式化输出的目的。
要求:随机显示其中一种图案。
评分:代码可读性 1 分,思路新颖独特 2 分;
首个新方法 6 分,第二个 4 分,依次类推,最少 2 分;
图案有旋转变形另加 2 分;
一人多种方法,新方法追加 3 分,已经出现过的方法追加 1 分。■■■■
■■■ ■■■
■ ■
■
■■■
■■ ■■
■■ ■■
■■
■■
[ 本帖最后由 wxcute 于 2009-3-8 13:00 编辑 ]
作者: dongdong 时间: 2009-3-8 14:10
@echo off
setlocal enabledelayedexpansion
set dst=■■■■
set /a x=%random%%%4
set /a num=4-%X%
if not %x%==0 (goto :_get) else (goto :_next)
: _get
if not %num%==0 (
for %%c in (%dst%) do (
set mm=%%c
echo !mm:~0,%x%!
echo. &&echo !mm:~0,%num%! 2>nul
pause>nul )
) else (echo !mm:~0,%x%!)
goto :end
: _next
echo !mm:~0,%num%!
:end
作者: dongdong 时间: 2009-3-8 14:13
我新手 只能做到这样了 期待高手指点了
作者: stuqx 时间: 2009-3-8 14:37
- @echo off
- :begin
- set /a num=%RANDOM%%%8
- if !num!==1 (goto 1)
- if !num!==2 (goto 2)
- if !num!==3 (goto 3)
- if !num!==4 (goto 4)
- if !num!==5 (goto 5)
- if !num!==6 (goto 6)
- if !num!==7 (goto 7)
- if !num!==0 (goto begin)
-
- :1
- echo ■■■■
- goto :eof
-
- :2
- echo ■■■
- echo ■
- goto :eof
-
- :3
- echo ■■■
- echo ■
- goto :eof
-
- :4
- echo ■
- echo ■■■
- goto :eof
-
- :5
- echo ■■
- echo ■■
- goto :eof
-
- :6
- echo ■■
- echo ■■
- goto :eof
-
- :7
- echo ■■
- echo ■■
- goto :eof
复制代码
不好意思 没注意到
[ 本帖最后由 stuqx 于 2009-3-8 20:24 编辑 ]
作者: stuqx 时间: 2009-3-8 15:01
学习2楼的 将我的随机数改一下 呵呵 这样可以少个步骤
结果如下- @echo off
- set /a num=%RANDOM%%%7
- set /a num=7-%num%
-
- if !num!==1 (goto 1)
-
- if !num!==2 (goto 2)
-
- if !num!==3 (goto 3)
-
- if !num!==4 (goto 4)
-
- if !num!==5 (goto 5)
-
- if !num!==6 (goto 6)
-
- if !num!==7 (goto 7)
-
- :1
- echo ■■■■
- goto :eof
-
- :2
- echo ■■■
- echo ■
- goto :eof
-
- :3
- echo ■■■
- echo ■
- goto :eof
-
- :4
- echo ■
- echo ■■■
- goto :eof
-
- :5
- echo ■■
- echo ■■
- goto :eof
-
- :6
- echo ■■
- echo ■■
- goto :eof
-
- :7
- echo ■■
- echo ■■
- goto :eof
复制代码
[ 本帖最后由 stuqx 于 2009-3-8 20:25 编辑 ]
作者: dongdong 时间: 2009-3-8 17:07
学习了 看来我把问题复杂化了
作者: dongdong 时间: 2009-3-8 17:20
发错了 抱歉
───────────────── 版主回复 ─────────────────
执行:wxcute [2009-03-08]
回复:发现发错了帖子可以进行删除,参考如下帮助
http://bbs.bathome.net/thread-2850-1-4.html
如何编辑(修改)帖子
───────────────── 版主回复 ─────────────────
作者: stuqx 时间: 2009-3-8 18:52
7楼的什么意思
输出这个有什么意思么
作者: stuqx 时间: 2009-3-8 19:01
不知道7楼发的是做什么用的 不过我也写一个- @echo off
- setlocal enabledelayedexpansion
- for %%a in (0,1,7) do (
- set b=%%a
- b=b+b
- echo !b! >>a.txt
- )
复制代码
[ 本帖最后由 stuqx 于 2009-3-8 19:03 编辑 ]
作者: keen 时间: 2009-3-9 13:04
我看了二楼的代码,自己写的,但感觉整个代码繁琐,请大大赐教!- @echo off
-
- set /a x=%random%%%3
- set /a y=3-%x%
- set d1=■■■■
- set d2=■■■■
-
- if %y% equ 3 goto 3
- if %y% equ 2 goto 2
- if %y% equ 1 goto 1
-
- :3
- echo %d1% &pause>nul &&exit
-
- :2
- call :suiji
- if %z%==0 echo %d1:~0,2% &echo. &echo %d2:~0,2% &pause>nul &&exit
- if %z%==1 echo %d1:~0,2% &echo. &echo %d2:~1,2% &pause>nul &&exit
- if %z%==2 echo %d1:~1,2% &echo. &echo %d2:~0,2% &pause>nul &&exit
-
- :1
- call :suiji
- if %z%==0 echo %d1:~1,1% &echo. &echo %d2:~0,3% &pause>nul &&exit
- if %z%==1 echo %d1:~0,3% &echo. &echo %d2:~0,1% &pause>nul &&exit
- if %z%==2 echo %d1:~0,3% &echo. &echo %d2:~2,1% &pause>nul &&exit
-
- :suiji
- set /a z=%random%%%3
- goto :eof
复制代码
作者: 绿地流年 时间: 2009-3-11 20:19 标题: 业务实
是否则是丝毫无法
作者: netbenton 时间: 2009-5-18 22:40
-
- @echo off&setlocal enabledelayedexpansion
- set a1=■■■■
- set a2=■■ ■■
- set a3=■■ @■■
- set a4=■ ■ ■ ■
- set a5=■ ■■ @■
- set a6=■■ @■ @■
- set a7=■■■ @■
- set a8=@■ ■■ ■
- set a9=@■■ ■■
- set a0=@■ ■■■
- :lp
- for %%a in (!a%random:~-1%!) do (set str=%%a&echo;!str:@= !)
- pause&goto :lp
复制代码
[ 本帖最后由 netbenton 于 2009-5-18 22:42 编辑 ]
作者: caruko 时间: 2010-4-1 15:37
纯数字随机生成,翻转功能没做,但是在此基础实现不难,个位跟十位对换就可以了...- @echo off
- title 俄罗斯方块
- color 0a
- setlocal enabledelayedexpansion
- :main
- call :go
- ping -n 2 127.1 >nul
- goto :main
-
- :go
- call :rdvar 4
- set /a value=var*10
- call :rdvar 4
- set /a value=value+var
- set /a _xy_1=value
- set /a _%value%=1
- for /l %%a in (2,1,4) do (
- call :fd !value!
- set _xy_%%a=!value!
- )
- rem set _
- call :display
- goto :eof
-
-
- ::::::产生随机数,如果是cal:rdvar2,就同时返回0,1:::::::
- :rdvar
- set /a var=%RANDOM%*%1/32768+1
- if %1 equ 2 (
- set /a rt=var-1
- exit /b !rt!
- )
- goto :eof
-
-
- ::::::::产生指定坐标周围4个坐标,并去除不合格坐标,从中随机得到一个::::::::::::
- :fd
- set /a x=%1 / 10 & set /a y=%1 %% 10
- set /a xy_1=^(x+1^)*10+y & set /a xy_2=^(x-1^)*10+y &set /a xy_3=x*10+y+1 & set /a xy_4= x*10+y-1
- if %x% LEQ 1 set "xy_2="
- if %x% GEQ 4 set "xy_1="
- if %y% LEQ 1 set "xy_4="
- if %y% GEQ 4 set "xy_3="
- set /a n=0
- for /l %%i in (1,1,4) do (
- set xy=!xy_%%i!
- if !xy!.==. set /a n-=1
- if defined _!xy! ( set "xy_%%i=" ) else ( set /a n+=1 )
- )
- set vstr=%xy_1% %xy_2% %xy_3% %xy_4%
- if %n% EQU 1 (
- set /a value=vstr
- set /a _!value!=1
- goto :eof
- )
- call :rdvar %n%
- for /f "tokens=%var%" %%c in ("!vstr!") do (
- set /a value=%%c
- set /a _!value!=1
- )
- goto :eof
-
-
- :display
- for /l %%c in (1,1,4) do (
- echo;
- for /l %%l in (1,1,4) do (
- if defined _%%c%%l (set/p "=■"<nul) else (set/p "= "<nul)
- set _%%c%%l=
- )
- )
- echo;
复制代码
[ 本帖最后由 caruko 于 2010-4-1 16:09 编辑 ]
作者: honeybat 时间: 2010-4-18 10:01
- @echo off
- setlocal enabledelayedexpansion
- :begin
- set n=■
- set /a x=%random%%%4+1
- if !x!==4 cls&echo %n%%n%%n%%n%
- if !x!==3 (set /a y=%random%%%3+1)&echo !y!&(if !y!==1 cls&echo %n%%n%%n%&echo %n%)&(if !y!==2 cls&echo %n%%n%%n%&echo %n%)&(if !y!==3 cls&echo %n%%n%%n%&echo %n%)
- if !x!==2 (set /a y=%random%%%5+1)&(if !y!==1 cls&echo %n%%n%&echo %n%%n%)&(if !y!==2 cls&echo %n%%n%&echo %n%%n%)&(if !y!==3 cls&echo %n%%n%&echo %n%%n%)&(if !y!==4 cls&echo %n%%n%&echo %n%&echo %n%)&(if !y!==5 cls&echo %n%%n%&echo %n%&echo %n%)
- if !x!==1 (set /a y=%random%%%8+1)&(if !y!==1 cls&echo %n%&echo %n%&echo %n%&echo %n%)&(if !y!==2 cls&echo %n%&echo %n%%n%&echo %n%)&(if !y!==3 cls&echo %n%&echo %n%%n%&echo %n%)&(if !y!==4 cls&echo %n%&echo %n%%n%%n%)&(if !y!==5 cls&echo %n%&echo %n%%n%&echo %n%)&(if !y!==6 cls&echo %n%&echo %n%%n%&echo %n%)&(if !y!==7 cls&echo %n%&echo %n%&echo %n%%n%)&(if !y!==8 cls&echo %n%&echo %n%&echo %n%%n%)
- pause>nul
- goto begin
复制代码
作者: 634175535 时间: 2010-4-25 13:45
这个可以用%RANDOM%这个生成1-7七个随机数来控制,如果生成1就是显示第一个图形,2就是第二个图形
·······
作者: 634175535 时间: 2010-4-25 13:47
@echo off
title=随机显示俄罗斯方块
:0
cls
set/a a=%random% %%7
if %a%==0 goto 1
if %a%==1 goto 2
if %a%==2 goto 3
if %a%==3 goto 4
if %a%==4 goto 5
if %a%==5 goto 6
if %a%==6 goto 7
:1
echo.&echo.
echo ■■■■
pause>nul&&goto 0
:2
echo.&echo.
echo ■■■
echo ■
pause>nul&&goto 0
:3
echo.&echo.
echo ■■■
echo ■
pause>nul&&goto 0
:4
echo.&echo.
echo ■
echo ■■■
pause>nul&&goto 0
:5
echo.&echo.
echo ■■
echo ■■
pause>nul&&goto 0
:6
echo.&echo.
echo ■■
echo ■■
pause>nul&&goto 0
:7
echo.&echo.
echo ■■
echo ■■
pause>nul&&goto 0
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |