概要
声明:本文大部分内容参考up主进行编写(C语言飞机大战)
并对他没有讲解到的进行延续,以及本人编写时遇到的诸多问题。
整体架构流程
1.准备飞机大战所需素材,并预装esayx第三方图形库。
2.游戏窗口创建及游戏角色的的创建
3.游戏角色的移动
4.对游戏角色进行移动边界限制
5.玩家飞机子弹的的发射与移动
6.大量敌机的绘制与移动
7.定时器的设置
8.背景音乐及得分面板的输出
技术名词解释
所需函数
- initgraph(宽 , 高 , SHOWCONSOLE) //绘制游戏窗口
- loadimage(&图片 , _T("图片路径")) //加载图片
- putimage(x坐标 , y坐标, &img_palyer[0] , NOTSRCERASE) //对窗口进行贴图
- putimage(x坐标 , y坐标, &img_palyer[1] , SRCINVERT) //并进行掩码处理
- mciSendString(LPCSTR("open 路径 alias BGM"), 0, 0, 0); //音乐调用
- outtextxy(宽 * 0.5, 高 * 0.9, _T("得分:")) //得分板绘制
- 使用ps进行掩码图绘制
技术细节
编程过程中遇到的一些棘手问题:
- 基础准备:字符集要使用多字节字符集;SDL检查改为否;链接器输入依赖库导入winmm.lib静态库。
- 头文件准备 #include<Windows> //调用windows 的API
#include<mmsystem.h> //多媒体接口
#pragma comment(lib,"winmm.lib") //导入静态库 - 音乐文件可能直接改后缀没有用,本人就是到QQ音乐转格式才通过编译
- mciSendString调用时,我使用repeat编译通过,但无法发出声音,看了许多大佬解释,都没有用,后面我朋友看了微软手册给我说可能重复了,mciSendString执行了两次,意思就是音乐一直从0h0m0s开始循环,然后让我加个全局变量控制,果然好了: 代码如://控制音乐的全局变量