用Excel编写小游戏 (转)

用Excel编写小游戏 (转)[@more@]

游戏要给予人的是欢娱快乐而非困扰闹心,要满足玩乐之心,有时一片树叶已经足够。对于我们这些游戏开发爱好者来说,asm、c、c++、DirectX、opengl、flash等并非是我们必需的知识和工具,有时一些意想不到的实现更能体现游戏简单的真意。

办公软件excel大家熟悉不过,其功能我不多说。但大家可有想过在Excel中也可实现个把小游戏?这个不是指97版Excel中的复活节彩旦游戏,而是实实在在的利用Excel资源编写、在Excel下运行的小游戏。经过几代的升级,ms Office下的vba(Visual Basic for application)语言的功能有了很大的提高,在Excel中实现个把平面游戏理论上是可能的。当然这里面也要因应Excel工作区的特点。在Excel中编写应用一般都是通过vba编写宏,这些小游戏也是。至于如何开始编写宏、如何插入窗体及一些选择行列单元格、改变单元格颜色、清除单元格内容等的语句,这里假设大家都知道了,不明白的参考帮助吧。老实说,我对visual basic for application也不大熟悉,做起来整个过程也要不停地看帮助。下面结合代码与大家介绍一下。

先说个简单的。大家玩过那个外国华容道吧,就是有n*n个格,有一格是空的,其他格是次序混乱的拼图或数字,游戏的目的就是利用这唯一的这个空格移动各块拼图把混乱的拼图(数字)恢复(顺序)。这里我们小游戏的目的是要把1至15这15个次序混乱的数字恢复从1到15的顺序排列,就像瑞星网站上那个(不知现在还在不在)。

打开Excel后打开代码编写器(Alt + F11),将如下代码写入其中一个工作表(Sheet)的通用代码部分中。程序首先是初始化。定义数据结构,选择4*4的空格,调整表格大小,改变单元格颜色(标示出游戏区域),然后是让1到15非重复随机分布到前15格空格中:

Type pos
  row As Integer
  col As Integer
End Type

'blank为空格的位置,初值为最后一格
Public blank As pos

'init_pos为游戏区域的左上角,控制游戏区域的位置,这里为(5,5)单元格
Public init_pos As pos

'border为游戏区域边界
Public border As pos

'N为游戏区域的大小,控制游戏的规模(N*N),这里N=4
Public N As Integer

'running用于判断游戏是否进行中,如果要中途退出或玩家需要重玩用此变量控制
Public running As Boolean


'此下是本游戏宏的总入口,由工作区中button启动,如果愿意也可以让游戏宏在打开该表时自动运行
Sub Begin()
If running Then
  Cells(border.row, border.col).ClearContents '将唯一的空格初始化在右下角
  running = False
End If
initialize  '调用全局初始化函数
End Sub

'全局初始化函数
Function initialize()
If Not running Then

Dim i As Integer
Dim ii As Integer
Dim temp As Integer
Dim a(14) As Integer

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

'游戏区域(颜色)初始化,省略了单元格大小的调整,大家可以应该加入相应语句让游戏外观整齐
Range(Cells(init_pos.row, init_pos.col), Cells(border.row, border.col)).Interior.ColorIndex = 5

'随机数数组初始化,这里是编号0到编号14共15个数
For i = 0 To (N*N-2)
  a(i) = i + 1
Next i

'不重复随机分布各数
For i = N*N-2 To 0 Step -1
  Randomize
  ii = Int(Rnd * i)
  temp = a(i)
  a(i) = a(ii)
  Cells(init_pos.row + i N, init_pos.col + (i Mod N)) = a(i)
  a(ii) = temp
Next i
End If
End Function

很明显,Excel的单元格是游戏的主角。初始化后游戏开始,逻辑很简单:玩家每单击一个单元格(产生Worksheet中的selectionChange事件),游戏就判断这个格是否在游戏区域中,若是就判断上下左右4个方向是否有空格,如果有空格就把原单元格中的数传到空格中,原单元格清空(空格与原单元格交换),然后判断游戏是否结束(1到15顺序排序了?),若还没有,什么都不做,等下一次单击事件发生。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If running Then
'所单击单元格是否就是空格
If (Target.row <> blank.row Or Target.Column <> blank.col) Then
'所单击单元格是否在游戏区域
  If ((Target.row >= init_pos.row And Target.row <= border.row) And (Target.Column >= init_pos.col And Target.Column <= border.col)) Then
'所单击单元格上下左右是否有空格
  If ((Abs(blank.col - Target.Column) <= 1 And blank.row = Target.row) Or (Abs(blank.row - Target.row) <= 1 And blank.col = Target.Column)) Then
'单元格与空格交换
Cells(blank.row, blank.col) = Cells(Target.row, Target.Column)
  Cells(Target.row, Target.Column).ClearContents
  blank.col = Target.Column
  blank.row = Target.row
  End If
  End If
End If

'判断游戏是否结束?
Dim i As Integer
i = 0
Do While (i < N*N And Cells(init_pos.row + i N, init_pos.col + i Mod N) = i + 1)
i = i + 1
Loop
If i = N*N-1 Then
MsgBox ("你成功了!")
running = False
End If
End If
End Sub

最后在Excel工作区中放个button,用来调用游戏宏启动游戏。双击button,输入代码
Private Sub button_Click()
  Call Begin
End Sub

保存后单击button,游戏开始了!

这个游戏还可以再加上记时、限时、计算移动步数等功能,并记录在表中某个位置作为游戏纪录。游戏没有防作弊功能,人们能够随便修改单元格中的数值,而这可以通过Worksheet_Change事件加以限制(不过这样的游戏都要作弊我无话可说)。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10794571/viewspace-974708/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10794571/viewspace-974708/

色彩辨识度提升:Excel VBA小游戏项目 Visual Basic for Applications(VBA)是一种事件驱动编程语言,由微软公司在1993年推出,主要用于Office系列软件的自动化。VBA是Visual Basic的一个子集,它继承了Visual Basic的语法结构,使得熟悉VB的开发者能够快速上手。随着计算机技术的发展,VBA逐渐成为了在Office应用中实现自动化、高效完成数据处理和报告生成的重要工具。 阅读详情

相关推荐

使用excel制作俄罗斯方块小游戏

使用excel中vba制作一个小游戏

feifei316631241的博客 1605

Excel VBA小游戏,上班摸鱼必备

Excel 小游戏 介绍 这是我刚学vba的时候做的游戏,这里部分游戏是我自己写的,部分游戏来源网络 下载地址:https://gitee.com/LuoRober/excel_games 游戏目录 1 五子棋 2 三国杀 3 俄罗斯方块-界面版 4 俄罗斯方块-窗体版 5 俄罗斯方块 6 卡牌video poker 7 图灵游戏 8 坦克 9 娱票儿票房分析3 10 扫雷 11 数独3 12 斗地主 13 游戏sliding tile puzzl

1万+

excel小游戏

一款好玩excel小游戏,基于玩家与电脑的对战为基础的类似桌游的小游戏

【用EXCEL编写俄罗斯方块小游戏(基于VBA)】

工作属性原因,工作中使用excel办公是常态。前一阵子因工作业务需求,需要用到VBA。研究了一阵子VBA,解决了当时的需求。 后来想想,VBA可以如此彻底的控制excel,那么可不可以编个小游戏呢。 说干就干,先拿与表格最像的俄罗斯方块试试手。

wrwttsy的博客 7462

Excel益智小游戏人和魔鬼过河

把人和鬼都送到对岸,任何一边鬼都不能比人多,否则鬼吃人,游戏结束,5分钟不能完成者,智商属于底下!^-^

两个用EXCEL制作的小游戏

excel制作的钻石迷情、青蛙过河游戏。转载,非本人原创

用Excel编写小游戏

游戏要给予人的是欢娱快乐而非困扰闹心,要满足玩乐之心,有时一片树叶已经足够。对于我们这些游戏开发爱好者来说,asm、c、c++、directx、opengl、flash等并非是我们必需的知识和工具,有时一些意想不到的实现更能体现游戏简单的真意。办公软件Excel大家熟悉不过,其功能我不多说。但大家可有想过在Excel中也可实现个把小游戏?这个不是指97版Excel中的复活节彩旦游戏,而是实实在

sidekicker的专栏 1万+

用Excel写的十个经典游戏源码

24点Form版3.0、colorlinez、JawBreak、对战五子棋Form版1.0、俄罗斯方块、雷电、连连看、美式9球台球、扫雷、数独、象棋……

(转)用Excel编写小游戏

游戏要给予人的是欢娱快乐而非困扰闹心,要满足玩乐之心,有时一片树叶已经足够。对于我们这些游戏开发爱好者来说,asm、c、c++、directx、opengl、flash等并非是我们必需的知识和工具,有时一些意想不到的实现更能体现游戏简单的真意。 办公软件Excel大家熟悉不过,其功能我不多说。但大家可有想过在Excel中也可实现个把小游戏?这个不是指97版Excel中的复活节彩旦游戏,而是实

sunlingyan2014的专栏 5456

用Multisim仿真石英晶体振荡电路:从等效模型到频响曲线实战

本文通过Multisim软件,从构建石英晶体等效电路模型入手,详细演示了如何仿真分析其电抗频率特性曲线,并实战搭建与调试皮尔斯振荡电路。文章深入探讨了振荡必须工作在串联与并联谐振点之间感性区的原因,为电子设计者提供了从理论到仿真的完整可视化学习路径。

ik67890123的博客 503

AI 算力基础设施深度系列(一):从容器到 Kubernetes——算力底座的诞生

1. 容器 = Namespace(视图隔离) + Cgroup(资源限制) + Union FS(镜像分层)└── 不是虚拟机!共享内核,接近零开销2. K8S 三大设计哲学:└── 声明式 API + 控制循环 + 可扩展架构3. K8S 架构:└── 控制面 (API Server / etcd / Scheduler / Controller Manager)

warm3snow的博客 535

4399小游戏flash插件怎么下载_教你如何在Excel里玩4399小游戏、看flash视频?好玩又新颖...

在Excel里面玩4399小游戏,看视频?没有看错,利用一个小小的控件可以轻松做到。其实不仅是4399小游戏,像其他的7k7k等flash网页游戏都可以利用shockwaveflash控件导入到Excel。闲话不讲,进入主题。控件名称:shockwaveflash思路在浏览器里打开4399小游戏所在网页,找到游戏所在的真正地址。在Excel里插入shockwaveflash控件。将游戏地址链接与s...

weixin_39601657的博客 4047

使用逻辑分析仪处理IIC信号

逻辑分析仪

xc_123的博客 4485

Excel小游戏_魂斗罗再现[分享]

<br />发个小游戏给大家上班时轻松玩,分享一下。<br /><br />Excel小游戏_魂斗罗再现:点击下载

benkensb的专栏 811

华为防火墙 策略路由实现多ISP接入Internet

PC3上网访问Server1时走ISP1。PC4上网访问Server1时走ISP2。1、配置接口IP并加入相应的安全区域。二、ISP2 运营商 R2路由器。一、ISP1 运营商 R1路由器。

一直被模仿,从未被超越 3015

Python+gensim【中文LDA】简洁模型

文章目录完整代码过程详解words_lsdictionarydictionary.doc2bow函数corpuslda 完整代码 from gensim import corpora, models import jieba.posseg as jp # 待分析文本集 text1 = '美国教练坦言,没输给中国女排,是输给了郎平' text2 = '中国女排世界排名第一?真实水平如何,听听巴西和美...

ArYe 2万+

小福利,用Excel vba设计一个变色小游戏

Excel vba 制作变色小游戏

littlespider889的博客 899

TC3XX - MCAL知识点(一):新建Tc3xx EB-tresos工程

基于EB-tresos建立Hightec或者Tasking工程的时候,第一个步骤就是需要新建一个EB-tresos的工程,本文记录一下如何新建一个EB-tresos工程,以及对其进行简单的操作。那么Tc3xx的MCAL包含哪些内容呢?

梦想技术家 2973

python编写的简单小游戏

各位朋友们,小编在这里要分享,python编写的入门简单小游戏 python编写小游戏详细教程,一起探索吧!大家好,小编来为大家解答以下问题,python自动化运维需要掌握的技能,python自动化运维快速入门 pdf,今天让我们一起来看看吧!

ndwll的博客 593

UG NX二次开发(C#)-VS2022配置NX二次开发模板不能正常显示的问题

随着VS2022的发布,使用VS2022进行UG NX二次开发的人员也会越来越多,但是由于VS2022和以前的VS版本采用代码结构不同,而UG NX的二次开发编程模板还没有适应于VS2022的模板配置,所以不能正常的创建一个完整的工程。本文采用曲线救国的方式来实现VS2022下的UG NX二次开发。如果有读者能很好的解决模板配置,不吝赐教。

GimiGimmy 4276

影像组学文章复现:ITHscore:通过多尺度放射学特征全面定量NSCLC肿瘤内异质性 ----小细胞肺癌肿瘤异质性评分

目的:通过计算机断层扫描(CT)图像量化非小细胞肺癌(NSCLC)的肿瘤内异质性(ITH)。 方法:整合局部辐射特征和全局像素分布模式,开发定量ITH测量-ITHscore。在六个患者队列(n = 1399)中检查ITHscore与肿瘤表型,基因型和患者预后的关联,以验证其在表征ITH方面的有效性。

xxx 1020

Excel下实现贪吃蛇小游戏

上次我们在Excel下实现了一个华容道式的小游戏,使用了Excel中的小部分属性和功能,不到100行语句就完成了。这次我们要把贪吃蛇搬到Excel中,就不那么容易了。首先要解决游戏显示的问题。对我们来说,小游戏最好的平台是Excel的工作区,由于大小可调、颜色可填的单元格操作方便,我们完全可以把它们当像素来使用。于是我们的贪吃蛇游戏就有了以单元格为基础的像素形式的显示方式了。其次是游戏的控

sidekicker的专栏 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Excel+VBA制作小游戏:俄罗斯方块

https://zhuanlan.zhihu.com/p/22147068

allway2的博客 1543

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

excel2000中的小游戏

最近一段时间,学生使用Excel2000效果非常不错,为了鼓励学生继续学好软件,把Excel2000的游戏介绍给了学生,但有的学生还不能理解,先将步骤列出,供参考: A. 启动 “Excel 2000”; B. 点击“文件”菜单,选择“另存为 Web 页”命令; C. 点击“发布”按钮,在弹出的对话框中选择“添加交互对象”; C. 可以在下面的“文件名称”一栏中改变文件存盘...

weixin_34087503的博客 737

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

扑克牌猜数字游戏规则_Excel游戏—制作数字炸弹小游戏

点赞再看,养成习惯;尺有所短,寸有所长。最近刷短视频经常看到有人玩数字炸弹小游戏,今天小编就想和大家分享如果用Excel制作一个数字炸弹小游戏。先简单介绍一下游戏规则:在数字范围内,把其中一个数字定为炸弹,谁猜中这个数,谁就要接受惩罚。比如数字范围是0~100,炸弹数字是66,然后猜一个数字是28,28不是炸弹数字,那么现在可以猜的数字范围就缩小到28~100;又猜一个数字77,77也不是炸弹,那...

weixin_39966602的博客 3558
上一篇: 我就是程序,程序就是我吗? (转)
下一篇: InstallShield自定义对话框浅谈(一) (转)
cuibeng3549
博客等级 码龄11年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值