Private Scene As TVScene '声明场景TVScene对象
Private Mesh As TVMesh '声明网格TVMesh对象
Private InputE As TVInputEngine '声明输入(键盘、鼠标)对象
Private Sub Form_Load()
Set TV = New TVEngine '定义TV对象为TVEngine类的一个实例
Set InputE = New TVInputEngine '定义InputE对象为TVInputEngine类的一个实例
Set Scene = New TVScene '定义Scene对象为TVScene的一个实例
Set Mesh = Scene.CreateMeshBuilder '定义Mesh对象为TVMesh的一个实例,用Scene的CreateMeshBuilder方法生成
Scene.SetSceneBackGround 1, 0, 0 '设置背景颜色
Mesh.CreateTeapot '建立茶壶模型
Mesh.SetPosition 0, 0, 10 'Z越小,图像越大
Form1.Show
Do '开始进入游戏循环
DoEvents '用DoEvents函数,让Windows空出来作别的事
TV.Clear '清除缓冲区的内容
TV.RenderToScreen '把缓冲区的内容渲染到屏幕上
Loop Until InputE.IsKeyPressed(TV_KEY_ESCAPE) '直到用户按下了Esc,游戏终止运行
Set Mesh=Nothing
Set Scene=Nothing
Set InputE = Nothing '释放InputE对象所占用的内存空间
Set TV = Nothing '释放TV对象所占用的内存空间
End '程序结束
End Sub
这样的都会有一个地图,都会有坐标,
*子弹追踪移动的敌人如何实现?
[子弹的移动] 首先会有时间触发.可以按敌人每移动一点就可以触发移动事件.会返回敌人的坐标,每个子弹发出时.在子弹的类中要有目标对象的记录.由于速度不会一样.简单的话用圆型子弹,复杂点就其它形状(要转向处理,旋转)
*敌人要是很多只追踪最近的一个
这个其实差不多,在有坐标时你就可以按指定的方式查找你炮塔指定坐标内的全部对象,计算一下就可以得到.
如果是 顶视图只要图片旋转一下就可以了,如果不是那就要有这个塔的各个方位的图片,在旋转指定角度时绘制指定方位的图
如果你知道gif文件的话就知道,其实也是一张张的图片快速刷新替换 来达到的,计算机的速度你可以放心
你控制是升级还是位置.如果知道点游戏编程的话,都应该在设计时都会有大小也有坐标.在.具体是控件还是数组.还是看你的基础了,控件可能简单一点吧
控件: 单击事件等,可以弹出升级 删除等操作
不用的话.直接要有物体管理类.记录每一个物体的坐标,在发生事件时,可以查找指定坐标物体.然后再绘制要怎么做出响应
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
其实你在做时应该先看下 RPG游戏制作流程,工作模式
需用VB实现,代码如下
'定义蛇的运动速度枚举值
Private Enum tpsSpeed
QUICKLY = 0
SLOWLY = 1
End Enum
'定义蛇的运动方向枚举值
Private Enum tpsDirection
Private Enum tpsForbiddenZone
'定义蛇头及身体初始化数枚举值
Private Enum tpsSnake
SNAKEONE = 1
'定义蛇宽度的常量
Private Const SNAKEWIDTH As Integer = 100
'该过程用于显示游戏信息
Me.Show
Me.lblTitle = "BS贪食蛇 — (版本 " App.Major "." App.Minor "." App.Revision ")"
Me.Caption = Me.lblTitle.Caption
frmSplash.Show 1
'该过程用于使窗体恢复原始大小
Private Sub Form_Resize()
If Me.WindowState 1 Then
Me.Caption = ""
End If
'该过程用于重新开始开始游戏
Private Sub cmdGameStart_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Beep
'该过程用于暂停/运行游戏
Private Sub chkPause_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me.chkPause.Caption = "暂停游戏(P)" Then
Me.tmrSnakeMove.Enabled = False
Me.tmrGameTime.Enabled = False
Me.picMoveArea.Enabled = False
Me.lblPauseLab.Visible = True
Me.chkPause.Caption = "继续游戏(R)"
Else
Me.tmrSnakeMove.Enabled = True
Me.tmrGameTime.Enabled = True
Me.picMoveArea.Enabled = True
Me.lblPauseLab.Visible = False
Me.chkPause.Caption = "暂停游戏(P)"
'该过程用于显示游戏规则
Private Sub cmdGameRules_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'该过程用于显示游戏开发信息
Private Sub cmdAbout_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'该过程用于退出游戏
Private Sub cmdExit_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case msg
End
Exit Sub
End Select
Private Sub imgWindowTop_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
'该共用过程用于处理窗体控制按钮组的相关操作_(锁定、最小化、退出)
Private Sub chkWindowButton_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button 1 Then Exit Sub
Select Case Index
Case 0 '锁定窗体
If Me.chkWindowButton(0).Value = 1 Then
Me.imgWindowTop.BorderStyle = 0
Me.imgWindowTop.Enabled = False
Me.imgWindowTop.BorderStyle = 1
Me.imgWindowTop.Enabled = True
Case 1 '最小化
Me.WindowState = 1
Me.chkWindowButton(1).Value = 0
Me.Caption = "BS贪食蛇 — (V-" App.Major "." App.Minor "版本)"
'该过程用于设置蛇运动速度的快慢
Private Sub hsbGameSpeed_Change()
Me.tmrSnakeMove.Interval = Me.hsbGameSpeed.Value
'该过程用于通过键盘的方向键改变蛇的运动方向
Private Sub picMoveArea_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case g_intDirection
Case D_UP
If KeyCode = D_DOWN Then Exit Sub
Case D_DOWN
If KeyCode = D_UP Then Exit Sub
Case D_LEFT
If KeyCode = D_RIGHT Then Exit Sub
Case D_RIGHT
If KeyCode = D_LEFT Then Exit Sub
g_intDirection = KeyCode
'该计时循环过程用于计算游戏耗费的秒数并显示
Private Sub tmrGameTime_Timer()
g_lngGameTime = g_lngGameTime ◆ 1
Me.lblGameTime.Caption = g_lngGameTime "秒"
'该计时循环过程用于控制蛇的行动轨迹
Private Sub tmrSnakeMove_Timer()
Dim lngSnakeX As Long, lngSnakeY As Long, lngSnakeColor As Long
Dim lngPointX As Long, lngPointY As Long, lngPointColor As Long
Randomize
Me.picMoveArea.SetFocus
Me.picMoveArea.Cls
'确认蛇头的运动方向并获取新的位置
Case D_UP '向上运动
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldX
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldY
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_CurY - SNAKEWIDTH
Case D_DOWN '向下运动
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_CurY ◆ SNAKEWIDTH
Case D_LEFT '向左运动
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_CurX - SNAKEWIDTH
Case D_RIGHT '向右运动
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_CurX ◆ SNAKEWIDTH
'根据新的位置绘制蛇头
lngSnakeX = g_udtSnake(SNAKEONE).Snake_CurX
lngSnakeY = g_udtSnake(SNAKEONE).Snake_CurY
lngSnakeColor = g_udtSnake(SNAKEONE).Snake_Color
Me.picMoveArea.PSet (lngSnakeX, lngSnakeY), lngSnakeColor
'移动蛇身体其他部分的位置
g_udtSnake(i).Snake_CurX = g_udtSnake(i - 1).Snake_OldX
g_udtSnake(i).Snake_CurY = g_udtSnake(i - 1).Snake_OldY
lngSnakeX = g_udtSnake(i).Snake_CurX
lngSnakeY = g_udtSnake(i).Snake_CurY
lngSnakeColor = g_udtSnake(i).Snake_Color
Next i
'更新蛇旧的坐标位置
For j = 1 To g_intSnakeLength
g_udtSnake(j).Snake_OldX = g_udtSnake(j).Snake_CurX
g_udtSnake(j).Snake_OldY = g_udtSnake(j).Snake_CurY
Next j
'判断蛇在移动中是否到了禁区而导致游戏失败
If m_funMoveForbiddenZone(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then
Me.picMoveArea.Visible = False
'判断蛇在移动中是否碰到了自己的身体而导致游戏失败
If m_funTouchSnakeBody(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then
'判断蛇是否吃到了果子
If m_funEatPoint(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then
'累加粉丝的得分并刷新得分显示
g_intPlayerScore = g_intPlayerScore ◆ 1
Me.lblYourScore.Caption = g_intPlayerScore "分"
Call m_subAddSnake '加长蛇的身体
Call m_subGetPoint '获取下一个果子的位置和颜色
'绘制果子
lngPointX = g_udtPoint.Point_X
lngPointY = g_udtPoint.Point_Y
lngPointColor = g_udtPoint.Point_Color
Me.picMoveArea.PSet (lngPointX, lngPointY), lngPointColor
'该私有子过程用于初始化游戏
Private Sub m_subGameInitialize()
Erase g_udtSnake '清空蛇的结构数组
g_intPlayerScore = 0 '清空粉丝的得分
g_lngGameTime = 0 '清空游戏耗费的秒数
g_intDirection = D_DOWN '设定蛇的初始运动方向为下
ReDim g_udtSnake(1 To g_intSnakeLength) '重新定义蛇的长度
'定义蛇头部的数据
With g_udtSnake(SNAKEONE)
.Snake_Color = vbBlack
End With
With g_udtSnake(SNAKETWO)
.Snake_Color = vbGreen
With g_udtSnake(SNAKETHREE)
.Snake_Color = vbYellow
With g_udtSnake(SNAKEFOUR)
.Snake_Color = vbRed
Me.picMoveArea.Visible = True
Call m_subGetPoint '获取第一个果子的位置和颜色
这并不难,但程序肯定很长,其实,只要你已经学会了VB,这个问题并不难,但只是懒惰.,你应该自己编的,遇到问题,我们要问,请不要问.
锤子,图片显示和隐藏的Visible属性设置为指示的出现和消失的仓鼠,您可以使用自定义鼠标.
以上就是土嘎嘎小编为大家整理的关于vb.net小游戏实例的信息相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!