中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 八数码问题,游戏 上一主题 | 下一主题
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
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 2 楼』:  

这个想法很好,严重支持!!!

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
状态 离线
『第 4 楼』:  

以批处理的命令行窗口和输入方式是绝对适合的~



综合型编程论坛

我的作品索引
  
2009-6-4 02:59
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 5 楼』:  

http://topic.csdn.net/t/20050529/12/4043487.html



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
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
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
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 ]

   此帖被 +15 点积分         点击查看详情   
评分人:【 moniuming 分数: +15  时间:2009-6-7 11:57




综合型编程论坛

我的作品索引
  
2009-6-5 02:44
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
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 ]

   此帖被 +15 点积分         点击查看详情   
评分人:【 moniuming 分数: +15  时间:2009-6-7 11:48




精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-6-6 16:41
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 10 楼』:  

今天上两元一个钟的 电脑,执行了楼上的代码,真赞啊~



综合型编程论坛

我的作品索引
  
2009-6-14 02:17
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: