您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > excel-vba实例-小游戏
241214610111159513873123456789101112131415目标:按顺序排列用Excel编写小游戏外国华容道:有n*n个格,有一格是空的,其他格是次序混乱的拼图或数字,游戏的目的就是利用这唯一的这个空格移动各块拼图把混乱的拼图(数字)恢复(顺序)。这里我们小游戏的目的是要把1至15这15个次序混乱的数字恢复从1到15的顺序排列。编写过程:第一步,打开Excel后打开代码编写器(Alt+F11),将如下代码写入其中一个工作表(Sheet)的通用代码部分中。此下是本游戏宏的总入口,由工作区中button启动,如果愿意也可以让游戏宏在打开该表时自动运行SubBegin()IfrunningThenCells(border.row,border.col).ClearContents'将唯一的空格初始化在右下角running=FalseEndIfinitialize'调用全局初始化函数EndSub全局初始化函数Functioninitialize()用Excel编写小游戏(2)IfNotrunningThenDimiAsIntegerDimiiAsIntegerDimtempAsIntegerDima(14)AsIntegerrunning=TrueN=4init_pos.col=5init_pos.row=5border.row=init_pos.row+N-1border.col=init_pos.col+N-1blank.col=border.colblank.row=border.row'游戏区域(颜色)初始化,省略了单元格大小的调整,大家可以应该加入相应语句让游戏外观整齐Range(Cells(init_pos.row,init_pos.col),Cells(border.row,border.col)).Interior.ColorIndex=5'随机数数组初始化,这里是编号0到编号14共15个数Fori=0To(N*N-2)a(i)=i+1很明显,Excel的单元格是游戏的主角。初始化后游戏开始,逻辑很简单:玩家每单击一个单元格(产生Worksheet中的SelectionChange事件),游戏就判断这个格是否在游戏区域中,若是就判断上下左右4个方向是否有空格,如果有空格就把原单元格中的数传到空格中,原单元格清空(空格与原单元格交换),然后判断游戏是否结束(1到15顺序排序了?),若还没有,什么都不做,等下一次单击事件发生。PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)IfrunningThen'所单击单元格是否就是空格If(Target.rowblank.rowOrTarget.Columnblank.col)Then'所单击单元格是否在游戏区域If((Target.row=init_pos.rowAndTarget.row=border.row)And(Target.Column=init_pos.colAndTarget.Column=border.col))Then'所单击单元格上下左右是否有空格If((Abs(blank.col-Target.Column)=1Andblank.row=Target.row)Or(Abs(blank.row-Target.row)=1Andblank.col=Target.Column))Then'单元格与空格交换Cells(blank.row,blank.col)=Cells(Target.row,Target.Column)Cells(Target.row,Target.Column).ClearContentsblank.col=Target.Columnblank.row=Target.rowEndIfEndIfEndIf'判断游戏是否结束?DimiAsIntegeri=0DoWhile(iN*NAndCells(init_pos.row+i\N,init_pos.col+iModN)=i+1)i=i+1LoopIfi=N*N-1ThenMsgBox(你成功了!)第二步:在模块1中输入TypeposrowAsIntegercolAsIntegerEndType'blank为空格的位置,初值为最后一格PublicblankAspos'init_pos为游戏区域的左上角,控制游戏区域的位置,这里为(5,5)单元格Publicinit_posAspos'border为游戏区域边界PublicborderAspos'N为游戏区域的大小,控制游戏的规模(N*N),这里N=4PublicNAsInteger'running用于判断游戏是否进行中,如果要中途退出或玩家需要重玩用此变量控制PublicrunningAsBoolean第三步:最后在Excel工作区中放个button,用来调用游戏宏启动游戏。双击button,输入代码PrivateSubbutton_Click()CallBeginEndSub保存后单击button,游戏开始了!
本文标题:excel-vba实例-小游戏
链接地址:https://www.777doc.com/doc-4532919 .html