我知道VB.NET对视频游戏不利,但我在接下来的一段时间内仍然坚持使用它,因为这就是我的高中计算机科学课程所使用的。
我知道有很多方法可以在Visual Basic中绘制图形。我听说过使用Me.CreateGraphics
,使用onPaint
事件处理程序,并使用后台缓冲区(虽然我不确定使用这些方法的最佳方法)。顺便说一句,我最感兴趣的是创建简单的2D游戏。此外,它需要使用默认的VB.NET库,所以我无法安装XNA或类似的东西。
答案 0 :(得分:1)
对于简单的游戏,GDI +(CreateGraphics
方式)是可以的。
在表单中添加Picturebox。此Picturebox将显示每个渲染帧。但是,您不直接在其上绘制,而是在另一个图像上 - 或后备缓冲区。基本上你会创建一个游戏循环。在这里,您可以处理用户输入,执行游戏逻辑以及渲染新帧:
Sub GameLoop()
Do
HandeUserInput() 'Handles keys or mouse movement
PerformGameLogic() 'Move NPCs, etc.
RenderNewFrame() 'Redraw the new state of the game
Loop
End Sub
用户输入和游戏逻辑取决于您。渲染将通过创建所需大小的新位图来完成,然后使用GDI +图形对象在其上绘制内容。然后,一旦完成,您就会在图片框中显示这个新位图。
Sub RenderNewFrame()
Dim NewFrame as New Bitmap(640, 480) 'Or whatever resolution you want
Using g as Graphics = Graphics.FromImage(NewFrame)
DrawWorld(g)
DrawPlayer(g)
End Using
If Picturebox1.Image IsNot Nothing Then Picturebox1.Image.Dispose()
Picturebox1.Image = NewFrame
End Sub
我处置前一帧,因为位图不受管理,会很快堆积在内存中。
这是游戏的基本框架,在使用GDI +的VB.NET中实际上非常好用。您可能希望在每帧之间添加小延迟,1..2 ms。这样可以防止大部分处理器负载,同时不会影响游戏性能。