|
523066680
银牌会员
SuperCleaner
积分 2362
发帖 1133
注册 2008-2-2
状态 离线
|
『楼 主』:
八数码问题,游戏
如下所示初始状态:
123
485
76.
存在一个最优移动步骤如下:
123 123 123 123 123
485 --> 485 --> 4.5 --> 45. --> 456
76. 7.6 786 786 78.
我觉得这是一个非常适合用批处理制作的一个游戏,
很类似于手机上的拼图游戏(图片包括一个空位,分成9块,打乱后,要求用户通过移动图块还原图片)
不知大家有兴趣否?
|
综合型编程论坛
我的作品索引 |
|
2009-6-3 05:46 |
|
|
moniuming
银牌会员
永远的菜鸟
积分 1335
发帖 574
注册 2007-11-27 来自 广西
状态 离线
|
|
2009-6-3 06:33 |
|
|
yishanju
银牌会员
[b]看你妹啊[/b]
积分 1488
发帖 1357
注册 2006-5-20
状态 离线
|
『第
3 楼』:
如果支持方向键操作,那可玩性是比较高的
|
有问题请发论坛或者自行搜索,再短消息问我的统统是SB |
|
2009-6-3 10:58 |
|
|
523066680
银牌会员
SuperCleaner
积分 2362
发帖 1133
注册 2008-2-2
状态 离线
|
|
2009-6-4 02:59 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
|
2009-6-4 04:21 |
|
|
wxcute
中级用户
积分 458
发帖 211
注册 2006-7-26
状态 离线
|
『第
6 楼』:
这个题目有意思。
回 3 楼,配合 CHOICE.EXE 就很好了。
|
┌───────┐
├→学习→实践→┤
└───────┘ |
|
2009-6-4 09:23 |
|
|
netbenton
银牌会员
批处理编程迷
积分 1916
发帖 752
注册 2008-12-28 来自 广西
状态 离线
|
『第
7 楼』:
@echo off
goto :begin
批处理拼图
┍=┯=┯=┐
│!a1!│!a2!│!a3!│
┝=┿=┿=┥
│!a4!│!a5!│!a6!│
┝=┿=┿=┥
│!a7!│!a8!│!a9!│
┕=┷=┷=┙
用方向键控制
按 Esc 键退出
┍=┯=┯=┐
│!a1!│!a2!│!a3!│
┝=┿=┿=┥
│!a4!│!a5!│!a6!│
┝=┿=┿=┥
│!a7!│!a8!│!a9!│
┕=┷=┷=┙
:begin
chcp 437 >nul
graftabl 936>nul
(echo e 100 B8 00 00 CD 16 88 E0 B4 4C CD 21
echo r cx
echo b
echo n in.com
echo w
echo q)|debug>nul
set com80=if !m! gtr 1 set /a m-=1
set com72=if !m! lss 3 set /a m+=1
set com77=if !n! gtr 1 set /a n-=1
set com75=if !n! lss 3 set /a n+=1
setlocal enabledelayedexpansion
for %%a in (1 2 3 4 5 6 7 8) do set a%%a=%%a
set "a9= "
set/a m=3,n=3,chbe=9
set ai1=b 9 8 7 4 1 2 3 6
set ai2=l 1 2 5 8 7 4
set ai3=l 2 3 6 9 8 5
set ai4=l 4 5 6 9 8 7
set ai5=l 1 2 3 6 5 4
set ai6=s 1 2 5 4
set ai7=s 2 3 6 5
set ai8=s 4 5 8 7
set ai9=s 5 6 9 8
set NL=6
set NB=8
set NS=4
set/a ran=!random!%%5+5
set aiall=9
for /l %%a in (0,1,%ran%) do (call :random)
call :change aiall
call :print
set total=0
:loop
ping -n 1 127.1 >nul
call in.com
if "%errorlevel%" equ "1" goto :quit
if not defined com%errorlevel% goto :loop
set comm=!com%errorlevel%!
%comm%
set/a chto=m*3+n-3
if !chto! equ !chbe! goto :loop
cls
for /f "tokens=1,2 delims=-" %%a in ("!a%chbe%!-!a%chto%!") do (set a!chbe!=%%b&set a!chto!=%%a)
set chbe=!chto!
set/a total+=1
call :print
if "!a1!!a2!!a3!!a4!!a5!!a6!!a7!!a8!!a9!" equ "12345678 " echo 厉害!用了!total!步。&pause
goto :loop
:quit
echo 谢谢使用,再见!
ping -n 2 127.1 >nul
goto :eof
:print
for /f "skip=2 delims=" %%a in (%~f0) do (
if "%%a" equ ":begin" goto :echoend
echo; %%a
)
:echoend
echo;
goto :eof
:change
set ver=!%1:~,1!
for %%a in (!%1:~1!) do (
for /f "tokens=1,2 delims=-" %%b in ("a!ver!-!a%%a!") do (
set a%%a=!%%b!
set %%b=%%c
)
set ver=%%a
)
set/a chbe=ver
set/a ver-=1,"m=ver/3+1",n=ver%%3+1
goto :eof
:random
set v=0
for /l %%a in (1,1,9) do (
if "!ai%%a:%chbe%=!" neq "!ai%%a!" (
set /a v+=1
set r!v!=!ai%%a!
)
)
set/a ran=!random!%%v+1
set/a r=N!r%ran%:~,1!
set str=!r%ran%:~1!
set str=!str:*%chbe%=!%str%
set/a ran=!random!%%r*2+4
set str=!str:~,%ran%!
set aiall=!aiall!!str!
set chbe=!str:~-2!
goto :eof 为了能用方向键控制,用debug生成了一个in.com 三方命令
可随机打乱,有两个图是准备做成两人 pk
[ Last edited by netbenton on 2009-6-6 at 00:03 ]
|
精简
[你的+我的+他的]=>[大家的] 个人网志 |
|
2009-6-4 09:39 |
|
|
523066680
银牌会员
SuperCleaner
积分 2362
发帖 1133
注册 2008-2-2
状态 离线
|
『第
8 楼』:
又来网吧喽,时间不多~
@echo off
setlocal enabledelayedexpansion
mode con cols=35 lines=15
set /a num11=1,num12=2,num13=3
set /a num21=4,num22=8,num23=5
set /a num31=7,num32=6
set "num33= "
set blank=33
::目前空格所在位置blank=33
set /a ccw=+10,cca=+1,ccs=-10,ccd=-1
::移动操作数
:loop
cls
echo,
echo, %num11% %num12% %num13%
echo, %num21% %num22% %num23%
echo, %num31% %num32% %num33%
if "%num11%%num12%%num13%%num21%%num22%%num23%%num31%%num32%"=="12345678" (
echo,The end
pause>nul
exit
)
echo,&echo, q = exit
set /p inp="(w a s d) (q): "
if "%inp%"=="q" exit
if defined cc%inp% (set /a blanknext=blank+cc%inp%)
if defined num%blanknext% (
set /a num%blank%=num%blanknext%,blank=blanknext
set "num%blanknext%= "
)
goto :loop [ Last edited by 523066680 on 2009-6-5 at 03:13 ]
|
综合型编程论坛
我的作品索引 |
|
2009-6-5 02:44 |
|
|
netbenton
银牌会员
批处理编程迷
积分 1916
发帖 752
注册 2008-12-28 来自 广西
状态 离线
|
『第
9 楼』:
拼图游戏做好了!
***开局随机打乱,并保证是可以拼成的。
***两人同时对战。
@echo off
set ec3= 批处理拼图比赛
set ec4= 靓女 靓仔
set ec5= ┍=┯=┯=┐ ┍=┯=┯=┐
set ec6= │!b1!│!b2!│!b3!│ │!a1!│!a2!│!a3!│
set ec7= ┝=┿=┿=┥ ┝=┿=┿=┥
set ec8= │!b4!│!b5!│!b6!│ │!a4!│!a5!│!a6!│
set ec9= ┝=┿=┿=┥ ┝=┿=┿=┥
set ec10= │!b7!│!b8!│!b9!│ │!a7!│!a8!│!a9!│
set ec11= ┕=┷=┷=┙ ┕=┷=┷=┙
set ec12=上W,下S,左A,右D 用方向键控制
set ec13= 按 Esc 键退出
set ec14= !msg!
set ec15= !msg1!
set ec16= !msg2!
set ec17= !msg3!
set Namea=靓仔
set Nameb=靓女
chcp 437 >nul
graftabl 936>nul
(echo e 100 B8 00 00 CD 16 88 E0 B4 4C CD 21
echo r cx
echo b
echo n in.com
echo w
echo q)|debug>nul
set com80=if !m! gtr 1 set /a m-=1
set com72=if !m! lss 3 set /a m+=1
set com77=if !n! gtr 1 set /a n-=1
set com75=if !n! lss 3 set /a n+=1
set com31=if !x! gtr 1 set /a x-=1
set com17=if !x! lss 3 set /a x+=1
set com32=if !y! gtr 1 set /a y-=1
set com30=if !y! lss 3 set /a y+=1
for %%a in (1 2 3 4 5 6 7 8) do set a%%a=%%a
set "a9= "
set ai1=b 9 8 7 4 1 2 3 6
set ai2=l 1 2 5 8 7 4
set ai3=l 2 3 6 9 8 5
set ai4=l 4 5 6 9 8 7
set ai5=l 1 2 3 6 5 4
set ai6=s 1 2 5 4
set ai7=s 2 3 6 5
set ai8=s 4 5 8 7
set ai9=s 5 6 9 8
set NL=6
set NB=8
set NS=4
setlocal enabledelayedexpansion
:begin
set wina=
set winb=
set/a gg+=1
set msg3=!msg2!
set msg2=!msg1!
set msg1=!msg!
set msg=第!gg!局:
cls
set/a m=3,n=3,chbe=9
set/a ran=!random!%%8+8
set aiall=9
for /l %%a in (0,1,%ran%) do (call :random)
call :change aiall
set/a x=m,y=n,chae=chbe
for %%a in (1 2 3 4 5 6 7 8 9) do set b%%a=!a%%a!
for /l %%a in (0,1,18) do (for %%b in ("!ec%%a!") do echo; %%~b)
set/a totala=0,totalb=0
:loop
ping -n 1 127.1 >nul
call in.com
set error=!errorlevel!
if "!error!" equ "1" goto :quit
if not defined com!error! goto :loop
for %%a in (!error!) do set comm=!com%%a!
if !error! gtr 40 (set man=a) else (set man=b)
%comm%
if !man! equ b (
set/a chto=x*3+y-3
set/a chbx=chbe
) else (
set/a chto=m*3+n-3
set/a chbx=chae
)
if !chto! equ !chbx! goto :loop
for /f "tokens=1,2 delims=-" %%a in ("!%man%%chbx%!-!%man%%chto%!") do (set %man%!chbx!=%%b&set %man%!chto!=%%a)
set ch%man%e=!chto!
set/a total%man%+=1
cls
for /l %%a in (0,1,18) do (for %%b in ("!ec%%a!") do echo; %%~b)
set str=
for /l %%a in (1,1,9) do (set str=!str!!%man%%%a!)
if "!str!" equ "12345678 !win%man%!" echo !Name%man%!赢了,用了!total%man%!步。&set win%man%=#&set msg=!msg! !Name%man%!用了!total%man%!步&pause&if defined wina (if defined winb goto :begin)
goto :loop
:quit
echo 谢谢使用,再见!
ping -n 2 127.1 >nul
goto :eof
:change
set ver=!%1:~,1!
for %%a in (!%1:~1!) do (
for /f "tokens=1,2 delims=-" %%b in ("a!ver!-!a%%a!") do (
set a%%a=!%%b!
set %%b=%%c
)
set ver=%%a
)
set/a chbe=ver
set/a ver-=1,"m=ver/3+1",n=ver%%3+1
goto :eof
:random
set v=0
for /l %%a in (1,1,9) do (
if "!ai%%a:%chbe%=!" neq "!ai%%a!" (
set /a v+=1
set r!v!=!ai%%a!
)
)
set/a ran=!random!%%v+1
set/a r=N!r%ran%:~,1!
set str=!r%ran%:~1!
set str=!str:*%chbe%=!%str%
set/a ran=!random!%%r*2+4
set str=!str:~,%ran%!
set aiall=!aiall!!str!
set chbe=!str:~-2!
goto :eof [ Last edited by netbenton on 2009-6-7 at 00:19 ]
|
精简
[你的+我的+他的]=>[大家的] 个人网志 |
|
2009-6-6 16:41 |
|
|
523066680
银牌会员
SuperCleaner
积分 2362
发帖 1133
注册 2008-2-2
状态 离线
|
|
2009-6-14 02:17 |
|
|