vb 课程设计
题目的抉择
从上学期期末开始,年级就通知我们准备好课程设计的题目。并且要求星级较高,以便能得高分。当时我就捧着那本书仔细将所有题目通看了一遍。就本人而言,我较喜欢第八章所学的计时器控件,我平时上机就爱用它来控制标签、图片框、时钟等等地运动
例如:下面是一个图片框在计时器控件下的运动
Private Sub Form_Load()
Picture1.Top = 0: Picture1.Left = 0
End Sub
Private Sub Timer1_Timer()
Picture1.Left = Picture1.Left + 100
If Picture1.Left >= Form1.ScaleWidth - Picture1.ScaleWidth Then
Picture1.Left = Form1.ScaleWidth - Picture1.ScaleWidth: Picture1.Top = Picture1.Top + 100
End If
If Picture1.Top >= Form1.ScaleHeight - Picture1.ScaleHeight Then
Picture1.Top = Form1.ScaleHeight - Picture1.ScaleHeight: Picture1.Left = Picture1.Left - 100
End If
End Sub
看着它在窗体上运动,我心中充满了成就感和热情,我想,这就是我的兴趣,于是我就经常时间去按照书上编些小程序,我想通过自己的代码语言对其发出命令,然后看着它执行。
基于此,我就瞄准了贪吃蛇这个题目。题目的要求和我以前玩的贪吃蛇不太一样,它增加了很多新功能,如:吃了标有几的数字标签,它就伸长几个单位;通过设置蛇的运行环境,可以改变它的所遇障碍物类型;最要命的是,它还有两只眼睛,不断地跟着身体窥探前方;还有,它要求有个英雄排行榜,随时记录玩家的得分等等。。。。。。。。欣喜于这些新功能的同时,我想到了:要把这些都一一完成,恐怕不容易。
困难重重
超级困难1-------蛇爬行
开始时,我着手贪吃蛇代码的书写,首先便是画方格,画蛇身,产生食物。刚开始时我不会画方格,我就用鼠标在窗体上一条一条的画,最后费了九牛二虎之力终于画出来了,紧接着我又通过属性设置将蛇的眼睛和身体画好了,我暗自兴奋 。可是,接下来蛇怎么动我就彻底为难了,我通过一些属性如p 设置蛇只能向有运动,其它方向都不行,稍微不注意蛇身就飘移,最后四分五裂。。。。。。。。。
然后,我为其加载了键盘事件:(用shang.u来控制蛇头接受键盘的指示)
Private Sub form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 13
zanting = Not zanting '开始游戏
If zanting = False Then
Timer1.Enabled = True
Timer2.Enabled = True
Else '游戏暂停
Timer1.Enabled = False
Timer2.Enabled = False
Form1.Caption = "贪吃蛇(暂停)"
End If
'判断方向,设置变量值
Case 37
If you = True Then Exit Sub
zuo = True
you = False
shang = False
六一儿童节发言稿 xia = False
Case 38
If xia = True Then Exit Sub王鸥刘恺威是怎么回事
zuo = False
you = False
shang = True
xia = False
Case 39
If zuo = True Then Exit Sub
zuo = False
you = True
shang = False
xia = False
Case 40
If shang = True Then Exit Sub
zuo = False
you = False
shang = False
xia = True
End Select
End Sub
可是,虽然键盘可以控制了,但是蛇依旧跑起来四分五裂,无规无矩。尤其是蛇转角的时候,整个蛇身一起平行着往上或往下,很是伤透了脑筋。。。。。。我自认为只要蛇可以正常运动接下来吃食物.撞死就不是问题,于是我花费大量功夫去琢磨,其间代码删了又改改了又删,可是,蛇还是无法像预料中那样运动。我有点懈怠了
课余,我和谢黄骏等同学闲聊时,得到不少启发。我明白了要让蛇动起来,而且按照期望运动,必须通过设置变量,通过坐标赋值(将后一个圆圈的p值赋给前面一个,记下每一个圆圈在每时每刻的坐标值)来实现平凡之路 歌词
于是我不得不重新画线,重新划圆圈,为了方便用循环变量来实现坐标转换,我用了load控件数组
Form1.Scale (0, 0)-(20, 20) '给窗体定坐标
升降晾衣架安装 For i = 0 To 20 '画方格
Load Line1(i)
Line1(i).Visible = True
Load Line2(i)
Line2(i).Visible = True
With Line1(i)
.X1 = 0
.Y1 = i
.X2 = 20
.Y2 = i
End With
With Line2(i)
.X1 = i
.Y1 = 0
.X2 = i
.Y2 = 20
End With
Next
For i = 1 To 5 '开始时产生圆圈
Load Shape1(i)
最囧大脑 Shape1(i).Visible = True
With Shape1(i)
.Left = (i - 1)
.Top = 0
.Width = 1
.Height = 1
.FillColor = vbGreen
.FillStyle = 0
End With
Next i
然后,我用p5共5组变量分别代表蛇身每个圆圈的坐标(注:因为蛇眼的两个圆圈位置大小不好控制没有使用,所以我的蛇没有眼睛)
崔智友结婚 left5 = left4
top5 = top4
left4 = left3
top4 = top3
left3 = left2
top3 = top2
left2 = left1
top2 = top1
left1 = Shape1(1).Left
top1 = Shape1(1).Top
紧接着,我就为其加载计时器控件,希望尽快让蛇爬起来,每次激发timer事件,就记录下蛇身每个圆圈的坐标,然后赋值。其间,每次用健盘敲击方向时,总会带来蛇头的上下左右中的每个正确值,于是timer事件中接收到这个信息让蛇产生反应 。例如敲击键盘下方向则
If xia = True Then
For j = 1 To shumu - 3
If Abs(Shape1(shumu).Top - Shape1(j).Top) <= 0.5 And Abs(Shape1(shumu).Left - Shape1(j).Left) < 0.5 Then Call reproduce
Next j
If Shape1(shumu).Top < 19 Then
For i = 1 To shumu - 1
Shape1(i).Left = Shape1(i + 1).Left
发布评论