贪吃蛇VB程序代码贪吃蛇VB程序代码
题目:贪吃蛇游戏
难度:????
( 一 )题目简介
“贪吃蛇”是一种操作简单电子,较经典的游戏。基本的游戏玩法:
一条蛇在格子上爬行,用方向键控制其运动;当蛇的头部碰到设定的数字
时会将数字(1,5)“吃掉” ,蛇的身体会按相对应的数字变长。不同的
数字代表得分,累加记录。选择障碍物类型,调节速度,开始游戏。蛇的
头部撞到障碍物或自己身体时,游戏结束。游戏结束后会对所得的分数处
理,若为最佳,则设为记录保持者,留下大名~
( 二 )要求功能
(1)程序启动时界面上棋盘由20*20个方格构成。...
贪吃蛇VB程序代码
题目:贪吃蛇游戏
难度:????
( 一 )题目简介
“贪吃蛇”是一种操作简单电子,较经典的游戏。基本的游戏玩法:
一条蛇在格子上爬行,用方向键控制其运动;当蛇的头部碰到设定的数字
时会将数字(1,5)“吃掉” ,蛇的身体会按相对应的数字变长。不同的
数字代
得分,累加记录。选择障碍物类型,调节速度,开始游戏。蛇的
头部撞到障碍物或自己身体时,游戏结束。游戏结束后会对所得的分数处
理,若为最佳,则设为记录保持者,留下大名~
( 二 )要求功能
(1)程序启动时界面上棋盘由20*20个方格构成。开始时,蛇静止不动,位
于地图设置好的初始位置。身体由一串共5个圆圈表示,代表头部的圆
色,身体黄色,且有两个黑色眼睛。 圈为绿
(2)按回车键开始游戏,蛇自动在棋盘上向前爬行,用户可以使用“? ? ?
?”4个方向键控制其拐弯以不至于碰到障碍物或自己。蛇身只可以向
前走或向左右转90º的弯,不能后退。蛇吃掉一个数字后,身体伸长的
幅度对应于数字的大小。例如:吃掉“2”后,蛇身伸长2个圆圈。蛇身
的伸长不是一下子完成的,而是在吃掉数字后一边爬行一边伸长的,这
样是为了避免蛇的“尾巴”突然伸长撞到障碍物或蛇自己,以至死亡。 (3)5个数字(1- 5)的位置是随机的,并且互不重叠,且不能出现在障碍
物和蛇的身上。当蛇吃掉一个数字时,同样的数字随机地出现在其他位
置上,即棋盘上总保持有“1- 5” 5个数字。
(4)使用开始键可以暂停或继续游戏。游戏进行时,窗体下部状态栏上显示
出玩家的得分、游戏时间、速度调节和声音开关。
(5)蛇在爬行时,如果其头部碰到墙壁或身体,则被“撞死”,游戏结束。程
序回到游戏开始状态,如果该用户的成绩超过了记录成绩,则显示对话
框,提示输入用户名,由排行榜显示成绩。
(6)通过程序菜单的“开始/暂停”命令,也可以暂停或继续游戏(与回车
键的功能相同)。选择“新开局”菜单可以从头进行游戏。 (7)选择“设置”菜单命令,弹出对话框,可以进行各项设置,包括障碍物
形状,颜色,背景颜色,设置完毕后单击确定按钮即可从头开始游戏。 (8)选择“排行榜”菜单打开“排行榜”对话框,显示出每种障碍物下的最
高成绩。选择“清除”按钮可以将记录清空。
更上一层楼
(1)添加了多条命,总共有3条命。
(2)添加了背景音乐,当开始,吃到食物,撞死的时候有不同的音乐。 (3)在主界面上添加了几个控件来显示得分,用时。
(4)添加了速度调节器,可以方便调节速度的大小。
( 三 )设计思路
(1)(结构分析:程序须拥有四个窗体:游戏主窗体、设置窗体、排
行榜窗体和游戏
窗体和一个
模块(定义一些全
局的量)。
(2)(主窗体Frm Main:
应用的功能:运行游戏,联系其他的窗体,实现操作
--如图所示:主要是一
个图片框,里面包含了
必要的图形。
设计图形有一到五
共五个彩色图标,分别
代表食物的不同数值。
蛇头的基本图形为一个
圆形(20*20象素值)。
两个黑的圆圈是蛇的眼
睛,为两个圆,其大小
与蛇头相匹配。
两条线是“line”控件
数组,应用其画线,即
绘制20*20 的方格。
其中有一个音乐图
片,目的是指示音乐选
择键的位置~
设置主要控件:
“line” “checkbox” “command button” “timer” “HScrollbar”
“label”以及 “菜单编辑器”。
“timer” 设计须两个控件,一个记录用时~一个应用于控制蛇
的运行情况。
“check box” 是为了利用它的“VALUE”属性作为音效开关。 “label” 主要是起到说明的作用,指示如何控制游戏。 “command button” 分别利用语句记录用时,与时间。
“HScrollbar” 利用其“VALUE”属性附值于“timer”的时间间隔,
用于调节蛇爬行的速度。
“菜单编辑器” 用于联系其他的窗体,构成一个整体。可以调用另外
的窗体,可以查看排行榜,进行选项设置。 (2)设置窗体Frmsetup:
——左图为窗体样图。
设置窗体主要是为了
提供各个玩者不同选择,
只是对一些“环境”信息
进行修改,并不涉及主要
的运行情况。
按照功能要求:需列
表框显示障碍物类型,图
片框来绘制示例图形。另
外要拥有颜色设置,有一
个控件“CommonDialog”
来提供颜色~
设计的两个命令按
钮起到“联系”的作用:
确定,取消均进入主界
面。
“Listbox”控件:应用其添加及删除信息条目的功能,从文件中读取信息。利用其“INDEX”属性进行条目的识别,从而把文字“代码化”,方便了下面的编程。
(4)排行窗体Frmrecord:
样图如——
主要功能是记录各个障
碍物类型的最高的分,清除
历史记录等。主要应用的控
件是“Label”控件数组。
利用到数组同名但是
“INDEX”的特点,分别记录
各个类型障碍物的相关信息,
与设置窗体中的“Listbox”控件的“INDEX”属性相对应。
其他一些是说明性文字,“关闭”是为了回到主界面中去,也是起到一种联系的作用。
(5)说明窗体Frmhelp:
说明一下游戏规则。
加图片为了美观,一个通过设
置属性可以多行显示的文本
框。
“确定”按钮为了回到主
窗体,“联系”作用。
(四)游戏的运行(代码):
蛇身的长度起始设置为五段,如左图
为游戏初始化准备:利用Form_Load()事件
Private Sub Form_Load()
设置初始的一些运行的信息:
life = 3 生命为3
hs.Value = 15000
Pic.BackColor = lngBackColor
Pic.Left = 20 位置信息
Pic.Top = 20
打开所须的文件调以便用其过程读取信息如:
Call OpenMaze 打开关于障碍的文件
Call OpenRecord 打开关于记录的文件
Call DrawMaze 画出障碍物
Call DrawSnake 画出蛇
Call ShowNumberAll 画出所有的食物(数字1-5)
还有其他一些,暂不列举~
游戏开始运行 : 应用的是“Timer”事件确定时间的间隔,利用循环语句进行运行直到满足一定的条件才可以进行主要程序语句。
蛇的移动有已经定义好了的关于方向的函数控制。每次移动的单位距离为一个定值,利用的是“Select Case”语句进行选择方向。其中对于移动到了边界都做了分析处理,用“If shp(i).Left > 19 * Twenty Then shp(i).Left = 0”等四条语句。
For i = sheNum To 2 Step -1
sheDirect(i) = sheDirect(i - 1) Next
利用循环进行将运动传递下去,让每节蛇身均跟随运动。
吃到数字:应用的依然是循环,以便包括所有的情况。
通过蛇头位置的判断,与数字位置的比较,利用循环囊括五个数字;吃到食物便会增加得分,增长蛇身段数,运行音乐片段等等。
游戏结束:
--- 如图是一种死亡的情况,蛇吃到
了自己的身体。
另外遇到障碍物也是回损失一
次生命。当生命结束时给予一个对话
框
为“游戏结束,欢迎下次再玩”
(效果如左图),生命值不为零则内
容为“ 失去一条命,下次要小心~”。
处理过程首先是定义了一个
“BOOLEAN”型变量“game_over”用
于判断是否死亡;定义“LIFE”判断是否生命值为零(结束游戏)。
结束会再次为初始化做准备,可以在开始游戏。
( 五 )主要难点,问题解决
(1)关于画格子的问题:开始是在必然要运行的“form_load”事件中编写了对于“PIC”的画线语句,最终没画出来。便想其他的方法,参照借来的书本知道有“LINE”可以用,但是画多个格子又把“LINE”设置为控件数组,仿照例子编写,得以画出图形(网格,大小问题没解决)。后来我把Autoredraw属性设为“True”时,“PIC”也可以画出图形,但还是选择了用“LINE”感觉方便些。大小的解决为了方便把图片框中的单位设置为象素,这样20个象素大小与题目要求相符,大小也合适~
(2)放置食物(数字):最初用的是“DO LOOP”语句循环,有时候会死循环或者是食物出现在不当的地方。很多循环嵌套,我重新改写了这段代码。利用到了“GO TO”语句,解决了问题,语句也不是很麻烦。
(3)各数组打开,读写文件信息 :
这是我遇到的最难的问题,一直很难,问了别人,也查找了一些相关的程序代码和得以完成。也直接借用了一些文本资源。其过程很复杂,数组的利用多是二维数组,相对应的关系老是出错。
本文档为【贪吃蛇VB程序代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。