我们上一节发现没有判断游戏是否结束,那么这一节就要判断游戏是否结束以及计算机游戏得分。
第一步:游戏结束的条件
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 //中...
完成本节课的内容
登录后开始许愿
暂无评论,来抢沙发