基于ARM和WinSock的多人对战游戏平台设计
[09-08 11:42:43] 来源:http://www.88dzw.com 其它电路 阅读:8895次
文章摘要: 事先定义针对每个点、每个方向的8个整型数组(初始值赋为0): 对于坐标点(i,j),搜索过程中若遇到具有相同状态的点(m,n),则对应方向数组的[i][j]成员的值增加,遇到不同状态点则减小。保存8个中绝对值最大的。 上述操作完后,比较所有点存的值,绝对值最大的说明以该点起始的某个方向己方棋子相连较多,或者对方棋子相连较多,最适合落子。3.3 双人游戏 从游戏开始到结束,客户端与服务器的交互过程如图6所示。3.3.1 服务器端程序 创建基于对话框的MFC工程。 在App类的BOOL InitInstance()中加载套接字库:AfxSocketIni
基于ARM和WinSock的多人对战游戏平台设计,标签:电路设计,http://www.88dzw.com事先定义针对每个点、每个方向的8个整型数组(初始值赋为0):

对于坐标点(i,j),搜索过程中若遇到具有相同状态的点(m,n),则对应方向数组的[i][j]成员的值增加,遇到不同状态点则减小。保存8个中绝对值最大的。
上述操作完后,比较所有点存的值,绝对值最大的说明以该点起始的某个方向己方棋子相连较多,或者对方棋子相连较多,最适合落子。
3.3 双人游戏
从游戏开始到结束,客户端与服务器的交互过程如图6所示。
3.3.1 服务器端程序
创建基于对话框的MFC工程。
在App类的BOOL InitInstance()中加载套接字库:AfxSocketInit();
在Dlg类的BOOL OnInitDialog()中初始化套接字,包括新建和绑定套接字:socket()、bind();
在对话框上画两个按钮控件:“连接用户”和“开始游戏”。
开发流程如图7所示。
对于某些步骤需要作详细说明:
1)开辟线程
如果让服务器一直recvfrom(),则主线程将一直执行此函数,造成消息拥堵,从而导致其他事件难以响应,因此选择开辟新线程在后台接收客户端信息,合理分配系统资源。
开辟线程的过程如下:
①定义要传送给线程的全局性质的结构体RECVPARAM,成员为Dlg类指针类型变量。
②定义RECVPARAM结构体变量pRecvParam,并把当前工程的Dlg类指针赋给其成员;创建线程,把pRecvParam传递给线程;然后关闭线程。
③在线程回调函数中接收传递来的变量pRecvParam,然后就可以调用Dlg类的成员来实现功能。
2)信息格式
①客户端连接信息
格式随意的字符串,目的是让服务器端接收到数据,从而发现客户端IP地址。我们发的是“0000”。
②客户端下棋信息
信息格式:用户标识(1位)、落子横坐标(2位)、落子纵坐标(2位)。
其中,用户标识位1代表先手(白方),0代表后手(黑方)。
③服务器端发送信息
指导客户端画棋子以及显示状态。
信息格式:用户标识(1位)、落子横坐标(2位)、落子纵坐标(2位)、游戏状态(1位)。
其中,前5位与从客户端接收的相同:游戏状态位1表示游戏结束,0表示游戏未结束。
3.3.2 客户端程序
创建基于单文档的MFC工程。
在App类的BOOL InitInstance()中加载套接字库:AfxSocketInit();
添加对话框资源CDlgMode,用于选择游戏模式:
添加对话框资源CDlgLink,用于连接服务器;并在其上画一个IP地址控件,用于填写服务器IP;在确定按钮的响应函数中初始化套接字socket()、bind(),并向服务器发送连接请求sendto();
《基于ARM和WinSock的多人对战游戏平台设计》相关文章
- › 基于ARM架构的上网本解决方案
- › 基于ARM的多通道专业MP3播放器设计
- › 基于ARM9的指纹识别门禁系统设计
- › 基于ARM和WinSock的多人对战游戏平台设计
- 在百度中搜索相关文章:基于ARM和WinSock的多人对战游戏平台设计
- 在谷歌中搜索相关文章:基于ARM和WinSock的多人对战游戏平台设计
- 在soso中搜索相关文章:基于ARM和WinSock的多人对战游戏平台设计
- 在搜狗中搜索相关文章:基于ARM和WinSock的多人对战游戏平台设计