游戏功能拓展
标签: 消灭星星小游戏
学习人数: 13.5k

同学们学到这里已经能自己写一个带图形界面的小游戏出来了,首先要恭喜大家。

但是,我们这个小游戏依然十分的简陋,除了功能十分少之外,还存在着一些不易发现的问题。

 

功能上的缺失

这个留给同学自行去扩展更丰富的玩法,比如关卡,界面的美化等等。

 

资源没有回收释放

我们需要在游戏结束时将申请的Image和Window资源统一释放掉,养成良好的编码习惯。

#include<opencv2/opencv.hpp>
#include<stdio.h>
using namespace cv;

const int WIDTH = 15;
const int HEIGHT = 20;

int mpt[HEIGHT][WIDTH] = { 0 };
Mat image_background;
Mat image_background_new;
Mat image_red;
Mat image_yellow;
Mat image_green;
Mat image_purple;
Mat image_blue;
Mat image_gameover;
int score = 0;//分数
int clear_num;//单次消除个数

enum
{
	CV_EVENT_MOUSEMOVE = 0,//移动
	CV_EVENT_LBUTTONDOWN = 1,//左键按下
	CV_EVENT_RBUTTONDOWN = 2,//右键按下
	CV_EVENT_MBUTTONDOWN = 3,//中键按下
	CV_EVENT_LBUTTONUP = 4,//左键弹起
	CV_EVENT_RBUTTONUP = 5,//右键弹起
	CV_EVENT_MBUTTONUP = 6,//中键弹起
	CV_EVENT_LBUTTONDBLCLK = 7,//左键点击
	CV_EVENT_RBUTTONDBLCLK = 8,//右键点击
	CV_EVENT_MBUTTONDBLCLK = 9 //中键点击
};

void Init() { //初始化加载要用到的图片
	image_background = imread("./Image/background.png");
	image_background_new = imread("./Image/background.png");
	image_red = imread("./Image/red.png");
	image_yellow = imread("./Image/yellow.png");
	image_green = imread("./Image/green.png");
	image_purple = imread("./Image/purple.png");
	image_blue = imread("./Image/blue.png");
	image_gameover = imread("./Image/gameover.png");
	if (image_background.empty()) {
		printf("could not load image...\n");
		exit(1);
	}
}

Mat SwitchColor(int color) {//1对应红色星星 2对应黄色星星...
登录查看完整内容


课后作业

完成本节课的内容


登录后开始许愿

暂无评论,来抢沙发