为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

vb实现贪吃蛇小游戏

2018-09-22 13页 doc 34KB 59阅读

用户头像

is_614050

暂无简介

举报
vb实现贪吃蛇小游戏vb实现贪吃蛇小游戏 VB实现贪吃蛇小游戏 ——比较适合VB初学者,属原创作品 图1 图2 图3 如图1所示,布置控件,其中有4个timer控件,1个picture控件(底图),4个command 控件(上下左右),10个label控件。 其他功能都在程序里实现,其中贪吃蛇都是由点来组成的,初学者主要学习一下t imer控件的应用,还有贪吃蛇拐弯怎么实现的。图2、图3是游戏视图。 主程序: Public a, b, f As Double: Public i, j, c, d, e, g, h, z As ...
vb实现贪吃蛇小游戏
vb实现贪吃蛇小游戏 VB实现贪吃蛇小游戏 ——比较适合VB初学者,属原创作品 图1 图2 图3 如图1所示,布置控件,其中有4个timer控件,1个picture控件(底图),4个command 控件(上下左右),10个label控件。 其他功能都在程序里实现,其中贪吃蛇都是由点来组成的,初学者主要学习一下t imer控件的应用,还有贪吃蛇拐弯怎么实现的。图2、图3是游戏视图。 主程序: Public a, b, f As Double: Public i, j, c, d, e, g, h, z As Integer Dim aa(100) As Double: Dim bb(100) As Double Private Sub Form_Load() a = 100: b = 300: c = 4 'a、b定义第一个点(红点)位置,c能控制蓝点数量 g = 2000: h = 2000 Timer1.Interval = (200 - z * 30) '定义每个定时器间隔时间 0.2S Timer2.Interval = (200 - z * 30) Timer3.Interval = (200 - z * 30) Timer4.Interval = (200 - z * 30) Timer5.Interval = 300 Timer1.Enabled = True '初设一开始向右走Timer2.Enabled = False Timer3.Enabled = False Timer4.Enabled = False End Sub Private Sub Timer1_Timer() '向右走 Picture1.Cls '没循环一次就清除上一次画的图像,要不就看不出运动了 Picture1.DrawWidth = 10 '定义画图粗细 b = b + 100 'b每次都加100,画图后坐标就变了 aa(i) = a bb(j) = b Picture1.PSet (b, a), vbRed '绘制第一个点(红) For k = 1 To c '此k-for循环从1到c,绘制c个蓝色点 If aa(99) = 0 Then '如果游戏刚开始,以下绘制方法,一开始j=0,j-k为负,bb(j-k)与aa(j- k)数组无效,因此在j<=c时独绘制 If j <= c And i <= c Then f = 400 - 100 * (k - j) Picture1.PSet (f, 100), vbBlue Else Picture1.PSet (bb(j - k), aa(i - k)), vbBlue '其他情况时,蓝点走过红点的轨迹 End If End If If aa(99) <> 0 Or bb(99) <> 0 Then '如果时j和i运行到99后变为0,则bb(0)为红点时,蓝点必须走bb(99)、bb(98).... If j <= c And i <= c Then d = 100 - k + j: e = 100 - k + i '此行与以下两行作用就是为了实现蓝点绘制时混合了...bb(0)、bb(99)...的情况 If d >= 100 Then d = d - 100 If e >= 100 Then e = e - 100 Picture1.PSet (bb(d), aa(e)), vbBlue Else Picture1.PSet (bb(j - k), aa(i - k)), vbBlue End If End If Next k If b > 4900 Or b < 100 Or a > 4900 Or a < 100 Then '碰墙则重新开始,以下进行了数据重置和清零 j = -1: i = -1: b = 300: a = 100: c = 4: z = 0 '如果碰墙了,j=- 1时因为运行完了 后面有j=j+1,这样j就等于0了,把a、b重置 MsgBox ("对不起~您碰墙了~接下来将重新开始游戏~") For o = 0 To 99 aa(o) = 0: bb(o) = 0 '把aa()、bb()数组中所有的数清零 Next o End If If j > c Then '咬尾了就重新开始游戏,以下进行了数据重置和清零 For p = 1 To c If bb(j) = bb(j - p) And aa(i) = aa(i - p) Then j = -1: i = -1: b = 300: a = 100: c = 4: z = 0 MsgBox ("对不起~您咬尾了~接下来将重新开始游戏~") For o = 0 To 99 aa(o) = 0: bb(o) = 0 Next o Exit For End If Next p End If j = j + 1 i = i + 1 If j = 100 Or i = 100 Then j = 0: i = 0 'j不能持续增长,有可能会溢出,现在另j到了100就变0 End Sub Private Sub Timer2_Timer() '向左走 Picture1.Cls Picture1.DrawWidth = 10 b = b - 100 aa(i) = a bb(j) = b Picture1.PSet (b, a), vbRed For k = 1 To c If aa(99) = 0 Then If j <= c And i <= c Then Picture1.PSet (400 - 100 * (k - j), 100), vbBlue Else Picture1.PSet (bb(j - k), aa(i - k)), vbBlue End If End If If aa(99) <> 0 Or bb(99) <> 0 Then If j <= c And i <= c Then d = 100 - k + j: e = 100 - k + i If d >= 100 Then d = d - 100 If e >= 100 Then e = e - 100 Picture1.PSet (bb(d), aa(e)), vbBlue Else Picture1.PSet (bb(j - k), aa(i - k)), vbBlue End If End If Next k If b > 4900 Or b < 100 Or a > 4900 Or a < 100 Then j = -1: i = -1: b = 300: a = 100: c = 4: z = 0 MsgBox ("对不起~您碰墙了~接下来将重新开始游戏~") For o = 0 To 99 aa(o) = 0: bb(o) = 0 Next o Timer2.Enabled = False Timer1.Enabled = TrueEnd If If j > c Then For p = 1 To c If bb(j) = bb(j - p) And aa(i) = aa(i - p) Then j = -1: i = -1: b = 300: a = 100: c = 4: z = 0 MsgBox ("对不起~您咬尾了~接下来将重新开始游戏~") For o = 0 To 99 aa(o) = 0: bb(o) = 0 Next o Timer2.Enabled = False Timer1.Enabled = True Exit For End If Next p End If j = j + 1 i = i + 1 If j = 100 Or i = 100 Then j = 0: i = 0 End Sub Private Sub Timer3_Timer() '向下走 Picture1.Cls Picture1.DrawWidth = 10 a = a + 100 aa(i) = a bb(j) = b Picture1.PSet (b, a), vbRed For k = 1 To c If aa(99) = 0 Then If j <= c And i <= c Then Picture1.PSet (f, 100 - 100 * (k - j)), vbBlue Else Picture1.PSet (bb(j - k), aa(i - k)), vbBlue End If End If If aa(99) <> 0 Or bb(99) <> 0 Then If j <= c And i <= c Then d = 100 - k + j: e = 100 - k + i If d >= 100 Then d = d - 100 If e >= 100 Then e = e - 100 Picture1.PSet (bb(d), aa(e)), vbBlue Else Picture1.PSet (bb(j - k), aa(i - k)), vbBlue End If End If Next k If b > 4900 Or b < 100 Or a > 4900 Or a < 100 Then j = -1: i = -1: b = 300: a = 100: c = 4: z = 0 MsgBox ("对不起~您碰墙了~接下来将重新开始游戏~") For o = 0 To 99 aa(o) = 0: bb(o) = 0 Next o Timer3.Enabled = False Timer1.Enabled = True End If If j > c Then For p = 1 To c If bb(j) = bb(j - p) And aa(i) = aa(i - p) Then j = -1: i = -1: b = 300: a = 100: c = 4: z = 0 MsgBox ("对不起~您咬尾了~接下来将重新开始游戏~") For o = 0 To 99 aa(o) = 0: bb(o) = 0 Next o Timer3.Enabled = False Timer1.Enabled = True Exit For End If Next p End If j = j + 1 i = i + 1 If j = 100 Or i = 100 Then j = 0: i = 0 End Sub Private Sub Timer4_Timer() '向上走 Picture1.Cls Picture1.DrawWidth = 10 a = a - 100aa(i) = a bb(j) = b Picture1.PSet (b, a), vbRed For k = 1 To c If aa(99) = 0 Then If j <= c And i <= c Then Picture1.PSet (400 - 100 * (k - j), 100), vbBlue Else Picture1.PSet (bb(j - k), aa(i - k)), vbBlue End If End If If aa(99) <> 0 Or bb(99) <> 0 Then If j <= c And i <= c Then d = 100 - k + j: e = 100 - k + i If d >= 100 Then d = d - 100 If e >= 100 Then e = e - 100 Picture1.PSet (bb(d), aa(e)), vbBlue Else Picture1.PSet (bb(j - k), aa(i - k)), vbBlue End If End If Next k If b > 4900 Or b < 100 Or a > 4900 Or a < 100 Then j = -1: i = -1: b = 300: a = 100: c = 4: z = 0 MsgBox ("对不起~您碰墙了~接下来将重新开始游戏~") For o = 0 To 99 aa(o) = 0: bb(o) = 0 Next o Timer4.Enabled = False Timer1.Enabled = True End If If j > c Then For p = 1 To c If bb(j) = bb(j - p) And aa(i) = aa(i - p) Then j = -1: i = -1: b = 300: a = 100: c = 4: z = 0 MsgBox ("对不起~您咬尾了~接下来将重新开始游戏~") For o = 0 To 99 aa(o) = 0: bb(o) = 0 Next o Timer4.Enabled = False Timer1.Enabled = True Exit For End If Next p End If j = j + 1 i = i + 1 If j = 100 Or i = 100 Then j = 0: i = 0 End Sub Private Sub Command1_Click() '上 If Timer3.Enabled = False Then Timer2.Enabled = False Timer1.Enabled = False Timer4.Enabled = True End If End Sub Private Sub Command2_Click() '下 If Timer4.Enabled = False And j > c Then Timer1.Enabled = False Timer2.Enabled = False Timer3.Enabled = True End If End Sub Private Sub Command3_Click() '左 If Timer1.Enabled = False Then Timer3.Enabled = False Timer4.Enabled = False Timer2.Enabled = True End If End Sub Private Sub Command4_Click() '右 If Timer2.Enabled = False Then Timer4.Enabled = False Timer3.Enabled = False Timer1.Enabled = True End If End SubPrivate Sub picture1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 38 And Timer3.Enabled = False Then '上 Timer2.Enabled = False 'Timer3.Enabled = False Timer1.Enabled = False Timer4.Enabled = True End If If KeyCode = 40 And Timer4.Enabled = False And j > c Then '下 Timer2.Enabled = False Timer1.Enabled = False 'Timer4.Enabled = False Timer3.Enabled = True End If If KeyCode = 37 And Timer1.Enabled = False Then '左 'Timer1.Enabled = False Timer3.Enabled = False Timer4.Enabled = False Timer2.Enabled = True End If If KeyCode = 39 And Timer2.Enabled = False Then '右 'Timer2.Enabled = False Timer3.Enabled = False Timer4.Enabled = False Timer1.Enabled = True End If End Sub Private Sub Timer5_Timer() Picture1.DrawWidth = 7 Picture1.PSet (g, h), RGB(50, 50, 0) If b = g And a = h Then g = (Int(Rnd * 48) + 1) * 100 h = (Int(Rnd * 48) + 1) * 100 c = c + 1 End IfIf c = 30 Then z = z + 1 j = 0: i = 0: b = 300: a = 100: c = 4 MsgBox ("恭喜您~进入下一关~") For o = 0 To 99 aa(o) = 0: bb(o) = 0 Next o Timer4.Enabled = False Timer3.Enabled = False Timer2.Enabled = False Timer1.Enabled = True End If If p = 6 Then MsgBox ("您真是快手王啊~重新开始吧~") j = -1: i = -1: b = 300: a = 100: c = 4: z = 0 MsgBox ("对不起~您咬尾了~接下来将重新开始游戏~") For o = 0 To 99 aa(o) = 0: bb(o) = 0 Next o End If Timer1.Interval = (200 - z * 30) '定义每个定时器间隔时间 0.2S Timer2.Interval = (200 - z * 30) Timer3.Interval = (200 - z * 30) Timer4.Interval = (200 - z * 30) Label3.Caption = g Label4.Caption = h Label5.Caption = c + 1 Label6.Caption = z + 1 End Sub 主程序结束
/
本文档为【vb实现贪吃蛇小游戏】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索