资源简介
Qt写的连连看小游戏,之前的被删了,重新传一遍。
代码片段和文件信息
#include
#include
#include
#include
#include “game_model.h“
// 游戏逻辑模型,与界面分离
GameModel::GameModel() :
gameStatus(PLAYING)
gameLevel(BASIC)
{
}
GameModel::~GameModel()
{
if(gameMap)
{
free(gameMap);
free(hintArray);
gameMap = NULL;
}
}
void GameModel::startGame(GameLevel level)
{
// 用C的方式初始化数组,怀旧一下~
gameMap = (int *)malloc(sizeof(int) * MAX_ROW * MAX_COL);
memset(gameMap 0 MAX_ROW * MAX_COL);
for (int i = 0; i < MAX_ROW * MAX_COL; i++) // 必须这样赋初值,memset容易出问题
gameMap[i] = 0;
hintArray = (int *)malloc(sizeof(int) * 4);
memset(hintArray 0 4);
for (int i = 0; i < 4; i++)
hintArray[i] = -1;
gameStatus = PLAYING;
gameLevel = level;
int gameLevelNum;
switch (gameLevel)
{
case BASIC:
gameLevelNum = kBasicNum;
break;
case MEDIUM:
gameLevelNum = kMediumNum;
break;
case HARD:
gameLevelNum = kHardNum;
}
// 填充方块标号
int iconID = 0;
for(int i = 0; i < gameLevelNum; i += 2)
{
// 每次填充连着的两个,图片用尽了就循环
gameMap[i] = iconID % MAX_ICON + 1;
gameMap[i + 1] = iconID % MAX_ICON + 1;
iconID++;
}
// 打乱方块
srand((unsigned)time(0));
for(int i = 0; i < MAX_ROW * MAX_COL; i++)
{
int randomID = rand() % (MAX_ROW * MAX_COL);
std::swap(gameMap[i] gameMap[randomID]);
}
// 初始化判断模式
isFrozenMode = false;
// 初始化绘制点
paintPoints.clear();
}
// 重载
void GameModel::startGame()
{
startGame(gameLevel);
}
int *GameModel::getGameMap()
{
return gameMap;
}
bool GameModel::isFrozen()
{
// 暴力法,所有方块两两判断是否可以连接
// 每次消除后做一次判断
// 其实在这个过程中记录提示
for (int i = 0; i < MAX_ROW * MAX_COL - 1; i++)
for( int j = i + 1; j < MAX_ROW * MAX_COL; j++)
{
int srcX = i % MAX_COL;
int srcY = i / MAX_COL;
int dstX = j % MAX_COL;
int dstY = j / MAX_COL;
// 只要能找到可以连接的就不为僵局
isFrozenMode = true;
if (isCanlink(srcX srcY dstX dstY))
{
// 记录第一个可以连接的hint
hintArray[0] = srcX;
hintArray[1] = srcY;
hintArray[2] = dstX;
hintArray[3] = dstY;
isFrozenMode = false;
return false;
}
}
isFrozenMode = false;
return true;
}
bool GameModel::isWin()
{
for (int i = 0; i < MAX_ROW * MAX_COL; i++)
{
if (gameMap[i])
return false;
}
gameStatus = WIN;
return true;
}
int *GameModel::getHint()
{
return hintArray;
}
// 最重要的判断连接算法
bool GameModel::canlinkDirectly(int srcX int srcY int dstX int dstY)
{
// 竖线
if (srcX == dstX)
{
if (srcY > dstY)
std::swap(srcY dstY);
for (int y = srcY + 1; y < dstY; y++)
if (gameMap[MAX_COL * y + srcX])
re
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-12-16 11:31 QtLianliankan-master\
文件 6148 2016-12-16 11:31 QtLianliankan-master\.DS_Store
文件 463 2016-12-16 11:31 QtLianliankan-master\QtLianliankan.pro
文件 24181 2016-12-16 11:31 QtLianliankan-master\QtLianliankan.pro.user
文件 275 2016-12-16 11:31 QtLianliankan-master\README.md
文件 12751 2016-12-16 11:31 QtLianliankan-master\game_model.cpp
文件 2033 2016-12-16 11:31 QtLianliankan-master\game_model.h
文件 182 2016-12-16 11:31 QtLianliankan-master\main.cpp
文件 12345 2016-12-16 11:31 QtLianliankan-master\main_game_window.cpp
文件 1478 2016-12-16 11:31 QtLianliankan-master\main_game_window.h
文件 2810 2016-12-16 11:31 QtLianliankan-master\main_game_window.ui
目录 0 2016-12-16 11:31 QtLianliankan-master\pic\
文件 1629043 2016-12-16 11:31 QtLianliankan-master\pic\llkan.gif
文件 1123 2016-12-16 11:31 QtLianliankan-master\res.qrc
目录 0 2016-12-16 11:31 QtLianliankan-master\res\
文件 6148 2016-12-16 11:31 QtLianliankan-master\res\.DS_Store
目录 0 2016-12-16 11:31 QtLianliankan-master\res\image\
文件 6031 2016-12-16 11:31 QtLianliankan-master\res\image\1.png
文件 4944 2016-12-16 11:31 QtLianliankan-master\res\image\10.png
文件 3425 2016-12-16 11:31 QtLianliankan-master\res\image\11.png
文件 4176 2016-12-16 11:31 QtLianliankan-master\res\image\12.png
文件 4036 2016-12-16 11:31 QtLianliankan-master\res\image\13.png
文件 3109 2016-12-16 11:31 QtLianliankan-master\res\image\14.png
文件 3759 2016-12-16 11:31 QtLianliankan-master\res\image\15.png
文件 3117 2016-12-16 11:31 QtLianliankan-master\res\image\16.png
文件 3098 2016-12-16 11:31 QtLianliankan-master\res\image\17.png
文件 4830 2016-12-16 11:31 QtLianliankan-master\res\image\18.png
文件 4063 2016-12-16 11:31 QtLianliankan-master\res\image\19.png
文件 8940 2016-12-16 11:31 QtLianliankan-master\res\image\2.png
文件 2879 2016-12-16 11:31 QtLianliankan-master\res\image\20.png
文件 3516 2016-12-16 11:31 QtLianliankan-master\res\image\21.png
............此处省略17个文件信息
评论
共有 条评论