基于VC++的四国军棋网络游戏设计与实现

news/2024/11/29 16:32:15/

目录
第一章 绪论 1
1.1 问题概述 1
1.1.1 问题的来源 1
1.1.2 目的和意义 1
1.1.3 国内外研究现状 1
1.2 问题剖析 2
1.2.1 主要问题 2
1.2.2 难点和关键 3
1.2.3 思路和方法 3
第二章 相关的知识和工具 4
2.1 解决问题的知识基础 4
2.2 开发平台 5
2.3 数据库 5
第三章 总体设计 6
3.1 总体设计的框架 6
3.2 模块功能概述 7
3.3 关键算法 8
3.4关键技术 12
第四章 详细设计 14
4.1数据库结构 14
4.2模块结构 14
4.3 重要模块详述 15
第五章 程序编码 19
5.1 数据结构 19
5.2主要界面 22
5.3 重要模块程序实现 24
第六章 问题和展望 32
6.1 特色与成功 32
6.2 问题与展望 32
参考文献 33
附录 34
游戏大厅 34
游戏类 38
3.2 模块功能概述
客户端类的划分:
游戏基本类:负责处理游戏中一些完成基本功能的类,如处理声音类、处理动画图标,图形按钮等类,基本类的特点是被其他类在特定处所调用,并不动生成对象。
游戏框架类:负责处理游戏中客户端用于显示程序界面和绘制游戏界面以及显示用户信息和广告信息等处理任务。
游戏通信类:负责处理游戏中客户服务器之间的网络传输细节,从而在编程中不用考虑网络通信细节,达到客户和服务器之间的透明的效果。
游戏应用程序类:主要负责处理应用程序中各种设置显示对话框、程序主线程处理、程序中基本的运行类框架的管理,以及游戏中图形的处理和显示等任务的处理。
游戏处理类:本文转载自http://www.biyezuopin.vip/onews.asp?id=14984主要用于处理游戏简单逻辑、负责解析和处理与服务器端交互的游戏数据,以及在游戏运行中维护游戏中的各种数据,同时维护处理游戏主线程逻辑等功能。

服务器类的划分:
游戏通信类:负责处理游戏中客户服务器之间的网络传输细节,从而在编程中不用考虑网络通信细节,达到客户和服务器之间透明传输的效果。
游戏协议类:负责处理游戏中客户服务器之间交互所传递的数据,并且对该数据格式进行打包和解包,同时根据该包中所包含的指令串进行相应的操作。
游戏逻辑类:负责处理游戏逻辑,如军棋游戏中用于维护军棋逻辑,判断下棋,得分等处理类。
用户管理类:用于管理用户资料,在用户登录后通过数据库验证用户名和密码,通过验证后从数据库读取用户的详细资料。同时在程序中维护用户数据,在用户游戏结束和退出游戏时将用户数据保存到数据库中。
服务器框架类:用于管理游戏大厅的数据,包括一些数据的列表。
数据库类:用于网络游戏的服务器端在处理大量的客户资料时,使用数据库进行大量数据的存储和查询所调用的类方法。

// Client.cpp: implementation of the CClient class.
//
//#include "stdafx.h"
#include "CGameHallFrame.h"
#include "Client.h"
#include "CGameHallFrameView.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//
// Construction/Destruction
//CClient::CClient()
{m_hSocket=NULL;
}CClient::~CClient()
{}void CClient::ClientInit()
{if(WSAAsyncSelect(m_hSocket,m_hWnd,CLI_MESSAGE,FD_READ|FD_WRITE|FD_CLOSE|FD_CONNECT)>0){AfxMessageBox("Error in select");}
}BOOL CClient::InitAndConnect(HWND hWnd, UINT port, CString strServer)
{m_hWnd=hWnd;m_uPort=port;m_strServer=strServer;if(m_hSocket!=NULL){//先将以前打开的套接字关闭closesocket(m_hSocket);m_hSocket=NULL;}//创建面向连接的socketm_hSocket=socket(AF_INET,SOCK_STREAM,0);ASSERT(m_hSocket!=NULL);ClientInit();//设置连接信息:网络协议+IP地址+端口m_addr.sin_family=AF_INET;m_addr.sin_addr.S_un.S_addr=inet_addr(m_strServer.GetBuffer(0));m_addr.sin_port=htons(m_uPort);//连接服务器int ret=0;int error=0;ret=connect(m_hSocket,(LPSOCKADDR)&m_addr,sizeof(m_addr));if(ret==SOCKET_ERROR){//连接失败if(GetLastError()!=WSAEWOULDBLOCK){AfxMessageBox(_T("请确认服务器确实已经打开并工作在同样的端口!"));return FALSE;}}return TRUE;
}void CClient::GetString(CString &str)
{recv(m_hSocket,str.GetBuffer(0),1024,MSG_DONTROUTE);
}void CClient::SendString(CString a)
{if(send(m_hSocket,a.GetBuffer(0),a.GetLength(),0)==SOCKET_ERROR){AfxMessageBox("Client Send data error");}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/703661.html

相关文章

美国签证被拒签后怎么办?

当你的美国签证被拒签后,可能会感到失望和困惑。然而,不要灰心,因为你仍然有一些选择和行动可以采取。 首先,了解拒签原因非常重要。美国签证拒签通常有很多原因,包括文件不完整、资金证明不足、提供虚假信息或无法证明…

嗨爆全场!联诚发大屏与荧光棒闪耀周杰伦海口演唱会!

6月29日-7月2日,2023周杰伦嘉年华世界巡回演唱会海口站在海口五源河体育场震撼开唱,来自世界各地的数万名歌迷粉丝齐聚椰城,共享狂欢盛宴。联诚发LCF龙腾S系列LED透明屏和智慧荧光棒系列产品在演唱会现场大放异彩,陪伴粉丝朋友们一…

网络编程——Tcp套接字

文章目录 1. 简单的TCP网络程序1.1 设置监听1.2 服务器提供连接1.3 服务器提供服务1.4 客户端进行连接1.5 本地测试1.6 改进版本1.7 再次测试 1. 简单的TCP网络程序 TCP和UDP差不多,我们还是初始化和启动: 因为客户端和服务器是会有共同的头文件&#…

java ++在前和在后 区别

在Java中,操作符可以放在变量前面,也可以放在变量后面,这两种情况有一些区别。 前置递增(i):先进行加1操作,然后再进行其它操作。 例如: int i 1; int a i; // 先将i加1&#…

硬盘的接口,总线,协议知识点总结

在服务器测试中,关于storage的测试是非常多的,我们会接触很多的盘,比如nvme,m.2,SSD等.当然也有不少概念和协议之类的东西,比如:SATA,PCIe,M.2,NVMe…这些名词想必大家也见得多了,总线,协议,接口也听得耳朵…

硬盘接口类型

硬盘接口类型 硬盘接口类型 并行接口 与 串行接口硬盘接口类型 ATA接口协议SCSI接口协议 参考 并行接口 与 串行接口 并行接口:指采用并行传输方式来传输数据的接口标准。 特点:数据的各位同时进行传送,传输速度快,但当传输距离…

【elementplus】解决el-table开启show-overflow-tooltip后,tooltip的显示会被表格边框遮挡的问题

如图所示: 原因: 1. el-table没有设置高度;2.就是被遮住了 解决: 方法一:给el-table设置高度 方法二: .el-table {overflow: visible !important;}如果不想给el-table设置高度,就直接使用方法二解决即可

在excel表格中画斜线

WIN7: 1)点击你要画斜线的单元格按 ctrl1选择边框选项卡勾选斜线。 2)在在单元格里面斜线的两边要换行,用altenter。(如图:) MAC: 1)点击你要画斜线的单元格按 ctrl1选…