贪吃蛇VB编程详解2.docx
《贪吃蛇VB编程详解2.docx》由会员分享,可在线阅读,更多相关《贪吃蛇VB编程详解2.docx(8页珍藏版)》请在冰豆网上搜索。
贪吃蛇VB编程详解2
VB编程有点象搭积木,一个游戏可以由几个小程序组成,然后通过特定的方式联系在一起。
玩贪吃蛇游戏时,注意到游戏主要由以下几部分做法组成:
1.随机出现的食物的做法
食物的颜色是随机出现,食物为一个小圆,外框线是黑色的2.键盘控制按钮控制蛇运行的做法3.食物吃掉,蛇身加长的做法
4.蛇死时的闪动的做法
5.蛇撞墙或撞自身后游戏结束的做法
蛇头为圆形,有外框线,蛇身为方形,颜色是随机的,有外框线我找到了一个贪吃蛇的VB代码,仔细的把这个贪吃蛇代码根据以上
几部分分解开来,就象把一个搭好的积木城堡又重新拆解成一块块的积木。
贪吃蛇VB代码详解——键盘控制蛇运行的做法
2.1在VB应用程序里设计好小游戏(贪吃蛇向前、向左向右和向后爬行),共有控件如下:
控件名称
Forml
shape
Timer
数量
1
共4个
1
2.2控件的属性
Forml:
默认值,宽度和高度尺寸适中
Shape控件组,表示蛇头和蛇身,蛇头为圆形,蛇身为方形
控件组
控件属性
Shape1(0)
表示蛇头
FillColor在调色版中选一种颜色
BorderStyle选择1-Solid
Shape选择3-circle
FillStyle选择0-Solid
Shape1
(1)
表示蛇身
FillColor在调色版中选一种颜色
BorderStyle选择1-Solid
Shape选择0-Rectangle
FillStyle选为0-Solid
Shapel
(2)
表示蛇身
FillColor在调色版中选一种颜色
BorderStyle选择1-Solid
shape设为O-Rectangle
FillStyle选为0-Solid
Shapel(3)
表示蛇身
FillColor在调色版中选一种颜色
BorderStyle选择1-Solid
Shape选择0-Rectangle
FillStyle选为0-Solid
Timer:
默认值
设计界面如下图所示
■For*!
匚□冈
2.3如何给小游戏添加菜单栏
选择VB的菜单栏中的工具菜单,在工具菜单中选择菜单编辑
器一项,给贪吃蛇——键盘控制按钮控制蛇爬行小游戏再添加一个菜
单栏,打开游戏菜单后,里面有两个选顶,一个是开始,一个是结束
标题
游戏(主菜单)
开始
结束
名称(代码)
Game
Start
Exit
2.4游戏代码说明,
其中的Runstep为蛇身方格的宽度,在下图说明中为10,但在实际游
戏中为400个点,以下是代表四个方向(游戏代码)的四个选项:
-Runstep
+Runstep
方向为纵向
Shape1(0).Top
+Runstep
另外还有就是用键盘的四个方向键控制蛇往前后左右的行走,我一开始也搞不清楚为什么用Case37,Case38,Case39,Case4这四个代表
键盘的KeyCode号码能代表四个方向,好在我查到了两个贪吃蛇代
码,全是37、38、39、40这个个KeyCode号码,我就觉得很奇怪,
结果代表键盘的四个方向的代码真的是用37—38—39—40来表示
的,因为我从贪吃蛇是单独分离出来的贪吃蛇往前后左右爬行的小游戏运行后可以用键盘控制的
请看游戏代码吧:
3.游戏代码
一个是窗体(Form1)代码,还有一个是模块代码,本来想把他们二
合一成为窗体代码的,可是是从原来的游戏中分离出来的,所以还有
一个为模块(Module1)的代码
Form1代码:
ConstRunstep=400
定义常量,即蛇身为一个shape的宽度
变量在模块中定义,窗体中没有定义
PrivateSubexit_Click()
Timer1.Interval=0
EndSub
PrivateSubform_load()‘载入窗体,初始化蛇身为一个数组shape1(i)DimiAsInteger
Fori=0To3Step1
snake_init(i).x=Shape1(i).Leftsnake_init(i).y=Shape1(i).TopNexti
EndSub
PrivateSubForm_KeyDown(KeyCodeAsInteger,shiftAsInteger)SelectCaseKeyCode
Case37
‘蛇不可以退着走,但可以拐弯
IfRunway<>2Then
Runway=0
EndIf
Case38
IfRunway<>3Then
Runway=1
EndIf
Case39
IfRunway<>0Then
Runway=2
EndIf
Case40
IfRunway<>1Then
Runway=3
EndIf
EndSelect
EndSub
PrivateSubstart_Click()
Timer1.Interval=1000
Callinit_game
EndSub
PrivateSubTimer1_Timer()snake_point.x=Shape1(0).Leftsnake_point.y=Shape1(0).Top
SelectCaseRunway
Case0
Shape1(0).Left=Shape1(0).Left-Runstep
Callmove_snake
Case1
Shape1(0).Top=Shape1(0).Top-Runstep
Callmove_snake
Case2
Shape1(0).Left=Shape1(0).Left+Runstep
Callmove_snake
Case3
Shape1(0).Top=Shape1(0).Top+Runstep
Callmove_snake
EndSelect
EndSub
注解:
在Form1中对Form1load即载入窗体后,对蛇身做了一个定位,再把游戏菜单中的开始和结束做了一个说明,即开始Timer1.Interval=1000,结束Timer1.Interval=0,然后再说明Timer1的用法,然后是用键盘控制蛇爬行的用法都做了说明,但是在键盘控制蛇爬行时对Runway变量没有做定义和说明,还有定义蛇的四个行走方向对Callmove_snake(函数)也没有做说明,在开始游戏是有一个重要的代码Callinit_game也会在模块中说明,(开始我做游戏代码是就没有Callinit_game这一项代码,也没有说明,结果程序是可以运行的,而且蛇也会向四个方向爬行的,但是运行的路线是不一样的)在Form1没有说明的这几个方面会在模块中一一提到,并解释清楚。
下面是模块Module1的代码:
(先在工程菜单中添加一个模块)‘定义变量
PublicRunwayAsInteger
‘定义蛇身
PublicTypestr_snake_point
xAsIntegeryAsInteger
EndType
‘蛇身初始化,定义蛇身
Publicsnake_init(0To3)Asstr_snake_point
Publicsnake_pointAsstr_snake_point
PublicSubinit_game()
DimiAsInteger
Fori=0To3Step1
Form1.Shape1(i).Left=snake_init(i).xForm1.Shape1(i).Top=snake_init(i).yNexti
Runway=0
EndSub
PublicSubmove_snake()
DimtempxAsInteger
DimtempyAsInteger
DimiAsInteger
Fori=1To3Step1
'把X1和X2的值互换,比如X1=4,X2=6
'设一个临时变量C,C=X1,把X1的值存在变量C中,'X1=X2,把X2的值给X1,现在X1就是原来的X2的值了'X2=C,再把C的值给x2,现在X2就是原来的X1的值了
tempx=Form1.Shape1(i).Left
tempy=Form1.Shape1(i).Top
Form1.Shape1(i).Left=snake_point.x
Form1.Shape1(i).Top=snake_point.ysnake_point.x=tempx
snake_point.y=tempy
Nexti
EndSub
4.编写完代码,运行程序,结果如下:
5.总结
通过对VB这一课程的自学,了解并掌握了其基本操作。
以
课程设计的形式加深了对VB这一计算机语言的认知