项目名称: 双副扑克一人升级游戏
一人与三机器人玩
班级: 电气 29
学号:02041271 02041260 02041257
姓名:李余强张亚婷马媛媛
完成时间: 2004 . 11 . 8
指导老师: 卫颜峻。
日期 : 2004-11-24
目录。一.需求分析。
1.1开发背景3
1.2项目目标3
1.3运行环境3
1.4项目任务书3
二.技术路线。
2.1总体方案4
2.1.1总体方案设计4
2.1.2 功能模块图4
2.2详细设计4
三.工程进度6
四.测试报告7
五.小结91.1开发背景。
目前社会上棋牌游戏非常流行,而其中以双副扑克升级游戏(又称拖拉机)最为流行,牌局采用四人结对竞赛,抢分升级的方式进行。具有规则简明、对抗性强等特点。“拖拉机”在保留“升级”的优点的同时,增加了牌的张数(由54张变为108张〕,取消了对底牌压分的限制,使牌局的变化更为丰富。
“对牌”、“拖拉机”(这也是“拖拉机”这一游戏名称的由来〕等出牌形式和“双抠翻倍”等规则的增加,使牌局更富有娱乐性和刺激性。基于以上种种原因,我们特制作了这一游戏程序。
1.2项目目标。
基本实现一般拖拉机打法的规则,实现人和机器人的对抗,机器人有较优的职能出牌算法。程序有规则的算法和可视化界面,有很强的实用性和稳定性。实现娱乐性和工具性的统一。
1.3 运行环境。
硬件环境:cpu celeron100以上
硬盘剩余空间大于5m
软件环境:windows xp
1.4项目任务书。
本项目由三人合作完成,其中李余强为项目总负责,承担系统总体方案规划和程序框架设计,组员为张亚婷和马媛媛,分别负责程游戏规则和算法,界面和操作方面的问题。最后三人合作编写程序**并完成文档的制作。
二、技术线路。
2.1.1总体方案。
设计一个双副扑克的升级游戏,一个人对三个机器人,机器人具有一定的智商,具有可视化美观的界面,符合游戏的规则。
2.1.2模块图。
2.2详细设计。
1. 界面。
背景和扑克都是通过位图实现的,选择背景,先截取55张扑克位图,包括54张正面位图和一张背面位图,通过调用位图来实现发牌和出牌。
2发牌和出牌。
发牌时使用一个随机函数,每家25张,底牌留八张,底牌自动发到应该拿底牌人的手里,若是player拿底牌则等扣下底牌后即可开始牌局,若是computerplayer拿底牌则自动扣底牌,出牌是按照一定的规则,规则的实现靠使用ccard里边的函数和算法来实现,persenplayer使用鼠标右键出牌,computerplayer使用定时器自动出牌。
3分数。计算玩家分数是通过函数getpaifen()来实现的,判断哪个大,该谁得分,该得多少分,然后相应的分数自动累加,牌局结束后判断哪家该升级,具体通过比较规则分数实现。
4菜单。设置三个菜单:游戏用与游戏开始和退出。
选项用来设置出牌的速度。
帮助是用来说明游戏的规则的。
其中游戏规则说明是用shellexecute(this->getsafehwnd(),open", help. txt",null, null, sw_shownormal);来实现的。
5一些主要函数的列表。
1)ccard里边。
getpaifen此牌所占的分数。
compare主的颜色,主的大小等。
comparevalue() 比较牌的大小。
)ccardlist里边。
getdui寻找对。
gettuolaji寻找拖拉机。
)cchildview里边。
onhelp游戏规则说明。
onnewgame游戏重新开始。
onsettime设置出牌速度。
)ccomputerplayer里边。
chudui出对。
chupai出牌。
chutuolaji出拖拉机。
firstchupai先出牌。
koupai扣牌。
三.工程进度。
工程实施 from 2004-10-10 to 2004-11-25
第一周:初步了解要求,熟悉游戏规则,熟悉编程环境。
第二周:分配任务,拟定工程计划。
第。三、四周:按照计划开始实现模块功能。
第五周:进行整体调试,修改漏洞。
第六周:对程序进行测试,根据测试结果对程序调试,进行小范围改动,进一步完善系统。完成文档的制作。
四、测试报告。
为了便于测试,程序分为debug、release两个版本:
在debug版中,四方的牌是全可见的;release中,只有玩家的牌可见。
#ifdef _debug
阶段测试。自动发牌、对抓到的牌排序。
结果:经过多次运行测试,各方所抓的牌分布均匀,符合要求,顺序按照方片、黑桃、红桃、梅花、级牌、王的顺序,各花色的牌从小到大排列。
1、 发牌过程中亮牌,抓牌结束时调整牌序。
2、 结果:按照规则玩家可以亮牌时右下方会显示可以亮的花色的按钮。
3、 出牌顺序。
结果:出牌顺序符合规则。
出牌。1)、一轮中,第一家出了拖拉机,后面玩家的出牌符合规则。
2)、一轮中,第一家出了对牌,后面玩家的出牌符合规则。
3)、一轮中,第一家出了单牌,后面玩家的出牌符合规则。
出牌结束,计算升级。
按照计分规则计算得分,然后计算所升级数。
总体测试。玩家不按照出牌规则,点击试图出牌,是否有不合理现象。
不足之处:不支持甩牌。
五、小结。软件基础是继vc++课程之后需要我们再次使用编程软件处理实际问题的课程,这次实验极大的激发了我们的学习兴趣,让我们对编程软件有了更为理性的认识,能从思想上把理论和实际结合起来。
实验的过程中,我们遇到了很多问题,但就是在解决问题的过程中,我们对vc++有了更为深入的了解,编程的过程就是在应用的过程中不断的发现问题解决问题深入学习的过程,通过自身的努力和老师的指导,我们终于顺利的完成了任务。这不仅是对自身能力的一种肯定,同时也是对未来工作生活的一种鼓励。
在合作开发的日子里,我们小组成员之间配合默契,充分发挥了团结协作的精神,初步培养了团队合作意识,从而使每个人的能力都有了很大的提高。我们会把这种精神继续发扬,相信我们以后能做的更好!
软件基础大作业
软件基础课堂内容。一绪论 算法与算法分析 性质 输入性,输出性,有穷性,确定性,可行性。频度 语句重复执行的次数。时间复杂度 算法的时间耗费t n 二线性表 线性表 一个线性表是n个数据元素 结点 的有限序列。是有n个数据元素构成的有线序列。顺序表 顺序映像。插入运算。删除运算。链表 存储数据元素信...
软件大作业
班级 02 0912 学号 02091112 软件大作业。题目软件大作业。学院电子工程学院。专业电子信息工程。学生姓名高大容。导师姓名刘丹华。第一题。从键盘输入字符 6个以上的字符 建立一棵二叉树 二叉树形式任意 输出该二叉树的dlr,ldr,lrd序列,统计叶子结点个数,总结点个数,及二叉树深度 ...
软件技术基础2019大作业模版
序号 学号 姓名 一 以你的学号 生日中的每二位为一个数据,如学号为2011109506,生日为1991 09 03 则数据为 依次做如下操作 1.建立一棵二叉排序树 6分 解答 2.以数据作为权值建立一棵哈夫树并给出每个数据的哈夫曼编码 8分 解答 3.用除留余数法建立一个哈希表,选装填因子为0....