中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » TC写的小游戏 五心相恋 送给大家做新年礼物!(更新)
« [1] [2] »
作者:
标题: TC写的小游戏 五心相恋 送给大家做新年礼物!(更新) 上一主题 | 下一主题
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『楼 主』:  TC写的小游戏 五心相恋 送给大家做新年礼物!(更新)

游戏规则:
在棋盘中移动彩色的“心”,连成五个以上同色一串即可消除(横、竖、斜均可)。如果移动一次后没有任何消除,则随机落下三颗心的彩心。棋盘占满,游戏结束。
移动的方法很简单:四个方向键,回车选择待移动的心,(反显),在移动光标到目标位回车。如果选择一颗心后,发现不是所要移动的,可以再到另一颗心上按回车即可改选。当然移动不是任意的,必须是按上、下、左、右四个方向空格通路可达到的,也就是走迷宫的规则。

如果你发现有什么异常bug,请跟帖详细说明,谢谢。


源代码已在附件中,没有注释,先贴个思路分析:

预备,用9*9的二维数组保存棋盘状态,取值的定义:0-空,1~7分别代表不同颜色的心;
用一变量sp统计还有多少空格,如sp为零,说明无路可走,游戏失败;
变量hs,ys记录最高分和当前得分。

首先作初始化棋盘,提示文字;
棋盘是9*9的格子,因为边框都是用字符填充的,所以总共画图的区域加上旁边的空白一共是20*20大小。因此坐标与棋盘数组的对照是“加一乘二”的关系;
画图的方式采用指针直接改dos显存,读光标坐标用寄存器取值。这个方法的副作用是必须精确的调整好语句位置,因为寄存器的值随时都可能改变;
新落下的心位置和颜色都是随机的,但由于要提示下一组颜色,所以用数组next预先保存他们的颜色数;

游戏的过程描述:
移动光标 -〉直到选择一个‘心’为止;
再次移动光标-〉直到按下回车;
  如果该位置是‘心’,则更改选择目标,本次行动绕回;
  如果该位置是空格,判断已选择的‘心’能移动过来吗?
    如果不能,本次行动绕回;
    如果能,检查是否构成消去?
      有消去,则跳过新落下三颗心的步骤。
新落下三颗心,并检查棋盘沾满没有?
  下一次循环 | 结束。

判断‘心’能否移动的算法是改进的迷宫算法,这里使用回朔方案,用到一个简单的栈操作。
检查消去的思路是按线性从当前位置往两头走,直到颜色不同时停下,并分别记录其位置,其差值可以判断共有几个同色心相连。

[ Last edited by bush on 2006-1-5 at 15:26 ]

附件 1: lines.zip (2006-1-3 22:12, 10.36 K, 下载附件所需积分 1 点 ,下载次数: 177)
2005-12-29 23:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Michael
钻石会员





积分 10046
发帖 3039
注册 2002-11-11
状态 离线
『第 2 楼』:  

支持原创。



简单就是美
2006-1-2 00:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
JonePeng
金牌会员

D◎$ Fαп


积分 4562
发帖 1883
注册 2004-1-19
来自 广东广州
状态 离线
『第 3 楼』:  

有趣!我建议心形字符的颜色应亮一些(颜色值+8),这样会明显一些。



----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
  
2006-1-2 11:37
查看资料  发送邮件  发短消息 网志  OICQ (373343541)  编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 4 楼』:  

好像有时光标移动到一些格子时中会消失,而在其它格子中时则正常。

另外,不知道如何退出游戏?ESC键等等都试过,似乎均无效。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2006-1-3 00:37
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
Michael
钻石会员





积分 10046
发帖 3039
注册 2002-11-11
状态 离线
『第 5 楼』:  

这不会是个"reset only" game吧。



简单就是美
2006-1-3 01:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 6 楼』:  多谢大家关心,有所改动。

本次改动如下:
中途按ESC键可以退出,按空格键可以重开一局。
  原先我是把这游戏从头玩到尾,还没想到不玩了要退出,大势已去时要重新开始。呵呵,设计太没人性了。
颜色加亮。也就是颜色代码加7。
  不过从视觉上看,我认为同原先相比并没有多大改观。
处理了两处BUG。
  主要是在游戏玩家作出非常规操作时,进行对应处理。

2006-1-3 22:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
220110
荣誉版主




积分 718
发帖 313
注册 2005-9-26
状态 离线
『第 7 楼』:  

可视界面能否再大一点?

2006-1-3 22:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
JonePeng
金牌会员

D◎$ Fαп


积分 4562
发帖 1883
注册 2004-1-19
来自 广东广州
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by 220110 at 2006-1-3 22:18:
可视界面能否再大一点?

游戏的界面是80*25分辨率的文本模式,如果改为40*25的话,字符会大一倍,但可能帮助信息就显示不完整。



----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
  
2006-1-3 23:15
查看资料  发送邮件  发短消息 网志  OICQ (373343541)  编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 9 楼』:  

嘿嘿,有点小意思,不过,我已经把七八个心放在了一条线,他还是不消失呀..

2006-1-5 02:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 10 楼』:  

to: GOTOmsdos
我的表达有误,应该是五个同样颜色的连成线才消失。

2006-1-5 15:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 11 楼』:  

建议加点难度..

2006-1-5 16:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 12 楼』:  

to: GOTOmsdos
你打到多少分啦?
我覺得這個還是有些難度的。我最多才到300多分,呵呵,很好打發時間哦

2006-1-5 16:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
proof
高级用户





积分 687
发帖 222
注册 2005-8-21
状态 离线
『第 13 楼』:  

楼主辛苦了,支持。

2006-1-15 19:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wulang
新手上路





积分 2
发帖 1
注册 2007-6-16
状态 离线
『第 14 楼』:  

顶~~~~~~~~~~~~~

2007-6-16 13:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
henrya2
中级用户





积分 486
发帖 171
注册 2006-2-12
状态 离线
『第 15 楼』:  

不错



Those who do not study the past are condemned to repeat it
2007-6-16 17:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: