码迷,mamicode.com
首页 > 其他好文 > 详细

软件工程——结队工程项目

时间:2015-05-17 23:23:39      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

一.题目简介

      本次的项目是编写一个斗地主的小游戏,实现语言:java;主要完成了GUI设计、计时线程、算法。本次项目的主要目的是对算法的学习。算法分析在心得里面。

技术难点:1.图片的移动    2.计时线程的设定   3.对牌的分割,必须考虑到优先拆分方案,将权值低的拆分方案舍去。 4.在删除的时候遇到问题了,删除不了。

二.结对分工及过程

    本次结对项目的成员有两个,我负责对GUI界面的设计,完成功能:洗牌功能,发牌功能,打牌功能的图片的位移处理,基本打牌的桌面等等。而唐佳刚对算法的

设计编写和对计时线程的编写。

三.代码地址

由于github网站原因暂时进不去,稍后补上。

四.结对实践过程    

    1.对程序的整体思路,结构进行设计,采用了model2模式,将view层和model层分离,写到不同的类里,使程序的结构更加明了。

    2.对程序界面功能的实现进行了设计和讨论;然后又对算法的进行了分析和讨论,查阅了相关资料,对算法设计进行学习。

    3.分工合作,我主要负责界面的编写,唐佳刚负责对算法的编写,其中我们就一些难点一起讨论,如  牌面的移动。

    4.对代码的整合与修改,两个人的代码整合一定会出很对问题,我们就问题进行讨论解决,完成代码的整合。

五.测试情况

1.程序结构

技术分享

2.游戏界面

技术分享

3.游戏开始出牌界面

技术分享

4.游戏结束

技术分享

六.问题及心得

      游戏中算法的基本思想是:当我们随机拿到牌时,我们先将牌排序,当然排序也是有算法的,然后对牌按照斗地主的规则(如:单张、对子、三带、飞机、炸弹

等)将牌分成不同的组合存放在集合list里,分牌的算法基本思路是对牌组合优先级的设置,即考虑两个方面,手牌的出牌手数(手数少的优先级高)和牌组合权值的设

定(如:王炸的权值应该是最大的,单牌的权值应该是最小的),通过这两方面,可以决定如何对牌的拆分组合,舍弃优先级底的情况;对牌拆分完后,将拆分好的牌放

入集合中待用。

       这个算法的缺点是:牌在出牌前就拆好了,必须严格按照集合已有对象进行出牌,不能灵活的变更和更接近人的思维模式。

       个人思路为:拆牌时,我们可以将牌按单张、对子、三张等先放入不同的集合里(这里可能会有交集,如 34567889,我们要分成3456789和88放入不同的集

合内),当我们找到合适的牌打出后,我们对剩下的牌重新拆分,然后对集合更新(因为前面的出牌很可能破坏了牌分好的牌类型),这样就能更全面的考虑情况了,

这时候优先级的设计就针对如何找到合适的牌,我们不能有就出,还要考虑合不合适的问题。

软件工程——结队工程项目

标签:

原文地址:http://www.cnblogs.com/tibosi/p/4510701.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!