VBA实现贪食蛇游戏

说明:
用excel画出20 x 20的区域,
添加三个按钮:游戏开始,游戏停止,清空按钮
游戏快捷键:
按PgUp按键,加快速度
按PgDn按键:减慢速度
按Ctrl按键:游戏暂停

变量定义:

Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Dim mystop As Integer '开关
Dim MoveDir As String '移动方向

Dim CST_Area_X As Integer ' 画布大小 x
Dim CST_Area_Y As Integer '画布大小 y

Dim Pos_X As Integer '当前位置 行
Dim Pos_Y As Integer '当前位置 列

Dim snake_body As Collection

Dim game_map(22, 22) As Integer '画布状态
Dim offset_x As Integer   '画布偏移x
Dim offset_y As Integer

Dim eat_flg As Integer '食物是否被吃掉 标识
Dim food_x  As Integer '食物坐标
Dim food_y As Integer

Dim snake_length As Integer '蛇的长度

Dim snake_speed As Integer '蛇运行速度

Dim stop_flg As Integer '游戏暂停 标识

’游戏开始按钮

Private Sub START_Click()
    '游戏参数初始化
    Call Game_init
    
    '添加第一个食物
    Call giveFood
    
    '游戏开始
    Call GameStart
    
End Sub

'开始按钮按下后,触发的监控事件

Private Sub START_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    '判断按下的按键,上下左右中哪一个
    Select Case KeyCode
        Case 37 'left pressed
            MoveDir = "Left"
        Case 38 'up pressed
            MoveDir = "Up"
        Case 39 '
  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Excel实现贪吃蛇游戏 上次我们在Excel实现了一个华容道式的小游戏,使用了Excel中的小部分属性和功能,不到100行语句就完成了。这次我们要把贪吃蛇搬到Excel中,就不那么容易了。 首先要解决游戏显示的问题。对我们来说,小游戏最好的平台是Excel的工作区,由于大小可调、颜色可填的单元格操作方便,我们完全可以把它们当像素来使用。于是我们的贪吃蛇游戏就有了以单元格为基础的像素形式的显示方式了。 其次是游戏的控制方法。在这里我摸索了好久,其中走了弯路不说,我最后的结论是在Excel中要实现按键事件的方法是引入窗体,然后在窗体中响应Keydown与Keypress事件。这样的话,既可以快速响应还可以根据情况修改对应按键。 最后是游戏的定时问题。所有的游戏事实上都是在一个时间大循环里面定时接收输入信息更新状态的程序,我们的小游戏都不例外。老实说,我写这个游戏大部分的思考时间就浪费在如何实现游戏定时这里。ExcelVBA中与定时有关的只有onTime函数,没有其他相关函数提供了,onTime函数可以实现某一事件在指定时间发生,但只能以秒为最小单位,对我们要在一秒内更新数十次信息的小游戏不适合,我们只能另找方法。用过VB的人都知道VB控件中有个定时控件,用它来实现游戏定时是最好的,但在Excel中却没有,难道我要把VB中的定时控件移植到VBA中?这也是个很值得研究的课题,但是我想到了另外的方法。VB的程序员都知道要想VB程序发挥大作用一定离不开调用系统的API,于是我查看了系统相关API的帮助,发现系统API中实现相应功能的有settimer与killtimer函数,具体定义和用法大家可以参考相关帮助,但从字面大家都已经可以知道它们就是我们要找的东西了。那么现在的问题就是如何在vba环境下调用系统API。心想微软称vba就是office中的vb,那么在vba中调用系统API应该也与在VB中的一样。一试,呵呵,果然非虚,这微软真不是盖的(后在msdn中发现ms office vba从2000版本开始支持调用系统API,大家可以拓展office应用了)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值