得分计算与结束
标签: 消灭星星小游戏
学习人数: 8.5k

我们上一节发现没有判断游戏是否结束,那么这一节就要判断游戏是否结束以及计算机游戏得分。

 

第一步:游戏结束的条件

1、星星全部消除完

2、星星已经没有同色相邻的情况

 

第二步:写检查是否结束算法

bool CheckGameOver() {//判断游戏是否结束
	int star_num = 0;
	int flag = 1;
	for (int i = 0; i < HEIGHT; i++) {
		for (int j = 0; j < WIDTH; j++) {
			if (mpt[i][j] != 0) star_num++;
			else continue;
			for (int k = 0; k < 4; k++) {
				int tx = i + direct[k][0];
				int ty = j + direct[k][1];
				if (tx < 0 || ty < 0 || tx >= HEIGHT || ty >= WIDTH) continue;//超边界
				if (mpt[i][j] == mpt[tx][ty]) flag = 0;
			}
		}
	}
	if (star_num == 0) return true;
	return flag;
}

 

第三步:增加游戏结束的状态,游戏结束关闭当前界面,弹出游戏结束界面

代码如下:

#include<opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/highgui/highgui.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;

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 //中...
登录查看完整内容


课后作业

完成本节课的内容


登录后开始许愿

暂无评论,来抢沙发