日本语能力测试网上报名系统.doc

上传人:bao****ty 文档编号:132308781 上传时间:2020-05-14 格式:DOC 页数:11 大小:66.50KB
返回 下载 相关 举报
日本语能力测试网上报名系统.doc_第1页
第1页 / 共11页
日本语能力测试网上报名系统.doc_第2页
第2页 / 共11页
日本语能力测试网上报名系统.doc_第3页
第3页 / 共11页
日本语能力测试网上报名系统.doc_第4页
第4页 / 共11页
日本语能力测试网上报名系统.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《日本语能力测试网上报名系统.doc》由会员分享,可在线阅读,更多相关《日本语能力测试网上报名系统.doc(11页珍藏版)》请在金锄头文库上搜索。

1、第一;程序架构 我们来编写俄罗斯方块这个程序,那我们就先来个庖丁解牛,将俄罗斯反怪分解为我们需要解决的各个 1、构建方块, 2、初始化 3、随机生成方块 4、方块进入操作界面 5、判断方块所处环境 6、移动操控的方块 7、变形按键处理 8、消除处理 9、时间处理 10、其余杂项处理 以上就是我们将俄罗斯方块分解后的几个模块,这样,整个程序的架构就基本完成了。 第二:程序设计 也就是程序的主要部分了,我们可以先新建一个模块, 0、公共变量罗列(建议琢磨时间30秒) 我们先把我这个程序涉及到的变量罗列一下,不用刻意去看啥意思。后面我们在每个模块当中都会提到 Public Declare Funct

2、ion 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就是设定间隔并生效执行,

3、killtimer就是去除这个设定。 Public CurrentBlock, NextBlock, TempBlock CurrentBlock 当前方块 NextBlock 下一个方块 TempBlock 临时方块 Public CurrentColor, NextColor 当前方块颜色,下一个方块颜色 Public InterTime 间隔时间,就是方块自然下降的速度。他由游戏的难度决定。 Public CStop 是否停止,停止游戏 Public Cross 关卡 Public Diff(8) 难度 这段话放在模块的声明中就行了。 1、构建方块(建议琢磨时间5分钟) 俄罗斯方块,玩过

4、的人都知道。如果你想编这个程序,你最先想到的是什么呢?方块,没错。那我们就先来设计一些方块的模型。EXCEL中的表格给我们提供了最简单的方案、4个方块(即4个单元格)就组成了一个俄罗斯方块 这个过程不需要编程。你把这些你画好的方块放到SHEET2吧,需要抽取的时候我们就从SHEET2拿就行。但为了抽取方便,你得注意一个小技巧。就是把这些方块按顺序摆好。例如本程序,一个方块我们以它是摆放在一个44的范围内。相邻2个范围在空一行。具体参考参考我的SHEET2一眼就能看明白了。我就不多费口舌了。 有有点需要特别提醒的是:细心的朋友会发现,我设计的每个方块不仅填充了背景色,还在每个填充的单元格里面写入

5、了数值【1】,其实这个1不是乱写的,这个1是整个程序的灵魂。他主要用来判断操作中的方块(单元格)与周边方块或者设定环境的关系,用以决定当前单元格的处理方式,以及当一行的方块填充满了以后是否做消除处理(俄罗斯方块不就是满10个一行就消除嘛!)。 2、初始化(建议琢磨时间3分钟) 也就是游戏开始前的准备工作。那就是为游戏者提供一个操作环境、以及后台一些常量的初始化。例如难度,我们本程序设计了8种难度,所以我定义了一个常数变量组Diff(7),至于环境的搭建你就照猫画虎得了。自己动手画几下,再录个宏,copy进去。我想你可以做得比我更好,更漂亮。(ps:本人美工设计甚差。) Sub MyInit()

6、 初始化界面 Diff(0) = 很容易 Diff(1) = 容易 Diff(2) = 一般 Diff(3) = 困难 Diff(4) = 恐怖 Diff(5) = 噩梦 Diff(6) = 魔鬼 Diff(7) = 地狱 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.Rang

7、e(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 行方块 s

8、10 = 按键说明:方向键【左右】移动,【下】为加速下移,【上】为变形 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】,你得告诉他,别

9、过来了。我挡着呢。你没看到吗?至于程序怎么实现的,我们后面在具体讲解。 这步完了以后你可以试着执行3、随机生成方块(建议琢磨时间3分钟) 在表1的a1:a4内随机从表二抽取一个方块,并给他起个名字叫下一个方块,这里生成的方块永远叫下一个(也就是NextBlock公共变量)。 Sub RndRecept() 生成下一个方块 Randomize c = Int(Rnd * 7) 因为一共设计了7个方块,所以我们随机生成0-6的一个整数 Sheet1.Range(a1:d4) = Sheet2.Range(b & c * 5 + 1 & :e & c * 5 + 4).Value a1:a4是下一个

10、方块的区域,我们就在这里随机从表二取方块 Set NextBlock = Sheet1.Range(a1:d4).SpecialCells(xlCellTypeConstants, 23) 我们取过来是1个44的范围。这句话我取出他们的绝对地址。(如果我们没有在设计的方块中写入数值1,这步就要麻烦一些了。你得一个一个判断单元格颜色,多麻烦呢。有1真好。) NextColor = Int(Rnd * 10 + 3) 为了让这个俄罗搜丰富多彩,我们随机上点颜色。 If NextColor = 6 Then NextColor = 7 这句话没什么实在的含义。我不喜欢6这个颜色,太刺眼又不明显。遇到

11、6就变7 NextBlock.Interior.ColorIndex = NextColor 背景 NextBlock.Font.ColorIndex = NextColor 前景=背景。这样别人就看不出这个1拉。这个1真是高人不露相啊。 u1 = InterTime 没啥意思。可以去掉。我用来衡量速度的。 SetTimer Application.hWnd, 1, InterTime, AddressOf myOnTime End Sub 4、方块进入操作界面(建议琢磨时间3分钟) 从a1:a4范围中取出这个随机生成方块,进入游戏者操作界面(f1:o26),在这个界面中执行的方块永远叫当前方

12、块(也就是我们设定的CurrentBlock公共变量) Sub Ready() Set CurrentBlock = NextBlock.Offset(0, 9) 从a1:a4右移9行刚好就到界面的正中间了。原来这么容易啊。 If Application.Sum(CurrentBlock) 0 Then 移动前先看看这个地方有没有被人(就是那个1)霸占,如果被霸占,肯定就代表这个区域之和0了,说明堆积的方块堆到顶了。就挂了呗。 CStop = 1 挂了就给这个变量赋1,好让程序知道挂了。 KillTimer Application.hWnd, 1 挂了也就不用在间隔每段时间执行过程了。 Msg

13、Box 你挂了 Else CStop = 0 移动过来的区域一看是0.代表是个空地方。赋0,代表可以继续往下执行。 NextBlock.Value = 【下一个】那个区域(说白了就是a1:a4写空) NextBlock.Interior.ColorIndex = 0 【下一个】那个区域(说白了就是a1:a4颜色去掉,相当于a1:a4初始化吧。) 以下就是把这个【下一个】()赋值给【当前】(CurrentBlock)并着色 CurrentBlock.Value = 1 CurrentColor = NextColor CurrentBlock.Interior.ColorIndex = Curr

14、entColor CurrentBlock.Font.ColorIndex = CurrentColor End If End Sub 5、 判断方块所处环境(建议琢磨时间5分钟,不明白的看10分钟吧。最关键的部分其实就是这里了。) 你看我多懒啊。过程名都是顾名思义饿,IfMove。翻译过来就是是否移动,这个过程就是用来判断操控中的方块(CurrentBlock)听到指令时如何执行。 Sub IfMove(x, y) 判断移动(左移、右移、下移) Set TempBlock = CurrentBlock.Offset(x, y) 先给移动后的那个区域起个名字 Set tmp = Application.Intersect(TempBlock, Cu

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号