是这样,当我突然无聊决定把开心消消乐这款游戏下回来救村长的时候,我脑海里灵机一动,决定自己上号写一个
先来看看效果图吧
玩法就是跟消消乐的一样,让三个或更多的相同图案排列成一行或者一列即可消除,但是开心消消乐是闯关制,这个是时间制,时间到了游戏就结束了。
把代码贴下面:
//画素材的x和y都是反的,因为x表示行,但是画出来x表示列,y同
#include <graphics.h>
#include <fstream>
#include <strstream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
#pragma comment(lib, "Winmm.lib")
using namespace std;
/*******************************定义枚举类型*****************************/
enum color{blank, red, yellow, blue, green, white, orange, purple, shizijia, zhadan, qicai, alarm};
/*******************************定义全局变量*****************************/
const int MaxT = 12; // 时间上限
const int T = 10 * MaxT;// 时间速度
const int V = 300; // 停留时间
clock_t start, now; // 控制时间
color gem[9][8]; // 地图
// IMAGE对象
IMAGE img[12], music_img[2], exit_img, jindutiao;
int Score, Time; // 成绩 时间
bool Flag, Music = true;// 是否加载 音乐
/**********************************函数声明*****************************/
void load(void); // 加载IMAGE对象
void Blank(void); // 清空
bool soso(void); // 搜索空格
bool baidu(void); // 搜索解法
void New(void); // 更新
void print(void); // 输出
bool judge(void); // 判断是否可以消除
void fall(void); // 下落
void draw(void); // 消除
bool quit(void); // 是否重新开始
void play(void); // 游戏过程
/**********************************定义函数*****************************/
void load(void)
{
char c[20];
int i;
// 加载IMAGE对象
for (i = 0; i < 12; i++)
{
ostrstream strout(c, 50);
strout <<"图片\\" <<i <<".jpg" <<ends;
loadimage(&img[i], c);
}
loadimage(&music_img[0], "图片\\音乐关.jpg");
loadimage(&music_img[1], "图片\\音乐开.jpg");
loadimage(&exit_img, "图片\\退出.jpg");
loadimage(&jindutiao, "图片\\进度条.jpg");
// 加载音乐
mciSendString("open 背景音乐.mp3 alias mymusic", NULL, 0, NULL);
// 随机种子
srand(unsigned(time(NULL)));
// 打开文件
ifstream fin("存档.dat");
if (!fin)
throw -1; // 如果打开失败则抛出异常
// 读存档
fin >>Flag >>Music;
if (Flag)
{
HWND wnd = GetHWnd();
SetWindowText(wnd, "对对碰");
if (MessageBox(wnd, "是否继续上次游戏?", "游戏开始", MB_YESNO | MB_ICONQUESTION) == IDYES)
{
fin >>Score >>Time;
for (i = 0; i < 9; i++)
for (int j = 0; j < 8; j++)
{
int t;
fin >>t;
gem[i][j] = color(t);
}
}
else
Flag = false;
}
fin.close();
}
void Blank(void)
{
for (int i = 1; i < 9; i++)
for (int j = 0; j < 8; j++)
gem[i][j] = blank;
print();
fall();
}
bool soso(void)
{
for (int i = 1; i < 9; i++)
for (int j = 0; j < 8