拼图:一个使用 Visual Basic 的 2D 游戏






2.30/5 (10投票s)
这是一个完整的益智游戏实现。
引言
这是我的第一次上传。这只是一个两小时的项目,也是我第一次向 The Code Project 投稿,请多多包涵 ~('.')~
我写这篇文章是因为我想分享我刚刚学到的东西。我记得我是一个初学者,可能会犯错误。我开发了一个简单的 2D 游戏。我在学校期间出于学习 Visual Basic 的兴趣编写了这个游戏程序。我使用了 Visual Studio 6 进行编码。
游戏
我意识到很多人只想尝试一下示例,看看是否值得花时间查看源代码。所以我会先介绍游戏、控制方式,然后在后面的章节中解释它的工作原理。这个中级教程描述了如何玩益智游戏以及如何重新排列数字。
首先,用户通过点击“确定”按钮启动游戏

然后出现一个主窗口。这里数字是随机排列的,你需要将数字按顺序排列。

如何玩益智游戏?
=> 要将一个数字与其相邻的空白块交换,只需点击该数字。继续此过程,直到所有数字都按顺序排列。

=> 要结束游戏,请点击右上角的图标。

=> 要查看游戏信息,请点击右上角的图标。

=> 要重新排列数字,请点击屏幕上中部的按钮。

设计
代码易于阅读:这不是一堆难以理解的代码行,而且游戏功能齐全。我认为它对初学者来说会很有趣。
全局变量声明
Dim x, Y, c As Integer
Dim bug As Integer
Dim flag As Integer
Dim
TEMP As Integer
游戏由许多较小的子模块构建而成。每个模块提供一个明确的目的。我下面列出了这些模块。
CMD_Click( )
SWAP( )
COMPARE()
CMD_Click( )
.
.
.
If CMD(Index).Caption <> "" Then 'To check that block is not empty
如果选定的块不在第一行
If Index > 3 Then
If CMD(Index - 4).Caption = "" Then
'To check that empty block is in first row or not
Call SWAP(Index, -4) 'if Ok Swap
Call COMPARE
'To check all number are arranged or not
Exit Sub
End If
End If
如果选定的块不在最后一行
If Index < 12 Then
If CMD(Index + 4).Caption = "" Then
'To check that empty block is in first row or not
Call SWAP(Index, 4) 'if Ok Swap
Call COMPARE
'To check all number are arranged or not
Exit Sub
End If
End If
如果选定的块不在最后一列
If (Index + 1) Mod 4 <> 0 Then
If CMD(Index + 1).Caption = "" Then
'To check that adjacent right block is empty
Call SWAP(Index, 1) 'if Ok Swap
Call COMPARE
'To check all number are arranged or not
Exit Sub
End If
End If
如果选定的块不在第一列
If Index Mod 4 <> 0 Then
If CMD(Index - 1).Caption = "" Then
'To check that adjacent left block is empty
Call SWAP(Index, -1) 'if Ok Swap
Call COMPARE
'To check all number are arranged or not
Exit Sub
End If
End If
End If
.
.
.
SWAP ( )
用于交换选定数字和空白块的模块
TEMP = CMD(A).Caption
CMD(A).Caption = CMD(A + B).Caption
CMD(A + B).Caption = TEMP
COMPARE()
用于检查所有数字是否按顺序排列的模块
如果是,则显示获胜屏幕
For x = 0 To 14
If CMD(x).Caption = x + 1 Then
flag = flag + 1
ElseIf CMD(x).Caption <> x + 1
Then
flag = 0
Exit Sub
End If
If flag = 14
Then
Load
frmwin
frmwin.Show
End If
Next x
工具
结论
我想感谢我的兄弟 Rohit Soam 提供的建设性批评和编辑。谢谢你,兄弟。
历史
2001 年 1 月 30 日 - 文章的初始发布