VBNET连连看实训报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

青岛大学软件技术学院

课程设计

题目名称小游戏:连连看

——游戏方法实现

姓名李翔

专业软件技术

班级软件技术(外包)

指导教师曲翠璐

二零一四年一月十六日

目录

前言 (4)

1绪言 (5)

1.1连连看游戏介绍 (5)

2实现本程序所采用的技术 (6)

3功能模块设计 (7)

4我负责的工作 (7)

4.1连连看游戏数据模型 (7)

4.2动物方块布局 (8)

4.3连通算法 (10)

4.4抵消算法流程图 (11)

4.5一折点连通算法 (12)

4.6二折点连通算法 (14)

4.7水平方向判断到边界的连通性 (17)

4.8垂直方向判断到边界的连通性 (17)

4.9只能查找功能的实现 (18)

总结 (19)

致谢 (20)

前言

微软的NET战略是一场软件革命,它改变了开发人员开发应用程序的方式及思想方式,是的开发人员能创建出各种全新的应用程序,这些应用程序在.NET框架下实现的,“Visual 是.NET框架的支柱”。

Visual 程序结构十分清晰,易于学习和使用,同时又不失灵活性和强大的功能,他在开发能力和效率之间取得较好的平衡。它不仅具有快速开发应用程序的能力,而却具有C++的基本特征——面向对象。Visual 已成为功能强大的面向对象的编程语言。

本程序是基于Visual 平台上所编写的一个益智类游戏——宠物连连看。

1绪言

1.1连连看游戏介绍

“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,它是不分男女老少,适合大众的集休闲、趣味,益智和娱乐于一体的经典小游戏。

“连连看”考验的是各位的眼力,在有限的时间内,要把所有能连接的相同图案,两个一对地找出来。每找出一对,它们就会自动消失,只要把所有的图案全部消完即可获得胜利。所谓能够连接,指的是:无论横向或者纵向,从一个图案到另一个图案之间的连线不能超过两个弯(中间的直线不超过三根),其中,连线不能从尚未消去的图案上经过。

本程序的连连看游戏效果如图1.1所示。游戏具有到计时功能,玩家时间是200秒。如果时间到玩家还没完成,则失败。玩家可以重新开始新的一局游戏。

玩家第一次使用鼠标单击游戏界面中的动物方块,该方块此时位被选中状态,以特殊方式(红色方块)显示;再次单击其他方块,如第二个方块与被选中的方块图案相同,且把第一个方块与第二个方块连起来,中间的直线不超过三根,则消掉这一对方快,否则第一个方块恢复成未被选中状态,而第二个方块变成被选中状态。

本游戏增加只能查找功能,当玩家自己无法找到时,可以右键单击画面或菜单栏内选择提示按钮,则会出现提示可以消去的两个方块(被加上蓝色边框线)。

图1.1

2实现本程序所采用的技术

该连连看游戏采用了Visual 开发工具。微软公司最新发布的Visual 完全支持面向对象技术,是在现有Visual Basic 6.0基础上的一次重大飞跃。

本程序采用了一位数组用来绘制游戏地图,并采用绘制图像、鼠标相关事件等实现本程序的技术实现。

3功能模块设计

宠物连连看

开始游戏模块游戏暂停模块游戏提示模块

图3.1

4我负责的工作

4.1连连看游戏数据模型

对于游戏玩家而言,游戏界面上看到的“元素”千差万别、变化多端;但对于游戏开发者而言,游戏界面上的元素在底层都是一些数据,只是不同数据所绘制的图片有差异而已。因此建立游戏的状态数据模型是实现游戏逻辑的重要步骤、

连连看的游戏界面是一个N×M的“网络”地图,没个网络上显示一张图片。但对于游戏开发者来说,这个网络只需要用一个二维数组来定义即可,而每个网络上所显示的图片,对于底层的数据模型来说,不同的图片对应于不同的数值即可。连连看的数据模型如图4.1所示。

对于图4.1所示的数据模型,只要让数值为-1(BLANK_STATE)的网络上不绘制动物图片,其他数值是动物方块的图像ID,非-1(BLANK_STATE)的网络则绘制相应的动物图片,就可显示出连连看的游戏界面。本程序实际上并不是直接使用int二位数组来保存游戏的状态数据,而是采用一位数组m_map。对地图中的行列数的表达,用一个转换法则即可。

例如,点(x,y)对应的数组元素m_map(y * m_nCol + x)。其中,m_nCol是总列数。当然数组元素下标也可换算出在“网络”地图中的坐标点。

图4.1

4.2动物方块布局

由于方块需要成对地出现,因此,在对地图初始化的时候,不应该仅仅对动物方块的图像ID做简单的随机取数,然后将该随机选出来的物件放到地图区域中去,而且需要成对地对动物方块的图像进行选取,就是说地图区域中的小方块必须是哦数个才行。这里引入一个临时地图tmpMap,该临时地图的大小和世纪地图m_map的大小一致。并且先添置好4组完全一样的图像类型ID数据(0 ~ m_nCol * m_nRow / 4)。也就是说每种图像方块有四个。

首先我们可以按顺序把每种动物方块(实际上就是标号ID)排号放入ArrayList列表tmpMap(临时地图)中。实际上程序内不是不需要认识动物方块的图像的,只需要用一个ID来表示,运行界面上画出来的动物图形是根据地图中的ID获取资源里的图片画的。如果ID的值为-1(BLANK_STATE),则说明此处已经被消除了。

代码:

Private Sub StartNewGame()

'初始化地图,将地图中所有方块区域位置置为空方块状态

Dim iNum As Integer

For iNum = 0 To (m_nCol * m_nRow) - 1

m_map(iNum) = BLANK_STATE

Next

Dim r As Random = New Random()

'生成随机地图

'将所有匹配成对的动物物种放进一个临时的地图中

Dim tmpMap As ArrayList = New ArrayList()

Dim i As Integer, j As Integer

For i = 0 To (m_nCol * m_nRow) \ 4 - 1

For j = 0 To 3

tmpMap.Add(i)

Next j

Next i

'每次从上面的临时地图中取走(获取后并在临时地图删除) '一个动物放到地图的空方块上

For i = 0 To m_nRow * m_nCol - 1

'随机挑选一个位置

Dim nIndex As Integer = r.Next() Mod tmpMap.Count '获取该选定物件放到地图的空方块

m_map(i) = CType(tmpMap(nIndex), Integer)

'在临时地图除去该动物

tmpMap.RemoveAt(nIndex)

Next

End Sub

Private Sub Init_Graphic() '生成游戏开始的界面

Dim g As Graphics = get_Graphic() '生成Graphics对象 Dim i As Integer

For i = 0 To 10 * 10 - 1

相关文档
最新文档