吃豆子游戏详解三

上传人:公**** 文档编号:487139226 上传时间:2023-06-27 格式:DOC 页数:8 大小:710.50KB
返回 下载 相关 举报
吃豆子游戏详解三_第1页
第1页 / 共8页
吃豆子游戏详解三_第2页
第2页 / 共8页
吃豆子游戏详解三_第3页
第3页 / 共8页
吃豆子游戏详解三_第4页
第4页 / 共8页
吃豆子游戏详解三_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《吃豆子游戏详解三》由会员分享,可在线阅读,更多相关《吃豆子游戏详解三(8页珍藏版)》请在金锄头文库上搜索。

1、吃豆子游戏详解三第一部分:吃豆子游戏简介这两天找到了一个非常好玩的小游戏,叫吃豆子,这个游戏附有vb代码。很好玩,试玩一下吃豆子游戏,就会发现1游戏开始之前有一个倒计时,而且有一段音乐,屏幕上还有准备两个字在闪烁2吃豆子吃,大嘴怪的嘴巴会张会闭,每吃掉一个豆子,玩家就会获得一定的积分,如果大嘴怪把屏幕上的所有的豆子吃掉后,就会自动进入下一关。3幽灵们被大嘴怪吃掉后如何自动找到自己的家,好象会找到最近的路,到自己的家后就会恢复到以前的样子,而且幽灵们好象会往大会嘴怪的方向去找大嘴怪似的,如果幽灵遇到大嘴怪,就会把大嘴怪吃掉。幽灵的眼睛会转动的。4因为吃豆子算是一个很老的游戏,所以它还有一个投币的

2、程序,如果一个人玩,就投一个硬币,如果两个人玩,就投两个硬币,就像我们原来用游戏币玩游戏一样。5.大嘴怪吃掉一颗红色的豆子,幽灵们就会变成深蓝色,这个时候,幽灵们不具有战斗力,大嘴怪反而会把幽灵吃掉了,幽灵吃掉后,就会只剩下两只眼情,它们会尽快找到自己的家,而且到家以后,它们就会恢复原来的样子。吃豆子游戏画面图一图二此图为吃豆子的游戏画面此图是游戏中的幽灵、大嘴怪的画法,还有游戏中出现的其它的物品,包括白豆子和红豆子,这个图在vb代码中名称为pctTiles如何从一个图片中分离出幽灵和大嘴怪来我研究了一个整个游戏中的vb代码,和图二,发现了有几处难点第一点:图二实际名称为pacpics.bmp

3、,在vb代码中为:frmPacMan.pctTiles.Picture=LoadPicture(App.Path&”/pacpics.bmp这是一个bmp图片,里面包含着游戏大嘴怪嘴巴一张一闭的动画,大嘴怪朝上下左右行走的四下个方向的模样,还有四个幽灵不同颜色的,幽灵的眼睛会上下左右转动的动画,图的左边为彩图,黑色背景,右边为黑白图,白色背景。仅一张图,就可以表现出如此多的内容,太神奇了,太让我兴奋了,我恨不得立刻把这个游戏研究得清清楚楚,明明白白。第二点:大嘴怪在游戏代码中的名称为pacman,幽灵在vb代码中的名称为Ghost,吃的白色的豆子在游戏中的代码为pill,红色豆子在游戏中的代码

4、为powerpills第二部分:这一节课我们主要研究的是大嘴怪的游戏代码,为了使游戏代码更加好理解一些,我特意编写一个关于大嘴怪的小游戏。我从一个很复杂的吃豆子的代码中首先重新组成一个新的小游戏,是这个吃豆子的游戏的一部分,就是从一个包含着大嘴怪(嘴巴张开的动画)和四个幽灵还有一些相它的游戏中的物品的图片中(即图片名为Pacpics的图片)中分离出大嘴怪来,代码也是从原来游戏的代码改编出来的,因为他可以单独运行的,就像一个新的游戏一样这是Form1窗体,它包含着三个pictureBox图片和两个按钮 ,其中的结束按钮只是一个摆设,没有相应的程序代码。可以没有。Form1的尺寸要能够装下这三个图

5、片控件和两个按钮按件,另外Form1属性中的ScaleMode设为3Pixel像素模式,这样pctBack图片的尺寸才会与下面的宽和高相同为了和原来吃豆子游戏中的代码相同,所以这三个pictureBox的名称完全与原来吃豆子游戏中我名称一样分别为pctScreen图片,AutoSize = True 属性中的picture为下图,图片名为LevelOld,注意在代码中图片名是不出现的,只出现的是pctScreen ,因为此图片在Form1中,又可称为Form1.pctScreen.picturepctStats图片这个图片属性中的Picture不设,它仅显示背景色&H00404080名称和原游

6、戏相同pctStatsBackColor &Hoo404080AutoSize: FalseW(宽):32H(高):192pctBack图片它的属性中的picture设为:AutoSize=True,尺寸与图片相同另外还有一个开始按钮,在代码中的名称为Command1,而结束按钮没有在代码中出现名称变量类型大嘴怪PacManUDTPacman四个幽灵Ghost(1 To 4)UDTGhost幽灵以前已经讲过了,白色的豆子的代码分析也已经讲过了,所以这一节我们应当讲的是大嘴怪的代码分析,它的变量类型是UDTPacman,显然UDTPacman我们也不知道它是个什么变量类型,所以我们要先定义的是U

7、DTPacman这种变量类型,即代码中的Public Type UDTPacman,这种变量类型包含着大嘴怪的所有动作和属性。还有一个函数BitBlt 要在代码中声明一下,格式挺复杂的,换行时要注意程序出错,或者就不换行一直写下去就行了Declare Function GetAsyncKeyState Lib user32 (ByVal vKey As Long) As IntegerDeclare Function sndPlaySound Lib winmm.dll Alias sndPlaySoundA (ByVal lpszSoundName As String, ByVal uFla

8、gs As Long) As LongDeclare Function BitBlt Lib gdi32 (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long游戏代码为Form1的代码为Private Sub Command1_Click()DefaultPosit

9、ionsEnd Sub然后添加一个模块,Module1代码为:Option ExplicitPublic Enum BitbltOps For bitblt function SRCCOPY = &HCC0020 Dest = Source SRCAND = &H8800C6 Dest = Dest AND Source SRCINVERT = &H660046 Dest = Dest XOR Source SRCPAINT = &HEE0086 Dest = Dest OR Source SRCERASE = &H4400328 Dest = (XOR Dest) AND Source WH

10、ITENESS = &HFF0062 Dest = vbWhite BLACKNESS = &H42 Dest = vbBlackEnd EnumPublic Type UDTPacman FruitHere As Boolean FruitGone As Boolean Dead As Boolean DotGone As Boolean FirstGo As Boolean Score As Long TimeCount As Long Xpos As Integer Ypos As Integer Lives As Integer Direction As Integer Offset

11、As Integer Speed As Integer Level As Integer GhostsEaten As Integer FlashOkay As Integer DotsLeft As Integer Mouth As Integer MouthDir As Integer MouthSpeed As IntegerEnd TypePublic Pacman As UDTPacman declare some functions :)Declare Function GetAsyncKeyState Lib user32 (ByVal vKey As Long) As Inte

12、gerDeclare Function sndPlaySound Lib winmm.dll Alias sndPlaySoundA (ByVal lpszSoundName As String, ByVal uFlags As Long) As LongDeclare Function BitBlt Lib gdi32 (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As

13、 Long, ByVal ySrc As Long, ByVal dwRop As Long) As LongSub ShowBlit(ByVal X As Integer, ByVal Y As Integer, _ ByVal XP As Integer, ByVal YP As Integer, ByVal pos As Integer)Dim maskOffset As IntegerWith Form1maskOffset = 135 BitBlt .pctBack.hDC, 0, pos * 32, 32, 32, .pctScreen.hDC, X, Y, BitbltOps.S

14、RCCOPY If pos = 0 Or pos = 5 Then maskOffset = XP + 128 Else maskOffset = 224 End If BitBlt .pctScreen.hDC, X, Y, 32, 32, .pctTiles.hDC, maskOffset, YP, BitbltOps.SRCAND BitBlt .pctScreen.hDC, X, Y, 32, 32, .pctTiles.hDC, XP, YP, BitbltOps.SRCPAINT End WithEnd SubSub DefaultPositions() With Pacman .Xpos = 224 .Ypos = 376 .Direction = 3 .Offset = 8 .Mouth = 0 .MouthDir = 1 .MouthSpeed = 0 ShowBlit .Xpos - 16, .Ypos - 16, .Direction * 32, 7 * 32, 0 大嘴怪 ShowBlit 216, 200, (0 Mod 4)

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

当前位置:首页 > 办公文档 > 工作计划

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