没有合适的资源?快使用搜索试试~ 我知道了~
数据结构大型程序设计 斗地主.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 132 浏览量
2022-06-26
09:57:05
上传
评论
收藏 1.58MB DOC 举报
温馨提示
试读
30页
数据结构大型程序设计 斗地主.doc
资源推荐
资源详情
资源评论
数据结构
大型程序设计
题目:斗地主
学号:2008112225
对 此 感 兴 趣 的 朋 友 , 请 与 我 交 流 , 邮 箱
[email protected],要源代码的请与我联系
一. 需求分析
1.刚开始运行的时候,呈现给用户的是一个登录注册画面(主要是方便以后把它改装成网游)
2.登录后有准备的画面,提示一些信息,有开始按钮,开始按钮开始发牌,退出按钮,
可以重新退回到登录界面。这个界面里有有两个菜单,游戏和关于,游戏包括菜单项开始,
退出,游戏难度设定,声音关和闭,查看历史战线,关于包括菜单项玩法,版权。
3.点击开始按钮后,开始发牌,发完后,要随机选地主,地主选定后就开始出牌,一个人,两个电脑。人通过按钮进行选择,
出牌,过牌。任何一方(地主方和非地主方)胜利都将结束游戏,并通过一对话框显示本次登录的得失分情况和询问用户是否
继续,继续的话就发牌,否的话就直接退出到登录界面。
二. 流程图
开始
登录界面
注册 登录
准备界面
打牌画面
结束
成功
开始按钮
一局完
成功
失败
失败
结束按钮
提示画面
是否继续
继续
否
三. 概要分析
1.数据库设计:
用户信息表:字段名:用户名,密码,用户分数
用户历史记录表:字段名:用户名,登录次数,每次登录得分情况
2.类的概要设计
常量类:定义一些常量,以便修改及维护
数据库连接类:加载数据库及数据库的一些操作
用户类:记录用户的一些信息
登录注册画面类:显示登录画面
扑克类:记录每张扑克的信息
规则类:定义斗地主规则
随机发牌类:生成随机牌,并把牌分成四个数组
每个人的牌类:记录用户和电脑牌的一些共性
用户牌类:记录用户的牌及一些操作
电脑牌类:记录电脑的牌及一些操作
剩余牌及出牌类:记录每个人每次出的牌及显示
菜单类:每个画面的菜单,及菜单的一些事件响应
准备画面类:显示准备画面
打牌的画面类:显示打牌的画面
地主按钮面板类:控制地主按钮的显示及按钮的事件响应
对话框类:为一些对话框的共性
关于对话框:关于软件的一些信息
规则对话框:显示斗地主的规则信息
本次登录后的得分情况对话框类:显示本次登录的得分情况,并提示是否继续
历史战绩界面类:显示以往十次的登录画面
声音类:加载声音及控制声音的播放
电脑选底牌的权值判定:当电脑有权拿地主时,判断是否要
电脑出牌类:电脑三种算法出牌的共性,定义一个接口
简单出牌类:简单的让电脑出牌
中等难度出牌类:让电脑有一定的记忆能力
难的出牌类:让电脑具备点人工智能的出牌
3.类之间的关系:
上面的类都是一些基础类,下面的数据成员基本都是上面来的。
4.几个基础类的基本设计
Card 类:描述一张牌
数据成员:
Int type 牌的花色
Constants
DialogFrame
MenuOption
PersonCardComputerCard
DiZhu
Regular
OutAndLeaveCard
User
Card
LogonFrame
EveryPersonCard
DiologRegular DialogAbout
CreateConnection
OutEasyCardMidOutCard
HardOutCard
outCard
SoundClip
ComputerScore
PrepareFrame
PlayHost
Int number 牌的值
String value 牌上的字符串
String path 牌的画面路径
Int width 牌的宽度
Int height 牌的高度
Int xPos,yPos 牌的坐标
成员函数:
Int getHeight() 得到牌的高度
Int getWidth() 得到牌的宽度
Int getNumber() 得到牌的值
String getPath() 得到牌画面的路径
String setPath() 设置牌的路径
String getValue() 得到牌上的字符
Int getX() 得到牌画的横坐标
Int getY() 得到牌画的纵坐标
Int getType() 得到牌的花色
initCard() 初始化牌面的路径
int toCompare() 两个牌之间大小的比较
void toNumber() 通过牌面字符,转化成权值
Regular 类:里面没有数据成员,所以方法都设成静态的。
13 种牌型函数(除单张牌没写):
Int flyWithNo(Card[]) 飞机不带牌
Int fourWithTwo(Card[]) 四带二
Boolean isBomb(Card[]) 炸弹
Boolean isDouble(Card[]) 对子
Boolean isDoubleKing(Card[]) 对王
Boolean isStraight(Card[]) 顺子
Boolean isThree(Card[]) 三个
Boolean threeOrMoreDouble(Card[]) 三个以上的对子
Boolean threeWidthOne(Card[]) 三带一
Int threeWithTwo(Card[]) 三带二
Boolean twoThreeWithOne(Card[]) 两个三个带两单张
Boolean twoThreeWithTwo(Card[]) 两个三个带两对
Void sortCardByNumber(Card[]) 对牌按照牌值按小到大牌序,一些牌型都是经过牌序之后才判断的
Boolean isBig(Card[],Card[]) 前家和本家出的牌进行比较大小
Boolean winAndGo(Card[]) 第一次出牌或赢了一手之后的出牌
String cardType(int) 牌的类型,用字符串表示,主要是以后可以方便的输出牌信息
RandomCard:随机发牌类
数据成员:
Card[] computer1Card 电脑一的牌
Card[] computer2Card 电脑二的牌
Card[] leaveCard 底牌
Card[] userCard 用户的牌
Vector vector 一幅牌的一个集合
成员函数:
Card[] getComputer1Card() 得到电脑一的牌
Card[] getComputer2Card()得到电脑二的牌
Card[] getLeaveCard() 得到底牌
Card[] getUserCard() 得到用户的牌
void sortCardByNum(Card[]) 对牌排序
EveryPersonCard:每个人牌,主要是三方人员都有的一些属性
数据成员:
ArrayList cardList 每个人牌的集合
Boolean dizhu 每个人地主权限设置,主要是判断每个人有权时是否选择要地主
String outType 出的牌型,输出每个人出的牌型信息
成员函数:
Void outCard(ArrayList) 从牌的集合中除去每次出的牌
void inCard(Card[]) 当为地主时,可以进牌,即将底牌插入到集合来
void update(Graphics) 清除画面,防止重叠
PersonCard: 继承于 EveryPersonCard 用户的牌
数据成员:
Int clip[] 用户的每个牌的多次点击情况
成员函数:
Void outCard(ArrayList) 出牌后再初始化牌
void paintComponet(Graphics)绘出用户的牌
void updateCardPos(int)更新电脑某张牌的位置
void initCardPos()初始化电脑牌的位置及点击
ComputerCard:继承于 EveryPersonCard:电脑的牌
成员函数:
Void initCardPos()初始化牌的位置
Void paintComponent(Graphics) 绘制底牌和出的牌
OutAndLeaveCard:底牌和出牌
数据成员:
ArrayList out
成员函数:
initPos(int) 初始化第几个人出的牌
setCardList(ArrayList)设置出牌集合
sortCardByNum(ArrayList)排序出牌,主要是防止用户点击牌不是按顺充点击的
update 和 paintComponent 函数绘出图形及更新图形
DiZhu:地主面板类,控制地主的显示
数据成员:
JButton no 不叫地主按钮
剩余29页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3650
- 资源: 59万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功