零基础VB教程066期:贪吃蛇游戏开发第二节 让蛇动起来

简介: 零基础VB教程066期:贪吃蛇游戏开发第二节 让蛇动起来

刘金玉的零基础VB教程066期:贪吃蛇游戏开发第二节 让蛇动起来




基本思路


原理:贪吃蛇的运动相当于插入一个头结点,删除一个尾节点,如此循环


VB中的代码思路

默认向右移动的情况下:

1、直接将每个节点数据向左移动一个

2、将最后一个节点重新赋值

3、赋值时候必须要注意方向


控制蛇的方向

原则:不能让蛇进行往返,通过控制按键的值与原方向的值的差值的绝对值不等于2,来赋值


课堂总结

1、要让蛇运动,要用到时钟控件

2、每次时钟执行的代码必须要刷新界面cls,清除原先绘画出来的蛇身,根据新的数据来刷新蛇身

3、每次运动的数据是将所有数据从蛇头开始项蛇身后赋值一格,根据当前方向,改变蛇头方向

4、数据与绘画独立处理


程序界面:


程序代码:

Private Type Node '每一节蛇身
    D As Integer '37左38上39右40下
    X As Single 'left
    Y As Single 'top
End Type
Dim W As Integer '每一节蛇身宽度
Dim sno() As Node '声明一条蛇,是动态数组
Dim currentDirect As Integer '代表蛇运动的当前方向
Private WithEvents timer1 As Timer
'初始化一条蛇的各个参数
Function init()
AutoRedraw = True '自动重绘
W = 200
currentDirect = 39 '默认向右运动
ReDim sno(5) As Node
'初始化各个坐标点
Dim i As Long
For i = 0 To UBound(sno) Step 1
    sno(i).D = currentDirect
    sno(i).X = ScaleWidth / 2 + i * W
    sno(i).Y = ScaleHeight / 2
Next i
End Function
'画一条蛇
Function drawSnake()
Cls
Dim i As Long
For i = 0 To UBound(sno) Step 1
    Line (sno(i).X, sno(i).Y)-(sno(i).X + W, sno(i).Y + W), vbBlue, BF
Next i
End Function
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If Abs(currentDirect - KeyCode) <> 2 Then currentDirect = KeyCode
End Sub
Private Sub Form_Load()
Call init
Call drawSnake
'对时钟控件进行初始化
Set timer1 = Controls.Add("vb.timer", "timer1")
timer1.Interval = 100
timer1.Enabled = True
End Sub
'运动思路:插入头结点,删除尾节点
Function sport()
Dim i As Long
'将每一个节点数据向前移动一位
For i = 1 To UBound(sno) Step 1
    sno(i - 1) = sno(i)
Next i
'将头结点,也就是数组的最后一位重新复制
If currentDirect = 37 Then
    sno(UBound(sno)).X = sno(UBound(sno)).X - W
ElseIf currentDirect = 38 Then
    sno(UBound(sno)).Y = sno(UBound(sno)).Y - W
ElseIf currentDirect = 39 Then
    sno(UBound(sno)).X = sno(UBound(sno)).X + W
ElseIf currentDirect = 40 Then
    sno(UBound(sno)).Y = sno(UBound(sno)).Y + W
End If
End Function
Private Sub timer1_Timer()
Call sport
Call drawSnake
End Sub
相关文章
|
8月前
|
API 开发工具 C++
游戏编程之十五 DirectDraw 的基本知识
游戏编程之十五 DirectDraw 的基本知识
92 0
|
1天前
|
存储 定位技术 API
C语言实战 -- 经典贪吃蛇游戏(含完整源码)
C语言实战 -- 经典贪吃蛇游戏(含完整源码)
6 1
|
10月前
|
缓存 图形学
《unity游戏优化》第一章读书笔记
《unity游戏优化》第一章读书笔记
零基础VB教程065期:贪吃蛇游戏开发第一节 初始化一条蛇
零基础VB教程065期:贪吃蛇游戏开发第一节 初始化一条蛇
|
监控 Windows
VB游戏开发#001植物大战僵尸小游戏开发思路说明及源码
VB游戏开发#001植物大战僵尸小游戏开发思路说明及源码
353 0
零基础VB教程067期:贪吃蛇游戏开发第三节 撞墙会挂的
零基础VB教程067期:贪吃蛇游戏开发第三节 撞墙会挂的
刘金玉的零基础VB教程070期:贪吃蛇游戏开发第六节 记分与故障排除
刘金玉的零基础VB教程070期:贪吃蛇游戏开发第六节 记分与故障排除
刘金玉的零基础VB教程071期:贪吃蛇游戏开发第七节 游戏暂停控制
刘金玉的零基础VB教程071期:贪吃蛇游戏开发第七节 游戏暂停控制
|
存储
VB来开发打字高手游戏,灵活运用时钟控件【VB学习笔记2020课堂版09】
VB来开发打字高手游戏,灵活运用时钟控件【VB学习笔记2020课堂版09】
VB来开发打字高手游戏,灵活运用时钟控件【VB学习笔记2020课堂版09】
|
API C语言
C语言编程之经典小游戏--贪吃蛇
C语言编程之经典小游戏--贪吃蛇
294 0
C语言编程之经典小游戏--贪吃蛇