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

一.题目简介

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

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

二.结对分工及过程

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

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

三.代码地址

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

四.结对实践过程

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

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

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

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

五.测试情况

1.程序结构

2.游戏界面

3.游戏开始出牌界面

4.游戏结束

六.问题及心得

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

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

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

入集合中待用。

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

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

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

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

时间: 2024-09-29 17:00:47

软件工程——结队工程项目的相关文章

软件工程结队开发——输出一个数组中最大子数组的和

一.题目及要求 题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整型数组,数组里有正数也有负数: 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和: 求所有子数组的和的最大值.要求时间复杂度为O(n): 二.设计思路 程序分成两个部分: (1):找到数组中所有可能的子数组的和: 先从数组中第一个数开始算起,一直求到与它连续的的所有数的和存入数组son,然后从第二个数开始算起,求与它连续的数的和存入数组,以此类推,直至计算到最后一个数.有n个数据的数组能产生的子数组个数为n

软件工程结队作业02

设计思想:    使用jsp实现java代码与网页的连接,利用数组实现数据的传输.Session对象页面的跳转功能. 源代码: 运行结果截图: 编程总结: 对jsp和session的使用不熟悉,不知道如何将java代码插入到网页程序中,所以参考了网上代码进行编写. 周活动总结表 姓名:杜若憧                            日期 2016/4/8 听课 编写代码 阅读课本 准备考试 日总计 周日 周一 50 50 周二 100 60 160 周三 22 22 周四 30 3

软件工程结队项目——智能点餐系统典型用户及用户场景分析

一.典型用户分析:一个典型用户描述了一组用户的典型技巧.能力.需要.想法.工作习惯和工作环境. 1.买家典型用户分析: 名字 小郭(石家庄铁道大学交1202-5班) 性别.年龄 男,22岁 联系方式 18330108270 职业 学生 收入 暂无 知识层次和能力 大学在读,会使用各种手机APP软件 生活/工作情况 上课,吃饭,睡觉,偶尔打打游戏,经常在学校门口买饭 动机,目的,困难 很喜欢吃学校门口小吃摊的炒饼,困难:中午3,4节有课时,下课都排队买饭,等的时间太长. 用户偏好 睡觉,打球 用户

单元测试软件工程概述

软件工程简介 软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的.实用的和高质量的软件的学科.它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面. 在现代社会中,软件应用于多个方面.典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等.同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等.这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活

软件工程--软件危机

1.1软件危机 1.1.1软件危机的介绍 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都有不同程度地存在这些问题. 概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求:如何维护数量不断膨胀的已有软件.软件危机具有长期性和症状不明显的特征. 具体地说,软件危机主要有以下一些典型表现: 对软件开发成本和进度的估计常常很不准确: 经常出现用户对"已完成的"软件产品不满意的情况

作业 软件工程

part1 自我介绍 老师您好,我叫宋雨,本科在长春理工大学,专业是计算机科学与技术. 1.回想一下你曾经对计算机专业的畅想:当初你是如何做出选择计算机专业的决定?你认为过去接触的课程是否符合你对计算机专业的期待,为什么?你觉得计算机是你喜欢的领域吗,他是你擅长的领域吗? 从小我就喜欢玩电脑,所以选择了计算机专业.过去接触的课程很符合我对计算机专业的期待,在长春理工大学,接触过的老师都很认真负责,都很理解我们.计算机是我喜欢的领域,以前在玩电脑装游戏时经常运行不了,我就会查阅很多资料,比如修改注

软件工程课后总结与反思

早就听说罗杰老师的软件工程课是实用性与理论性相结合的课,在这门课上不单单只是简单的编写代码,调试程序,还要做到迭代开发,撰写文档等实际软件工程中所必须要完成的工作.为了锻炼自己的能力,学到一些不一样的知识,这学期我选择了罗杰老师的软件工程课. 课程大概可以分为三个部分,个人项目,双人组队项目,团队项目(五人). 个人项目强调个人能力,包括编写代码的能力,创造力,想象力等等,罗杰老师说过:在实际开发软件的过程中,很少是"单兵作战",但个人能力是团队的基石,只能个人能力出众,团队水准才能不

软件工程实践感想

这学期学习了软件工程实践这门课,我觉得这是对上学期的软件工程课程学习的检验,上学期学习软件工程只是我们浅显的认识,相比之下,这学期就更加全面的说明了开发一个项目所需要的步骤以及开发项目过程中所需要注意的诸多细节.如果说上学期的课程注重理论基础的话,那么这学期的软工实践,顾名思义,就是侧重我们动手操作的能力. 学习了这门课程, 还有老师们的多元化教课,不但让我从理论上掌握软件工程,还有从不同的实例,让理论和实践得到了很好的结合.整一个学期下来,总的来说还是学到了很多东西的,有很多地方是值得肯定的,

软件工程心得体会

对于软件工程的认识. 软件工程是把系统的.有序的.可量的方法应用到软件的开发.运营和维护上的过程.它是一门实践性很强的学科,所以在实际的软件研制过程中,人员的素质占据着非常重要的地位.在具体的软件工程项目中,人员的角色定位,任务分配,以及团队内成员之间的协调配合是非常重要的.人员的角色定位以及任务分配,是属于技术层面的资源配置,软件过程的各个环节,都必须有最合适的人选,该环节才能得到最有效的技术资源,而整个团队内成员之间的配合协调,则是属于管理层面的资源整合,通过充分调度软件生产的各个环节,精细