连连看游戏的设计及其实现

2015-07-18 12:09赵海国
关键词:小方块数组连线

赵海国, 屈 洋

(湖南理工学院 数学学院, 湖南 岳阳 414006)

连连看游戏的设计及其实现

赵海国, 屈 洋

(湖南理工学院 数学学院, 湖南 岳阳 414006)

连连看游戏是一款界面友好、操作简单、趣味性强的经典小游戏. 本文阐述了基于图形用户界面的连连看游戏的算法设计思想和游戏开发流程, 对开发其他各类游戏有一定的借鉴价值.

连连看小游戏; 图形用户界面; 图形小方块

连连看游戏是一款界面友好, 操作简单, 无需安装客户端, 深受大众喜爱的经典趣味小游戏. 任何用户都能在电脑、手机等各类客户端上轻松地登录游戏并进行游戏操作, 所以该游戏迅速跻身为全球最受欢迎的游戏之一. 基于连连看游戏的经典性和应用广泛性, 本文使用Java语言设计了一个基于图形用户界面的连连看游戏, 着重阐述了连连看游戏的算法设计思想和游戏开发流程, 对开发其他各类游戏有一定的借鉴价值.

1 连连看游戏设计简介

连连看游戏设计分为三个主要部分: 游戏主菜单设计, 游戏图形界面设计、游戏算法设计, 如图1所示.

图1 游戏模块设计图

连连看游戏用户登陆游戏页面后, 选择开始按钮便能进入游戏. 系统将游戏难度分为1至9个不同的等级, 用户可以自行选择游戏难度, 用户选择任意难度等级后直接进入游戏界面. 游戏界面由若干行若干列成对出现的图形小方块组成. 根据游戏难易程度不同, 图形小方块中放置着不同数量的成对图形, 用户通过鼠标点击的方式选择界面中不同位置的两个相同图片. 如果这两个图片在中间没有障碍的情况下可以连线成功, 则系统会实现图片消除, 否则界面不变化, 用户需重新选择重新判断, 直到界面中所有图片都被消除完毕, 则表明游戏成功. 用户如果是新手则可以先看游戏演示, 了解游戏的操作过程, 再自己进行游戏操作. 如果选择的游戏难度太大, 则用户可以选择提示按钮, 系统会提示用户进行下一步的正确操作. 如果用户觉得本次游戏界面上图片排列太杂乱, 则可以选择刷新按钮重新生成界面再继续游戏操作,

具体操作流程如图2所示.

图2 游戏流程图

2 连连看游戏算法设计

连连看游戏的主要算法包括游戏开始阶段的数据初始化算法, 图片加载显示算法, 游戏过程中的图片连线成功判别及图片消除算法, 游戏成功判别算法等等. 游戏主体程序如下:

const int ROW=8;//定义二维数组的行数

const int COL=8;// 定义二维数组的列数

int gameData[ROW][COL]; // 定义用于存放图形的二维数组

void initData( );//数据初始化函数: 将32对图片顺序存入二维数组, 用随机函数打乱元素位置

void displayData( );// 加载游戏数据, 图片显示函数: 使用循环语句显示二维数组中各个图片

bool canClear(int x1,int y1,int x2,int y2);

//连线判别消除函数: 图片配对成功并连线成功则返回1, 否则返回0

bool isVictory( ); //游戏成功判别函数: 游戏成功则返回1, 否则返回0

int main(int argc, char *argv[])

{

initData( );//生成游戏数据, 完成游戏数据初始化

void displayData( ); //加载游戏数据, 显示游戏界面

int x1,y1,x2,y2;

while(true) //循环选择并消除图形配对成功并连线成功的图形小方块, 直到游戏结束

{选择不同位置的两个图形小方块, 将坐标记入(x1,y1)和(x2,y2)

if canClear(int x1,int y1,int x2,int y2)

{ 消除图片 }

if isVictory( ) break; //游戏结束则跳出while( )循环

}

}

连连看游戏开始阶段的数据初始化算法initData( )实现并不复杂: 由于整个游戏界面采用的是地图设计, 地图采用GUI编程的网格布局, 以八行八列的地图网格布局为例, 即将整个游戏操作区域看作是由8 864×=个小方块组成的一幅地图, 每一个小方块放置着相应的图案, 称为图案小方块[1]. 这些图案小方块都是成对出现并随机分布在地图的各个位置, 初始化算法中需要先定义一个存放图片数据的二维数组gameData[8][8], 注意二维数组的下标要和网格布局的行数和列数相同, 通过使用循环语句将8 864×=张且为32对图片依次顺序存放在二维数组中, 再使用随机函数打乱二维数组中各个图形元素的位置, 从而完成游戏数据的初始化.

连连看游戏的核心算法是游戏过程中的图片连线成功判别及图片消除算法canClear(int x1,int y1,int x2,int y2), 该算法实现过程为: 从游戏界面的图形小方块中选择具有相同图案的图案小方块, 若它们符合连线消除算法要求, 通过点击选中图案就会消失, 实现连连看操作. 连连看游戏运行过程中, 若游戏爱好者选中的两个图案小方块配对成功了, 并且选中的两个图案小方块在中间没有任何障碍物阻碍的情况下,可以通过直线直接, 或者有一个折点的垂直线段组合连接, 或者有两个折点的垂直线段组合连接[3], 则这两个图案小方块可以消除, 游戏继续进行, 直至界面中所有图形小方块都被消除完毕. 可见, 实现连连看操作的核心算法就是要先检测到具有相同图案的图案小方块, 再检验这两个方块能否消除. 也就是说两个图案小方块要能真正实现消除, 不仅需要图片配对成功, 还需要连接成功, 两个条件缺一不可:

(1) 图片配对成功: 选择的不同位置上的两个图案小方块有完全相同的两幅图案.

(2) 图片连接成功: 用户通过鼠标点击选择了两个不同位置的图案小方块, 这两个图案小方块在中间没有障碍物阻碍的情况下, 可以用水平或坚直的直线段连接起来; 或者是连接这两个图案小方块的水平或竖直的直线段组合的折点个数不超过两个.

成功实现图片配对非常简单, 只要在二维数组所对应的八行八列网格中对不同的图片定义不同的名称, 检测名称相同则表示图片相同;

成功实现图片连接过程: 判断连线能否成功要看连接两个相同图案小方块的直线组合, 若连接两个相同图案小方块的直线组合为以下三种类型则连线成功[2]:

(1) 直线连接图片方式, 如图3中第一个, 第二个子图的类型;

(2) 一个折点的垂直线段组合连接图片方式[3], 如图3中第三个的类型;

(3) 两个折点的垂直线段组合连接图片方式[3], 如图3中第四个, 第五个, 第六个子图的类型.

图3 图片连接方式图

连连看游戏的第三块主要算法为游戏界面上图片连线消除后的游戏结束判别算法isVictory( ). 连连看游戏运行后, 游戏界面中所有图形小方块的连接都已经完成了之后, 最终需要判断游戏是否胜利. 判断的方法为: 程序为每个图形小方块设计了消除标志并初始化, 每次被消除后则修改消除标志, 最后检测地图网格中的所有图片的消除标志, 只要检测到地图中有一个图案方块还没有被消除, 则证明游戏没有结束; 若检测到地图中每一个图案方块都已经被消除, 则游戏结束.

3 连连看游戏运行及测试

(1) 系统环境创建

在windows7操作系统下安装JDK7.0, 配置系统环境变量.

安装MyEclipse 10并且安装相配套的插件.

(2) 连连看游戏运行及测试

设计相关的类[4], 设计相应的算法, 数据初始化算法, 图片加载算法, 图片消除算法, 游戏成功判别算法等等. 完成界面设计, 调试算法,初始化进入游戏界面进行游戏测试. 点击开始游戏进入游戏初始户界面, 效果如图4所示.

图4 游戏操作界面图

连连看游戏操作简单, 游戏规则也简单, 游戏测试中用户自行选择1到9级任意难度进入游戏开始测试, 用户选择界面内可以用直线连接并相互匹配的两个图片, 点中这两个图片实现消除; 用户选择界面内可以用不多于两个折点的垂直线段组合连接的两个图片, 点中这两个图片实现消除; 用户点击刷新随机改变界面内所有图片位置重新开始游戏; 用户点击游戏提示, 系统提示用户一组可以消除的图片实现消除; 用户点击系统演示, 电脑自动消除界面内图形小方块中所有配对图片直至游戏结束. 通过用户测试, 游戏的各项功能皆已实现.

连连看游戏不仅满足了日常生活中的常用游戏功能需求, 而且具有操作简单, 界面美观, 功能齐全, 趣味性强等优点, 是一款深受大众喜爱的经典趣味小游戏.

[1] James Cohoon, Jack Davidson. Java程序设计[M]. 北京: 清华大学出版社, 2005

[2] 吴其庆. Java程序设计经典教程[M]. 北京: 冶金工业出版社, 2005

[3] 夏先波. Java JDK实例宝典[M]. 北京: 电子工业出版社, 2007

[4] Bruce Eckel. Java编程思想[M]. 北京: 机械工业出版社, 2007

Design and Implementation of Lianliankan Game

ZHAO Hai-guo, QU Yang
(College of Mathematics, Hunan Institute of Science and Technology, Yueyang 414006, China)

Lianliankan (a matching game) is a kind of classic games with friendly interface, simple operation and strong interest. This paper describes the algorithm design idea and development process of Lianliankan game based on graphical user interface, which has some reference value for developing other games.

Lianliankan game; Graphical User Interface(GUI); graphic squares

TP317.6

A

1672-5298(2015)03-0039-03

2015-06-18

赵海国(1980- ), 女, 湖南邵阳人, 硕士, 湖南理工学院数学学院讲师. 主要研究方向: 计算机应用

猜你喜欢
小方块数组连线
JAVA稀疏矩阵算法
快乐连线
小小方块 玩转大课堂
快乐连线
快乐连线
JAVA玩转数学之二维数组排序
快乐连线
涂色问题有妙招
“小方块”该退休了
Excel数组公式在林业多条件求和中的应用