
游戏应该给人们带来欢乐和愉悦而不是担心,并且为了满足乐趣,有时一片叶子就足够了. 对于我们游戏迷来说,asm,c,c ++,directx,opengl,flash等不是我们必需的知识和工具,有时某些意外的实现可以更好地体现游戏的简单含义.
办公软件Excel是每个人都熟悉的,但是我对其功能并没有多说. 但是您是否曾经想到过也可以在Excel中实现小型游戏?这不是指97版本的Excel中的Easter Caidan游戏,而是指实际上使用Excel资源编写并在Excel下运行的小型游戏. 经过几代升级,MS Office下的Visual Basic for Application(VBA)语言的功能已得到极大改进. 从理论上讲,可以在Excel中实现平面游戏. 当然,这也应响应Excel工作区的特征. 与这些小型游戏一样,在Excel中编写应用程序通常会通过Visual Basic编写宏. 至于如何开始编写宏,如何插入表格以及一些用于选择单元格的行和列,更改单元格的颜色,清除单元格的内容等的语句,在这里我们假设每个人都知道,而不会不了解帮助. 老实说,我对应用程序的视觉基础不是很熟悉,整个过程一直在寻求帮助. 下面为您介绍代码.
让我们从一个简单的开始. 您是否玩过外国华容道,即有n * n个网格,一个网格是空的,其他网格是无序的难题或数字. 游戏的目的是利用这个唯一的空间来移动拼图,使拼图(数字)恢复(序列)感到困惑. 我们这里迷你游戏的目的是将15个混沌数字从1还原为15,从1还原为15,就像Rising网站上的数字一样(我不知道它是否还在这里).
打开Excel并打开代码编写器(Alt + F11),然后将以下代码写入其中一个工作表(Sheets)的通用代码部分. 程序首先被初始化. 定义数据结构,选择4 * 4个空格,调整表的大小,更改单元格颜色(标记游戏区域),然后将1到15个非重复的随机分布放到前15个空格中:
pos类型
行为整数
col作为整数
结束类型
'空白是空格,初始值是最后一个空格
公共空白为pos
'init_pos是游戏区域的左上角,它控制游戏区域的位置,这里是(5,5)单元格
公共init_pos作为pos
“边界是游戏区域的边界
公共边界为pos
'N是游戏区域的大小,并控制游戏的大小(N * N),其中N = 4
公共N为整数
'running用于确定游戏是否在进行中. 如果您想中途退出或玩家需要重播,请使用此变量控件
以布尔值形式公开运行
'这是该游戏宏的常规入口,它由工作区中的按钮启动. 如果需要,还可以在打开表时让游戏宏自动运行.
子开始()
如果正在运行,则
单元格(border.row,border.col). ClearContents仅初始化右下角的空格
running = False
如果结束
initialize'调用全局初始化函数
结束子
'全局初始化功能
函数initialize()
如果没有运行则
将我视作整数
Dim ii为整数
将温度设置为整数
将(14)设置为整数
running = True
N = 4
init_pos.col = 5
init_pos.row = 5
border.row = init_pos.row + N-1
border.col = init_pos.col + N-1
blank.col = border.col
blank.row = border.row
'游戏区域(颜色)被初始化,并且像元大小的调整被省略. 您可以添加相应的语句以使游戏看起来更整齐
范围(单元格(init_pos.row,init_pos.col),单元格(border.row,border.col)). Interior.ColorIndex = 5
'初始化随机数数组,这里是从0到14的15个数字
对于i = 0到(N * N-2)
a(i)= i + 1
下一个我
“唯一的随机分布数字
对于i = N * N-2至0步骤-1
随机化
ii = Int(Rnd * i)
temp = a(i)
a(i)= a(ii)
像元(init_pos.row + i / N,init_pos.col +(i Mod N))= a(i)
a(ii)=温度
下一个我
如果结束
结束功能
显然,Excel的单元是游戏的主角. 初始化后,游戏开始. 逻辑非常简单: 每次玩家单击一个单元格(在工作表中生成SelectionChange事件)时,游戏都会确定该单元格是否在游戏区域中. 如果是这样,它将确定在四个方向上是否存在空格: 上,下,左和右. 空格会将原始单元格中的数字传递到该空格,清除了原始单元格(该空间与原始单元格交换了),然后游戏结束了(从1到15?). 如果没有excel2013内置游戏,则什么也不做. ,等待下次点击事件发生.
Private Sub Worksheet_SelectionChange(按目标值作为范围)
如果正在运行,则
'被点击的单元格是否为空格
如果(Target.row <> blank.row或Target.Column <> blank.col)然后
“被点击的单元格是否在游戏区域中
如果(((Target.row> = init_pos.row and Target.row <= border.row)And(Target.Column> = init_pos.col And Target.Column <= border.col))然后
'您单击的单元格的顶部excel2013内置游戏,底部,左侧和右侧是否有空格?
如果((Abs(blank.col-Target.Column)<= 1并且blank.row = Target.row)或(Abs(blank.row-Target.row)<= 1并且blank.col = Target. 列))然后
'用空格交换单元格
单元格(blank.row,blank.col)=单元格(Target.row,Target.Column)
单元格(Target.row,Target.Column).ClearContents
blank.col = Target.Column
blank.row = Target.row
如果结束
如果结束
如果结束
“游戏结束了吗?
将我视作整数
i = 0
Do While(i i = i + 1 循环 如果i = N * N-1那么 MsgBox(“您成功!”) running = False 如果结束 如果结束 结束子 最后,在Excel工作区中放置一个按钮以调用游戏宏以启动游戏. 双击按钮并输入代码 私人子按钮_点击() 呼叫开始 结束子 保存后单击按钮,游戏将开始! 此游戏还可以添加诸如计时,时限和移动步数计数等功能,并将其记录在表中的某个位置作为游戏记录. 该游戏没有反作弊功能,人们可以随意修改单元格中的值,而这可能受到Worksheet_Change事件的限制(但我无话可说).
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shouji/article-151995-1.html
而且这次派出的052D也是旧军舰了