![](https://csdnimg.cn/release/download_crawler_static/87352250/bg1.jpg)
程序设计综合实践报告
姓名
Fybc
学号
班级
项目名称
飞机大战游戏设计与实现
实习地点
软件工程实验室
实习时间
2022-6-20 至 2022-7-01
实习成绩
指导教师签字
计算机科学与工程学院
2019 年 06 月 28 日
![](https://csdnimg.cn/release/download_crawler_static/87352250/bg2.jpg)
目 录
程序设计综合实践报告 ......................................1
1. 概述 ...................................................3
1.1. 项目介绍 ..........................................3
1.2. 主要功能 ..........................................3
2. 相关技术 ...............................................3
2.1. Socket 异步非阻塞 TCP 通信连接的建立 ...............3
2.2. 网络通信的信息传输 ................................4
2.3. 图像绘制的双缓冲技术 ..............................4
2.4. 控制类 ............................................4
2.5. 多态 ..............................................4
2.6. 伪计时器 ..........................................5
3. 总体设计与详细设计 ..................................5
3.1. 系统模块划分 ......................................5
3.1.1. 客户端系统模块划分 ..............................5
3.1.2.服务端系统模块划分 ...............................5
3.2. 主要功能模块 ..............................................................................7
4. 编码实现 ...............................................................................................7
4.1. Socket 连接建立 ...........................................................................7
4.2. 网络通信信息传输 ......................................................................8
4.3. 双缓冲绘图 ..................................................................................8
4.4.控制类 ............................................................................................9
![](https://csdnimg.cn/release/download_crawler_static/87352250/bg3.jpg)
4.5 双战机(多态) ...........................................................................9
4.6 伪计时器 .....................................................................................10
5. 实训中遇到的主要问题及解决方法 .................................................10
5.1 客户端服务端同步 .....................................................................10
5.2 服务端显示闪烁 .........................................................................10
6. 实训分工及体会 .................................................................................10
![](https://csdnimg.cn/release/download_crawler_static/87352250/bg4.jpg)
1. 概述
1.1. 项目介绍
本项目是基于 MFC 设计的“局域网联机飞机大战”小游戏。项目的网络通信部分基于 MFC
Socket API。游戏有服务端与客户端,分别供一名玩家进行游戏。两名玩家各自操控一大一
小两架各有特色的战机,尽量存活,到指定时间即胜利。
1.2. 主要功能
1、网络通信:
基于 Socket 异步非阻塞的 TCP 网络通信,在客户端与服务端之间实现信息传输。
2、基本游戏内容:
战机、敌机、血条、子弹等基本游戏对象,死亡判定、胜负判定、道具加成各种游
戏规则,画面显示、战机控制等基本游戏功能。
3、服务端与客户端的同步:
客户端的按键操作传递到服务端,服务端接收信息并计算。计算后的绘图信息传递
到客户端,客户端接收并绘图。实现双端控制,两个战机分别独立控制,游戏内容同步。
2. 相关技术
2.1. Socket 异步非阻塞 TCP 通信连接的建立
定义:
Socket 也称为套接字,套接字是支持 TCP/IP 网络通信的基本操作单元。
异步(消息通信机制):调用在发出之后直接返回,不必等待接收方响应(同步需要)。
非阻塞(程序在等待调用结果时的状态):调用在不能立刻得到结果之前,该调用不会
阻塞当前线程。
TCP 传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。
服务端连接建立:
1、 创建 Socket1(建立连接),Socket2(信息通信)。
2、 初始化套接字库。(AfxSocketInit())
3、 初始化套接字 Socket1。(socket())
4、 设置端口、IP 并绑定 Socket1。(bind())
5、 开始监听,等待客户端消息。(listen())
6、 设置异步套接防止阻塞。(WSAAsyncSelect())
7、 收到客户端连接请求,初始化 Socket2,连接建立。(accept())
客户端连接建立:
1、 创建 Socket。
2、 初始化套接字库。(AfxSocketInit())
3、 初始化套接字 Socket。(socket())
4、 设置异步套接防止阻塞。(WSAAsyncSelect())
5、 发送连接请求。(connect())