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