vb 俄罗斯方块设计程序及分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
************* 俄罗斯方块DIY ***************
键盘控制方法:
1.左右光标键控制方块左右移动;
2.上光标键控制方块顺时针旋转90度;
3.下光标键控制方块加速向下移动。
设计过程:
(一) 在VB6.0中新建一个标准EXE工程
(二) 建立一个窗体,窗体属性设置如下:
名称= frmErs
Caption = "俄罗斯方块1.12"
(三) 在窗体上添加两个图片框,属性设置如下:
(1)名称= picPlay
AutoRedraw = True
BackColor = &H00FF0000& '蓝色
(2)名称= picNext
AutoRedraw = True
BackColor = &H00FF0000& '蓝色
(四) 在窗体上再添加一个标签,属性设置如下:
名称= lblFenShu
(五) 用菜单编辑器制作如下菜单:
(1)一级菜单项:
标题= "文件(&F)"
名称= mnuSet
下属二级菜单项:
标题= "退出"
名称= mnuExit
(2)一级菜单项:
标题= "帮助(&H)"
名称= mnuHelp
下属二级菜单项:
标题= "操作提示"
名称= mnuTopic
(六) 在窗体代码窗口输入如下代码:
Option Explicit
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) '按键代码传入Main()主程序中
gKeyRef = KeyCode
End Sub
Private Sub Form_Load()
Me.Top=0
Me.KeyPreview = True
picPlay.ScaleMode = 3 'Pixel
picNext.ScaleMode = 3 'Pixel
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Private Sub mnuExit_Click()
'退出
Unload Me
End Sub
Private Sub mnuTopic_Click()
Dim Msg As String
Msg = "键盘控制方法:" & vbCrLf
Msg = Msg & "1.左右光标键控制方块左右移动;" & vbCrLf
Msg = Msg & "2.上光标键控制方块顺时针旋转90度;" & vbCrLf
Msg = Msg & "3.下光标键控制方块加速向下移动。" & vbCrLf & vbCrLf Msg = Msg & "福建南平梁远海20000年10月提供" & vbCrLf
Msg = Msg & " E-Mail: dayang@"
MsgBox Msg, vbOKOnly + vbQuestion, Me.Caption
End Sub
Private Sub picPlay_KeyDown(KeyCode As Integer, Shift As Integer) '按键代码传入Main()主程序中
gKeyRef = KeyCode
End Sub
(七) 添加一个新模块moudel1,并输入如下代码:
Option Explicit
Public gKeyRef As Integer
' 游戏操作按键码值全局变量
Dim mErsBar(0 To 8) As Long
' 俄罗斯方块形状定义,数组下标分配如下:
' +---+---+---+
' | 0 | 1 | 2 |
' +---+---+---+
' | 7 | 8 | 3 |
' +---+---+---+
' | 6 | 5 | 4 |
' +---+---+---+
' 之所以这样定义,是为了方便方块类型设置和旋转判断
' 数组元素取值为:是空白= 0,是方块构件= 1
Dim mErsPD(2, 2) As Long
' 将二维坐标系转化为mErsBar()对应下标,以进行方块移动的判断
' 数组元素取值如下:
' mErsPD mErsPD mErsPD
' (0, 0) = 0 (1, 0) = 1 (2, 0) = 2
' (0, 1) = 7 (1, 1) = 8 (2, 1) = 3
' (0, 2) = 6 (1, 2) = 5 (2, 2) = 4
' 应用样式:If mErsBar(mErsPD(x,y)) = 0 Then ...
Dim mPlayWindow() As Long
' 运动小窗口的屏幕状况数组
' 数组大小在子程序NewSatrt()中根据mPlayKuan,mPlayGao的值重定义
' 即ReDim mPlayWindow(-1 To mPlayKuan + 2, 1 To mPlayGao + 2) As Long
' 取上面的下标范围是为了方块运动判断设计上的方便,
' 方块实际运动范围在(1,1)-(mPlayKuan,mPlayGao)之间
' 数组元素取值为:是空白= 0,是方块构件> 0,初始值= -9
Dim mPlayKuan As Long, mPlayGao As Long
' 运动小窗口的相对宽度(容纳方块小构件的列数)和相对高度(容纳方块小构件的行数)Dim mPlayMovX As Long, mPlayMovY As Long
' 运动小窗口内方块移动中所处位置的左上角相对坐标
Dim mPlayX_SIZE As Long, mPlayY_SIZE As Long
' 运动小窗口内方块小构件实际宽度和高度
Dim mPlayBkColor As Long
' 运动小窗口背景色
Dim mNextX_SIZE As Long, mNextY_SIZE As Long
' 预览小窗口内方块小构件实际宽度和高度
Dim mNextBkColor As Long
' 预览小窗口背景色
Private Sub BarDef(ByVal k As Long)
'定义方块形状子程序
Dim j As Long
Dim a1 As Long, a2 As Long
Dim a3 As Long, a4 As Long