vb 俄罗斯方块设计程序及分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档