设为首页 加入收藏

TOP

C语言对对碰游戏源码分享(一)
2018-02-28 08:57:04 】 浏览:519
Tags:语言 游戏 源码 分享

本文实例为大家分享了C语言对对碰游戏的具体代码,供大家参考,具体内容如下

////////////////////////////////////////

//画素材的x和y都是反的,因为x表示行,但是画出来x表示列,y同

////////////////////////////////////////

#include

#include

#include

#include

#include

#include

#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 <<"图片\\" <

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; j++)

if (gem[i][j] == blank)

return true;

return false;

}

bool baidu(void)

{

int i, j;

color t;

bool flag = false;

// 如果有一个道具则返回真

for (i = 1; i < 9; i++)

for (j = 0; j < 8; j++)

if (gem[i][j] >= shizijia)

return true;

// 搜索解法

for (i = 1; i < 9; i++)

for (j = 0; j < 7; j++)

{

t = gem[i][j];

gem[i][j] = gem[i][j + 1];

gem[i][j + 1] = t;

if (judge())

flag = true;

t = gem[i][j];

gem[i][j] = gem[i][j + 1];

gem[i][j + 1] = t;

if (flag)

return true;

}

for (i = 1; i < 7; i++)

for (j = 0; j < 8; j++)

{

t = gem[i][j];

gem[i][j] = gem[i + 1][j];

gem[i + 1][j] = t;

if (judge())

flag = true;

t = gem[i][j];

gem[i][j] = gem[i + 1][j];

gem[i + 1][j] = t;

i
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言之十进制转为二进制的方法 下一篇C 分数矩阵题目描述和题解

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目