ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 79527|回复: 153

[分享]45分钟教你学会编制俄罗斯方块

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2008-5-28 16:47 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:娱乐和游戏应用
dF6OFgWr.rar (25.7 KB, 下载次数: 3189)
[此贴子已经被作者于2008-5-28 18:17:52编辑过]

[分享]45分钟教你学会编制俄罗斯方块

[分享]45分钟教你学会编制俄罗斯方块

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-28 16:50 | 显示全部楼层

第一;程序架构

我们来编写俄罗斯方块这个程序,那我们就先来个庖丁解牛,将俄罗斯反怪分解为我们需要解决的各个

 

1、构建方块,

2、初始化

3、随机生成方块

4、方块进入操作界面

5、判断方块所处环境

6、移动操控的方块

7、变形按键处理

8、消除处理

9、时间处理

10、其余杂项处理

以上就是我们将俄罗斯方块分解后的几个模块,这样,整个程序的架构就基本完成了。

TA的精华主题

TA的得分主题

发表于 2008-5-28 16:50 | 显示全部楼层

   

到这句话报错

SetTimer Application.hWnd, 1, InterTime, AddressOf myOnTime

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-28 16:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

第二:程序设计

也就是程序的主要部分了,我们可以先新建一个模块,

 

0、公共变量罗列(建议琢磨时间30秒)

我们先把我这个程序涉及到的变量罗列一下,不用刻意去看啥意思。后面我们在每个模块当中都会提到

Public Declare Function SetTimer Lib "user32.dll" (ByVal hWnd As Long, ByVal nIDEvent As Long, _

                        ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

Public Declare Function KillTimer Lib "user32.dll" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long

 

''以上两个函数可能有人没见过。是用来设定每隔多少时间执行一个过程的函数。不晓得的话照抄还不会吗?settimer就是设定间隔并生效执行,killtimer就是去除这个设定。

 

Public CurrentBlock, NextBlock, TempBlock     ''CurrentBlock 当前方块  NextBlock 下一个方块  TempBlock 临时方块

Public CurrentColor, NextColor         ''当前方块颜色,下一个方块颜色

Public InterTime  ''间隔时间,就是方块自然下降的速度。他由游戏的难度决定。

Public CStop   ''是否停止,停止游戏

Public Cross   ''关卡

Public Diff(8)   ''难度

这段话放在模块的声明中就行了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-28 16:54 | 显示全部楼层

1、构建方块(建议琢磨时间5分钟)

俄罗斯方块,玩过的人都知道。如果你想编这个程序,你最先想到的是什么呢?方块,没错。那我们就先来设计一些方块的模型。EXCEL中的表格给我们提供了最简单的方案、4个方块(即4个单元格)就组成了一个俄罗斯方块

这个过程不需要编程。你把这些你画好的方块放到SHEET2吧,需要抽取的时候我们就从SHEET2拿就行。但为了抽取方便,你得注意一个小技巧。就是把这些方块按顺序摆好。例如本程序,一个方块我们以它是摆放在一个4×4的范围内。相邻2个范围在空一行。具体参考参考我的SHEET2一眼就能看明白了。我就不多费口舌了。

 

有有点需要特别提醒的是:细心的朋友会发现,我设计的每个方块不仅填充了背景色,还在每个填充的单元格里面写入了数值【1】,其实这个1不是乱写的,这个1是整个程序的灵魂。他主要用来判断操作中的方块(单元格)与周边方块或者设定环境的关系,用以决定当前单元格的处理方式,以及当一行的方块填充满了以后是否做消除处理(俄罗斯方块不就是满10个一行就消除嘛!)。

TA的精华主题

TA的得分主题

发表于 2008-5-28 17:29 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-28 18:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

2、初始化(建议琢磨时间3分钟)

也就是游戏开始前的准备工作。那就是为游戏者提供一个操作环境、以及后台一些常量的初始化。例如难度,我们本程序设计了8种难度,所以我定义了一个常数变量组Diff(7),至于环境的搭建你就照猫画虎得了。自己动手画几下,再录个宏,copy进去。我想你可以做得比我更好,更漂亮。(ps:本人美工设计甚差。)

 

Sub MyInit()  ''初始化界面

    Diff(0) = "很容易"

    Diff(1) = "容易"

    Diff(2) = "一般"

    Diff(3) = "困难"

    Diff(4) = "恐怖"

    Diff(5) = "噩梦"

    Diff(6) = "魔鬼"

    Diff(7) = "地狱"

 下续

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-28 18:09 | 显示全部楼层

接上:

 Sheet1.Range("a:r").Clear

  ''   创建格式

    Sheet1.Columns("A:R").ColumnWidth = 2

   

    With Sheet1.Range("f1:o27").Borders

        .LineStyle = xlContinuous

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

    Sheet1.Range("f1:o27").Borders(xlInsideVertical).LineStyle = xlNone

    Sheet1.Range("f1:o27").Borders(xlInsideHorizontal).LineStyle = xlNone

    With Range("E1:E27,F27:O27,P1:P27")

        .Formula = "1"

        .Interior.ColorIndex = 25

        .Interior.Pattern = xlSolid

    End With

 

   

    [s1] = "上手度:"

    [t1] = "很容易"

    [s2] = "关数"

    [t2] = " 1 "

    [S3] = "过关条件"

    [t3] = "至少同时消除 1 行方块"

    [s10] = "按键说明:方向键【左右】移动,【下】为加速下移,【上】为变形"

    Range("s1:t3").Interior.ColorIndex = 34

    Range("s1:S3").Font.ColorIndex = 3

    Range("t1:t3").Font.ColorIndex = 5

    Range("s1:t3").Font.Bold = True

    [t14].Select

End Sub

 

本块也需要注意一个问题。就是你也会发现,搭建的环境(游戏的界面)我不仅填充了北京。还写入了数值【1】,大家结合上一个模块中方块中的的数值【1】,能想到些什么吗?当这些环境中的1碰到正在执行中的方块中的【1】,你得告诉他,别过来了。我挡着呢。你没看到吗?至于程序怎么实现的,我们后面在具体讲解。

这步完了以后你可以试着执行

TA的精华主题

TA的得分主题

发表于 2008-5-28 18:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

高手!

实在是高呀,刚开始学习

TA的精华主题

TA的得分主题

发表于 2008-5-28 21:43 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 00:13 , Processed in 0.052292 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表