斗地主的制作与实现(报告 完整源代码)毕业设计(论文)word格式.doc
《斗地主的制作与实现(报告 完整源代码)毕业设计(论文)word格式.doc》由会员分享,可在线阅读,更多相关《斗地主的制作与实现(报告 完整源代码)毕业设计(论文)word格式.doc(59页珍藏版)》请在三一办公上搜索。
1、游戏设计概论课程设计报告题 目 斗地主的制作与实现 专 业 班 级 学 号 姓 名 同组人员 一、课程设计的内容、要求完成一个网络版的斗地主。对于联网斗地主,要实现以下功能:1, 能够联网对战,能及时出牌并能与主机一起更新游戏状态。2, 能正确判断胜负和游戏的开始与结束。3, 能认清地主和农民,能正确记分。4, 整个游戏界面如下图所示。上面中间是游戏地主最后拿的三张牌,左右分别是玩家的牌,下面中间是自己的牌。在游戏的右下方有2个按钮,分别是出牌和过牌。5,这个游戏是用鼠标进行操作的,单击自己的牌可以把它们选中,当轮到自己出牌时,就可以单击出牌按钮,出自己已经选中的牌,或者单击过牌按钮,放弃出牌
2、机会。游戏开始时会有选地主的过程,可以单击出牌选择自己是地主,也可以单击过牌选择放弃,如果所有的玩家都选择放弃,则重新发牌。二、所采用的数据结构没有.三、主要模块(或函数)及其功能本游戏的所有模块如下图所示:其中主要模块功能:Managers模块:这是本游戏的核心模块之一。函数:void GameStart();/游戏初始化,发牌。void SendCard();/发牌void CardsInfo(Card ca,int &num,int &min,int &type);/用来得到牌的信息。到底是炸弹,连牌,还是什么的。void PlayS(int min2,int type2,int num
3、2);/设置与发出声音,用来通知玩家所打的牌的大小与种类。void Updata();/根据游戏状态的改变,从而设置游戏界面的状态。Card模块:记录了一张牌的所有信息,包括大小、类型、是否被玩家选中。CProgramView模块:编辑游戏界面函数:void DrawCardOut(int k);void DrawLeft();/绘出剩下的地主的牌,当地主还没决定的时候画的是牌的背面,决定地主/后画出地主的牌void DrawPlayername();/根据传入的字符串,绘出玩家的名称void OnPass();/点击过牌按钮后的响应函数void OnSendCard();/画出当前玩家所出的
4、牌int SelectNum(int num,int mx,int my);/判断玩家点牌后具体点的是哪一张void DrawOtherCard();/画出另外两个玩家还剩下的牌,以及/他们刚刚出牌void DrawMyCard();/画出当前玩家手中牌void OnCancel();/点击退出按钮后的响应函数void OnOK();/点击确定按钮后的响应函数virtual CProgramView();CString PlayerName3;/用来存放三个玩家姓名的字符串void PrintAll();/整体重画CChat模块:基本对话框的聊天模块.CNet模块:网络控制CServer模块:
5、网络主机配置NetControl模块:用于设置网络各方面的问题。函数: void StartCards();void SendGetReady();void SendCards(Card *c,int action);NetControl(CProgramView *p);void Broadcast(char * pMsg);void SendMsg(CNet *pSend, char const *pMsg);/发送消息void OnSorc();/网络配置void OnSet();/设置问题void OnOpen();/已经打开网络配置void FetchMsg(CNet *pReque
6、st);/网络信息处理CNet* ConnectServer();/网络连接四、主要模块(或函数)的算法思想和程序框图流程图如下图所示:走牌用户操作退出游戏过牌出牌单击牌放弃接受地主准备退出游戏DoMsg(int num,int action)PlayerCardsxy.Click改变谁是地主PlayerMain过牌出牌CheckCard()什么都不做改变OutCards与OutPlayerCardsInfo(Card ca,int &num,int &min,int &type)OutPlayerOutCards不能走牌能走牌判断是否能走牌这个函数是用来得到牌的信息,到底是炸弹,连牌,还是什
7、么。Managers模块:Managers.h文件#include Card.h#include NetControl.h/ Added by ClassView/#include ProgramView.hclass Managers public:bool m_CardSound;void ClearCard();CProgramView * m_pView;int t;/重新计时NetControl *pControl;void PlayS(int min2,int type2,int num2); bool DoMsg(int num,int action);void GameStar
8、t();/游戏初始化,发牌。bool MainComputer;/主机,是主机则是true 不是则为false;Managers();virtual Managers();Card PlayCards320;/最多20张牌int PlayerAc;/这台机器上的玩家int PlayerMain;/地主Card OutCards20;/走的牌,一次也最多出20张牌int OutPlayer;/走牌的玩家Card Sendleft4;/记录剩下的3张牌int Game_State;void Updata();/ -2游戏没开始/ -1游戏准备中,选地主/ 0-2 游戏玩家出牌/ 3-5 对应0-2
9、玩家胜利int Power;/计算当前游戏如果农民胜利则每人得的分int PlayerMaininfo;/记录有几个玩家选择放弃地主 如果都放弃则游戏结束void SendCard();/发牌void SortCard(Card ca);int p3;void CardsInfo(Card ca,int &num,int &min,int &type);private:/void SortCard(Card ca);/void SendCard();/发牌bool CheckCard(int pl);Card PreOut20;Managers.cpp文件/#include stdafx.h#
10、include program.h#include Managers.h#include mmsystem.h#include ProgramView.h#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE=_FILE_;#define new DEBUG_NEW#endif/ Construction/Destruction/Managers:Managers()Game_State=-2;PlayerAc = -1;t=30;p0=p1=p2=0;Power=10;m_CardSound = true;Managers:Managers()v
11、oid Managers:GameStart()int k;for(k=0;k20;k+)PlayCards1k.Click=false;for(k=0;k3;k+)Sendleftk.Click=true;if(MainComputer)/Power=10;OutCards0.Num=16;PlayerMaininfo=0;SendCard();PlayerMain=rand()%3;Game_State=-1;else/GetCard();bool Managers:CheckCard(int pl)Card *Ca=PlayCardspl;/用Ca 指针来代替Playerpl,使程序简单
12、容易理解int i,j;int num1,min1,type1;int num2,min2,type2;j=0;for(i=0;i20 & Cai.Num=15;i+)if(Cai.Click)PreOutj=Cai;j+;if(j=0)return false;else if(j!=20)PreOutj.Num=16;/表示此后的都没有牌了Ca=PreOut;/现在把CA指到这里CardsInfo(Ca,num2,min2,type2);if(OutCards0.Num=16)/上次没有人走牌if(type2=4 & num2=4)| type2=5)PlaySound(res炸弹.wav,
13、NULL,SND_ASYNC |SND_NODEFAULT);if(type2 != 5)PlaySound(reszhadan.wav,NULL,SND_ASYNC |SND_NODEFAULT);else PlaySound(reswangzha.wav,NULL,SND_ASYNC |SND_NODEFAULT);PlayS(min2,type2,num2);if(type2!=0)return true;if(OutPlayer=PlayerAc)/上次走牌的人 OutPlayer就是自己,那么自己可以随便走什么/改变if(type2=4 & num2=4)| type2=5)Play
14、Sound(res炸弹.wav,NULL,SND_ASYNC |SND_NODEFAULT);if(type2 != 5)PlaySound(reszhadan.wav,NULL,SND_ASYNC |SND_NODEFAULT);else PlaySound(reswangzha.wav,NULL,SND_ASYNC |SND_NODEFAULT);PlayS(min2,type2,num2);if(type2!=0)return true;if(type2=0)return false;CardsInfo(OutCards,num1,min1,type1);if(type1=5)/双鬼re
15、turn false;if(type2=5)PlaySound(res炸弹.wav,NULL,SND_ASYNC |SND_NODEFAULT); PlaySound(reswangzha.wav,NULL,SND_ASYNC |SND_NODEFAULT);return true;if(type1=4 & type2=4)if(num2=num1)if (min1min2)if (num1=4)PlaySound(res炸弹.wav,NULL,SND_ASYNC |SND_NODEFAULT);PlaySound(reszhadan.wav,NULL,SND_ASYNC |SND_NODEF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 斗地主的制作与实现报告 完整源代码毕业设计论文word格式 地主 制作 实现 报告 完整 源代码 毕业设计 论文 word 格式
链接地址:https://www.31ppt.com/p-4025192.html