![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-15 02:03 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » TC写的小游戏 五心相恋 送给大家做新年礼物!(更新) |
| 可打印版本 6,993 / 25 |
| 第1楼 bush | 发表于 2005-12-29 23:53 |
| 银牌会员 发帖 730 积分 2,165 | |
|
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 ] 附件 lines.zip (10.36 KiB) |
|
| 第2楼 Michael | 发表于 2006-01-02 00:27 |
| 钻石会员 发帖 3,041 积分 10,056 | |
|
支持原创。
|
|
| 第3楼 JonePeng | 发表于 2006-01-02 11:37 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
|
有趣!我建议心形字符的颜色应亮一些(颜色值+8),这样会明显一些。
|
|
| 第4楼 Wengier | 发表于 2006-01-03 00:37 |
| 系统支持 发帖 10,521 积分 27,736 | |
|
好像有时光标移动到一些格子时中会消失,而在其它格子中时则正常。
另外,不知道如何退出游戏?ESC键等等都试过,似乎均无效。 |
|
| 第5楼 Michael | 发表于 2006-01-03 01:53 |
| 钻石会员 发帖 3,041 积分 10,056 | |
|
这不会是个"reset only" game吧。
|
|
| 第6楼 bush | 发表于 2006-01-03 22:14 |
| 银牌会员 发帖 730 积分 2,165 | |
|
多谢大家关心,有所改动。 本次改动如下:
中途按ESC键可以退出,按空格键可以重开一局。 原先我是把这游戏从头玩到尾,还没想到不玩了要退出,大势已去时要重新开始。呵呵,设计太没人性了。 颜色加亮。也就是颜色代码加7。 不过从视觉上看,我认为同原先相比并没有多大改观。 处理了两处BUG。 主要是在游戏玩家作出非常规操作时,进行对应处理。 |
|
| 第7楼 220110 | 发表于 2006-01-03 22:18 |
| 荣誉版主 发帖 313 积分 718 | |
|
可视界面能否再大一点?
|
|
| 第8楼 JonePeng | 发表于 2006-01-03 23:15 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
Originally posted by 220110 at 2006-1-3 22:18: 游戏的界面是80*25分辨率的文本模式,如果改为40*25的话,字符会大一倍,但可能帮助信息就显示不完整。 |
|
| 第9楼 GOTOmsdos | 发表于 2006-01-05 02:22 |
| 铂金会员 发帖 1,827 积分 5,154 | |
|
嘿嘿,有点小意思,不过,我已经把七八个心放在了一条线,他还是不消失呀..
|
|
| 第10楼 bush | 发表于 2006-01-05 15:28 |
| 银牌会员 发帖 730 积分 2,165 | |
|
to: GOTOmsdos
我的表达有误,应该是五个同样颜色的连成线才消失。 ![]() |
|
| 第11楼 GOTOmsdos | 发表于 2006-01-05 16:06 |
| 铂金会员 发帖 1,827 积分 5,154 | |
|
建议加点难度..
|
|
| 第12楼 bush | 发表于 2006-01-05 16:24 |
| 银牌会员 发帖 730 积分 2,165 | |
|
to: GOTOmsdos
你打到多少分啦? 我覺得這個還是有些難度的。我最多才到300多分,呵呵,很好打發時間哦 |
|
| 第13楼 proof | 发表于 2006-01-15 19:48 |
| 高级用户 发帖 222 积分 687 | |
|
楼主辛苦了,支持。
|
|
| 第14楼 wulang | 发表于 2007-06-16 13:20 |
| 新手上路 发帖 1 积分 2 | |
|
顶~~~~~~~~~~~~~
|
|
| 第15楼 henrya2 | 发表于 2007-06-16 17:18 |
| 中级用户 发帖 171 积分 486 | |
|
不错
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |