frmmain.frm
上传用户:tashmp
上传日期:2010-04-03
资源大小:882k
文件大小:31k
源码类别:

其他游戏

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Begin VB.Form frmmain 
  3.    BorderStyle     =   1  'Fixed Single
  4.    Caption         =   "俄罗斯方块"
  5.    ClientHeight    =   6570
  6.    ClientLeft      =   10110
  7.    ClientTop       =   330
  8.    ClientWidth     =   5775
  9.    Icon            =   "frmmain.frx":0000
  10.    KeyPreview      =   -1  'True
  11.    LinkTopic       =   "Form1"
  12.    MaxButton       =   0   'False
  13.    ScaleHeight     =   6570
  14.    ScaleWidth      =   5775
  15.    StartUpPosition =   2  '屏幕中心
  16.    Begin VB.Frame frascore 
  17.       Caption         =   "分数:"
  18.       Height          =   615
  19.       Left            =   3600
  20.       TabIndex        =   14
  21.       Top             =   3240
  22.       Width           =   1335
  23.       Begin VB.TextBox txtscore 
  24.          Alignment       =   1  'Right Justify
  25.          Enabled         =   0   'False
  26.          Height          =   270
  27.          Left            =   120
  28.          TabIndex        =   15
  29.          Text            =   "0"
  30.          Top             =   240
  31.          Width           =   1095
  32.       End
  33.    End
  34.    Begin VB.Frame fraoption 
  35.       Caption         =   "游戏设置:"
  36.       Height          =   1455
  37.       Left            =   3600
  38.       TabIndex        =   7
  39.       Top             =   1680
  40.       Width           =   1335
  41.       Begin VB.TextBox txthard 
  42.          Alignment       =   2  'Center
  43.          Enabled         =   0   'False
  44.          Height          =   270
  45.          Left            =   780
  46.          TabIndex        =   13
  47.          Text            =   "0"
  48.          Top             =   240
  49.          Width           =   375
  50.       End
  51.       Begin VB.TextBox txtlevel 
  52.          Alignment       =   2  'Center
  53.          Enabled         =   0   'False
  54.          Height          =   270
  55.          Left            =   480
  56.          TabIndex        =   9
  57.          Text            =   "1"
  58.          Top             =   600
  59.          Width           =   380
  60.       End
  61.       Begin VB.CommandButton cmdoption 
  62.          Caption         =   "游戏选项"
  63.          Height          =   375
  64.          Left            =   120
  65.          TabIndex        =   8
  66.          Top             =   960
  67.          Width           =   1095
  68.       End
  69.       Begin VB.Label lblhard 
  70.          Caption         =   "难度"
  71.          BeginProperty Font 
  72.             Name            =   "宋体"
  73.             Size            =   12
  74.             Charset         =   134
  75.             Weight          =   700
  76.             Underline       =   0   'False
  77.             Italic          =   0   'False
  78.             Strikethrough   =   0   'False
  79.          EndProperty
  80.          Height          =   255
  81.          Left            =   240
  82.          TabIndex        =   12
  83.          Top             =   240
  84.          Width           =   615
  85.       End
  86.       Begin VB.Label lbldi 
  87.          Alignment       =   2  'Center
  88.          Caption         =   "第"
  89.          BeginProperty Font 
  90.             Name            =   "宋体"
  91.             Size            =   12
  92.             Charset         =   134
  93.             Weight          =   700
  94.             Underline       =   0   'False
  95.             Italic          =   0   'False
  96.             Strikethrough   =   0   'False
  97.          EndProperty
  98.          Height          =   255
  99.          Left            =   240
  100.          TabIndex        =   11
  101.          Top             =   600
  102.          Width           =   255
  103.       End
  104.       Begin VB.Label lblguan 
  105.          Alignment       =   2  'Center
  106.          Caption         =   "关"
  107.          BeginProperty Font 
  108.             Name            =   "宋体"
  109.             Size            =   12
  110.             Charset         =   134
  111.             Weight          =   700
  112.             Underline       =   0   'False
  113.             Italic          =   0   'False
  114.             Strikethrough   =   0   'False
  115.          EndProperty
  116.          Height          =   255
  117.          Left            =   900
  118.          TabIndex        =   10
  119.          Top             =   600
  120.          Width           =   255
  121.       End
  122.    End
  123.    Begin VB.CommandButton cmdabout 
  124.       Caption         =   "关于游戏"
  125.       Height          =   375
  126.       Left            =   3600
  127.       TabIndex        =   6
  128.       Top             =   3960
  129.       Width           =   1335
  130.    End
  131.    Begin VB.CommandButton cmdpause 
  132.       Caption         =   "暂停"
  133.       Enabled         =   0   'False
  134.       Height          =   375
  135.       Left            =   3600
  136.       TabIndex        =   5
  137.       Top             =   5400
  138.       Width           =   1335
  139.    End
  140.    Begin VB.CommandButton cmdstart 
  141.       Caption         =   "开始"
  142.       Height          =   375
  143.       Left            =   3600
  144.       TabIndex        =   0
  145.       Top             =   5880
  146.       Width           =   1335
  147.    End
  148.    Begin VB.PictureBox picnext 
  149.       Enabled         =   0   'False
  150.       Height          =   1260
  151.       Left            =   3600
  152.       ScaleHeight     =   4
  153.       ScaleMode       =   0  'User
  154.       ScaleWidth      =   4
  155.       TabIndex        =   3
  156.       Top             =   240
  157.       Width           =   1260
  158.       Begin VB.CommandButton cmdfangnext 
  159.          Height          =   300
  160.          Index           =   0
  161.          Left            =   0
  162.          TabIndex        =   4
  163.          Top             =   0
  164.          Width           =   300
  165.       End
  166.    End
  167.    Begin VB.PictureBox picmain 
  168.       Height          =   6060
  169.       Left            =   240
  170.       Picture         =   "frmmain.frx":08CA
  171.       ScaleHeight     =   20
  172.       ScaleMode       =   0  'User
  173.       ScaleWidth      =   10
  174.       TabIndex        =   1
  175.       Top             =   240
  176.       Width           =   3060
  177.       Begin VB.CommandButton cmdfang 
  178.          Height          =   300
  179.          Index           =   0
  180.          Left            =   0
  181.          TabIndex        =   2
  182.          Top             =   0
  183.          Width           =   300
  184.       End
  185.    End
  186.    Begin VB.Timer tmrmain 
  187.       Enabled         =   0   'False
  188.       Interval        =   1000
  189.       Left            =   5160
  190.       Top             =   5040
  191.    End
  192.    Begin VB.Image Image1 
  193.       Height          =   1005
  194.       Left            =   3750
  195.       Picture         =   "frmmain.frx":E8B5
  196.       Top             =   4380
  197.       Width           =   1020
  198.    End
  199. End
  200. Attribute VB_Name = "frmmain"
  201. Attribute VB_GlobalNameSpace = False
  202. Attribute VB_Creatable = False
  203. Attribute VB_PredeclaredId = True
  204. Attribute VB_Exposed = False
  205. Private n(3), m(3) As Integer                                         'n(3)记录游戏区的四个活动方块的编号
  206.                                                                       'm(3)记录预览区的四个活动方块的编号
  207. Private situation, situation2, linenum, t As Integer                  'situation记录游戏区的方块样式
  208.                                                                       'situation2记录预览区的方块样式
  209.                                                                       'linenum记录一次消除的行数
  210.                                                                       
  211. Private Sub hidefang(a As Integer)                                    '定义使方块不可见的过程
  212.     Select Case a
  213.     Case 0                                                            'a=0使游戏区方块不可见
  214.         cmdfang(n(0)).Visible = False
  215.         cmdfang(n(1)).Visible = False
  216.         cmdfang(n(2)).Visible = False
  217.         cmdfang(n(3)).Visible = False
  218.     Case 1                                                            'a=1使预览区方块不可见
  219.         cmdfangnext(m(0)).Visible = False
  220.         cmdfangnext(m(1)).Visible = False
  221.         cmdfangnext(m(2)).Visible = False
  222.         cmdfangnext(m(3)).Visible = False
  223.     End Select
  224. End Sub
  225. Private Sub showfang(a As Integer)                                    '定义使方块可见的过程
  226.     Select Case a
  227.     Case 0                                                            'a=0使游戏区方块可见
  228.         cmdfang(n(0)).Visible = True
  229.         cmdfang(n(1)).Visible = True
  230.         cmdfang(n(2)).Visible = True
  231.         cmdfang(n(3)).Visible = True
  232.     Case 1                                                            'a=1使预览区方块不可见
  233.         cmdfangnext(m(0)).Visible = True
  234.         cmdfangnext(m(1)).Visible = True
  235.         cmdfangnext(m(2)).Visible = True
  236.         cmdfangnext(m(3)).Visible = True
  237.     End Select
  238. End Sub
  239. Private Sub clearline()                                               '定义消除整行的过程
  240.     For i = 190 To 10 Step -10
  241.         If cmdfang(i).Visible = True And _
  242.            cmdfang(i + 1).Visible = True And _
  243.            cmdfang(i + 2).Visible = True And _
  244.            cmdfang(i + 3).Visible = True And _
  245.            cmdfang(i + 4).Visible = True And _
  246.            cmdfang(i + 5).Visible = True And _
  247.            cmdfang(i + 6).Visible = True And _
  248.            cmdfang(i + 7).Visible = True And _
  249.            cmdfang(i + 8).Visible = True And _
  250.            cmdfang(i + 9).Visible = True Then
  251.             For j = i + 4 To i Step -1
  252.                 t = 1
  253.                 cmdfang(j).Visible = False
  254.                 cmdfang(2 * i + 9 - j).Visible = False
  255.                 For k = 1 To 4000
  256.                     DoEvents
  257.                 Next
  258.                 t = 0
  259.             Next
  260.             linenum = linenum + 1
  261.             For j = i - 1 To 0 Step -1
  262.                 If cmdfang(j).Visible = True Then
  263.                     cmdfang(j).Visible = False
  264.                     cmdfang(j + 10).Visible = True
  265.                 End If
  266.             Next
  267.             clearline                                                  '为了实现连消数行,这里使用递归调用
  268.         End If
  269.     Next
  270. End Sub
  271. Private Function downable() As Boolean                                '自定义函数,确定方块是否能下降
  272.     If n(0) < 190 And n(1) < 190 And n(2) < 190 And n(3) < 190 Then
  273.         If cmdfang(n(0) + 10).Visible = False And _
  274.            cmdfang(n(1) + 10).Visible = False And _
  275.            cmdfang(n(2) + 10).Visible = False And _
  276.            cmdfang(n(3) + 10).Visible = False Then
  277.             downable = True
  278.         Else
  279.             downable = False
  280.         End If
  281.     Else
  282.         downable = False
  283.     End If
  284. End Function
  285. Private Function leftable() As Boolean                                 '自定义函数,确定方块是否能左移
  286.     If n(0) Mod 10 <> 0 And n(1) Mod 10 <> 0 And n(2) Mod 10 <> 0 And n(3) Mod 10 <> 0 Then
  287.         If cmdfang(n(0) - 1).Visible = False And _
  288.            cmdfang(n(1) - 1).Visible = False And _
  289.            cmdfang(n(2) - 1).Visible = False And _
  290.            cmdfang(n(3) - 1).Visible = False Then
  291.             leftable = True
  292.         Else
  293.             leftable = False
  294.         End If
  295.     Else
  296.         leftable = False
  297.     End If
  298. End Function
  299. Private Function rightable() As Boolean                                 '自定义函数,确定方块是否能右移
  300.     If n(0) Mod 10 <> 9 And n(1) Mod 10 <> 9 And n(2) Mod 10 <> 9 And n(3) Mod 10 <> 9 Then
  301.         If cmdfang(n(0) + 1).Visible = False And _
  302.            cmdfang(n(1) + 1).Visible = False And _
  303.            cmdfang(n(2) + 1).Visible = False And _
  304.            cmdfang(n(3) + 1).Visible = False Then
  305.             rightable = True
  306.         Else
  307.             rightable = False
  308.         End If
  309.     Else
  310.         rightable = False
  311.     End If
  312. End Function
  313. Private Sub loadfangkuai()                                            '定义随机产生一种方块的过程
  314.     Select Case Int(Rnd * 6)
  315.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  316.     Case 0                                                            '这是长条型方块
  317.         Select Case Int(Rnd * 2)
  318.         Case 0
  319.             m(0) = 3
  320.             m(1) = 4
  321.             m(2) = 5
  322.             m(3) = 6
  323.             situation2 = 0
  324.         Case 1
  325.             m(0) = 5
  326.             m(1) = 15
  327.             m(2) = 25
  328.             m(3) = 35
  329.             situation2 = 1
  330.         End Select
  331.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  332.     Case 1                                                            '这是正方形方块
  333.             m(0) = 4
  334.             m(1) = 5
  335.             m(2) = 14
  336.             m(3) = 15
  337.             situation2 = 2
  338.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  339.     Case 2                                                            '这是正S型方块
  340.         Select Case Int(Rnd * 2)
  341.         Case 0
  342.             m(0) = 6
  343.             m(1) = 5
  344.             m(2) = 15
  345.             m(3) = 14
  346.             situation2 = 3
  347.         Case 1
  348.             m(0) = 4
  349.             m(1) = 14
  350.             m(2) = 15
  351.             m(3) = 25
  352.             situation2 = 4
  353.         End Select
  354.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  355.     Case 3                                                            '这是反S型方块
  356.         Select Case Int(Rnd * 2)
  357.         Case 0
  358.             m(0) = 4
  359.             m(1) = 5
  360.             m(2) = 15
  361.             m(3) = 16
  362.             situation2 = 5
  363.         Case 1
  364.             m(0) = 5
  365.             m(1) = 15
  366.             m(2) = 14
  367.             m(3) = 24
  368.             situation2 = 6
  369.         End Select
  370.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  371.     Case 4                                                             '这是T型方块
  372.         Select Case Int(Rnd * 4)
  373.         Case 0
  374.             m(0) = 4
  375.             m(1) = 5
  376.             m(2) = 6
  377.             m(3) = 15
  378.             situation2 = 7
  379.         Case 1
  380.             m(0) = 5
  381.             m(1) = 15
  382.             m(2) = 25
  383.             m(3) = 14
  384.             situation2 = 8
  385.         Case 2
  386.             m(0) = 16
  387.             m(1) = 15
  388.             m(2) = 14
  389.             m(3) = 5
  390.             situation2 = 9
  391.         Case 3
  392.             m(0) = 24
  393.             m(1) = 14
  394.             m(2) = 4
  395.             m(3) = 15
  396.             situation2 = 10
  397.         End Select
  398.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  399.     Case 5                                                            '这是正7字型方块
  400.         Select Case Int(Rnd * 4)
  401.         Case 0
  402.             m(0) = 4
  403.             m(1) = 5
  404.             m(2) = 15
  405.             m(3) = 25
  406.             situation2 = 11
  407.         Case 1
  408.             m(0) = 5
  409.             m(1) = 15
  410.             m(2) = 14
  411.             m(3) = 13
  412.             situation2 = 12
  413.         Case 2
  414.             m(0) = 25
  415.             m(1) = 24
  416.             m(2) = 14
  417.             m(3) = 4
  418.             situation2 = 13
  419.         Case 3
  420.             m(0) = 14
  421.             m(1) = 4
  422.             m(2) = 5
  423.             m(3) = 6
  424.             situation2 = 14
  425.         End Select
  426.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  427.     Case 6                                                            '这是反7字型方块
  428.         Select Case Int(Rnd * 4)
  429.         Case 0
  430.             m(0) = 5
  431.             m(1) = 4
  432.             m(2) = 14
  433.             m(3) = 24
  434.             situation2 = 15
  435.         Case 1
  436.             m(0) = 15
  437.             m(1) = 5
  438.             m(2) = 4
  439.             m(3) = 3
  440.             situation2 = 16
  441.         Case 2
  442.             m(0) = 24
  443.             m(1) = 25
  444.             m(2) = 15
  445.             m(3) = 5
  446.             situation2 = 17
  447.         Case 3
  448.             m(0) = 4
  449.             m(1) = 14
  450.             m(2) = 15
  451.             m(3) = 16
  452.             situation2 = 18
  453.         End Select
  454.     End Select
  455. End Sub
  456. Private Sub zhuan()                                                   '定义使方块旋转的过程
  457.     Select Case situation
  458.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  459.     Case 0                                                            '这是长条型方块
  460.         If n(0) - 18 >= 2 And n(3) + 9 <= 198 Then
  461.             If cmdfang(n(0) - 18).Visible = False And _
  462.                cmdfang(n(1) - 9).Visible = False And _
  463.                cmdfang(n(3) + 9).Visible = False Then
  464.                 hidefang 0
  465.                 n(0) = n(0) - 18
  466.                 n(1) = n(1) - 9
  467.                 n(3) = n(3) + 9
  468.                 showfang 0
  469.                 situation = 1
  470.             End If
  471.         End If
  472.     Case 1
  473.         If (n(0) + 18) Mod 10 < 8 And (n(3) - 9) Mod 10 > 0 Then
  474.             If cmdfang(n(0) + 18).Visible = False And _
  475.                cmdfang(n(1) + 9).Visible = False And _
  476.                cmdfang(n(3) - 9).Visible = False Then
  477.                 hidefang 0
  478.                 n(0) = n(0) + 18
  479.                 n(1) = n(1) + 9
  480.                 n(3) = n(3) - 9
  481.                 showfang 0
  482.                 situation = 0
  483.             End If
  484.         End If
  485.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  486.     Case 2                                                             '这是正方形方块
  487.     
  488.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  489.     Case 3                                                             '这是正S型方块
  490.         If n(0) - 11 > 1 Then
  491.             If cmdfang(n(0) - 11).Visible = False And _
  492.                cmdfang(n(3) + 2).Visible = False Then
  493.                 hidefang 0
  494.                 n(0) = n(0) - 11
  495.                 n(2) = n(2) - 9
  496.                 n(3) = n(3) + 2
  497.                 showfang 0
  498.                 situation = 4
  499.             End If
  500.         End If
  501.     Case 4
  502.         If (n(3) - 2) Mod 10 < 9 Then
  503.             If cmdfang(n(2) + 9).Visible = False And _
  504.                cmdfang(n(3) - 2).Visible = False Then
  505.                 hidefang 0
  506.                 n(0) = n(0) + 11
  507.                 n(2) = n(2) + 9
  508.                 n(3) = n(3) - 2
  509.                 showfang 0
  510.                 situation = 3
  511.             End If
  512.         End If
  513.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  514.     Case 5                                                              '这是反S型方块
  515.         If n(0) - 9 > 1 Then
  516.             If cmdfang(n(0) - 9).Visible = False And _
  517.                cmdfang(n(3) - 2).Visible = False Then
  518.                 hidefang 0
  519.                 n(0) = n(0) - 9
  520.                 n(2) = n(2) - 11
  521.                 n(3) = n(3) - 2
  522.                 showfang 0
  523.                 situation = 6
  524.             End If
  525.         End If
  526.     Case 6
  527.         If (n(3) + 2) Mod 10 > 0 Then
  528.             If cmdfang(n(2) + 11).Visible = False And _
  529.                cmdfang(n(3) + 2).Visible = False Then
  530.                 hidefang 0
  531.                 n(0) = n(0) + 9
  532.                 n(2) = n(2) + 11
  533.                 n(3) = n(3) + 2
  534.                 showfang 0
  535.                 situation = 5
  536.             End If
  537.         End If
  538.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  539.     Case 7                                                               '这是T型方块
  540.         If n(0) - 9 > 0 Then
  541.             If cmdfang(n(0) - 9).Visible = False Then
  542.                 hidefang 0
  543.                 n(0) = n(0) - 9
  544.                 n(2) = n(2) + 9
  545.                 n(3) = n(3) - 11
  546.                 showfang 0
  547.                 situation = 8
  548.             End If
  549.         End If
  550.     Case 8
  551.         If (n(0) + 11) Mod 10 > 0 Then
  552.             If cmdfang(n(0) + 11).Visible = False Then
  553.                 hidefang 0
  554.                 n(0) = n(0) + 11
  555.                 n(2) = n(2) - 11
  556.                 n(3) = n(3) - 9
  557.                 showfang 0
  558.                 situation = 9
  559.             End If
  560.         End If
  561.     Case 9
  562.         If n(0) + 9 < 199 Then
  563.             If cmdfang(n(0) + 9).Visible = False Then
  564.                 hidefang 0
  565.                 n(0) = n(0) + 9
  566.                 n(2) = n(2) - 9
  567.                 n(3) = n(3) + 11
  568.                 showfang 0
  569.                 situation = 10
  570.             End If
  571.         End If
  572.     Case 10
  573.         If (n(0) - 11) Mod 10 < 9 Then
  574.             If cmdfang(n(0) - 11).Visible = False Then
  575.                 hidefang 0
  576.                 n(0) = n(0) - 11
  577.                 n(2) = n(2) + 11
  578.                 n(3) = n(3) + 9
  579.                 showfang 0
  580.                 situation = 7
  581.             End If
  582.         End If
  583.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  584.     Case 11                                                              '这是正7字型方块
  585.         If n(0) - 9 > 1 And (n(3) - 22) Mod 10 < 9 Then
  586.             If cmdfang(n(0) - 9).Visible = False And _
  587.                cmdfang(n(3) - 22).Visible = False Then
  588.                 hidefang 0
  589.                 n(0) = n(0) - 9
  590.                 n(2) = n(2) - 11
  591.                 n(3) = n(3) - 22
  592.                 showfang 0
  593.                 situation = 12
  594.             End If
  595.         End If
  596.     Case 12
  597.         If (n(0) + 11) Mod 10 > 0 And n(3) - 18 > 1 Then
  598.             If cmdfang(n(0) + 11).Visible = False And _
  599.                cmdfang(n(3) - 18).Visible = False Then
  600.                 hidefang 0
  601.                 n(0) = n(0) + 11
  602.                 n(2) = n(2) - 9
  603.                 n(3) = n(3) - 18
  604.                 showfang 0
  605.                 situation = 13
  606.             End If
  607.         End If
  608.     Case 13
  609.         If n(0) + 9 < 198 And (n(3) + 22) Mod 10 > 0 Then
  610.             If cmdfang(n(0) + 9).Visible = False And _
  611.                cmdfang(n(3) + 22).Visible = False Then
  612.                 hidefang 0
  613.                 n(0) = n(0) + 9
  614.                 n(2) = n(2) + 11
  615.                 n(3) = n(3) + 22
  616.                 showfang 0
  617.                 situation = 14
  618.             End If
  619.         End If
  620.     Case 14
  621.         If (n(0) - 11) Mod 10 < 9 And n(3) + 18 < 198 Then
  622.             If cmdfang(n(0) - 11).Visible = False And _
  623.                cmdfang(n(3) + 18).Visible = False Then
  624.                 hidefang 0
  625.                 n(0) = n(0) - 11
  626.                 n(2) = n(2) + 9
  627.                 n(3) = n(3) + 18
  628.                 showfang 0
  629.                 situation = 11
  630.             End If
  631.         End If
  632.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  633.     Case 15                                                              '这是反7字型方块
  634.         If (n(3) - 22) Mod 10 < 8 Then
  635.             If cmdfang(n(2) - 11).Visible = False And _
  636.                cmdfang(n(3) - 22).Visible = False Then
  637.                 hidefang 0
  638.                 n(0) = n(0) + 9
  639.                 n(2) = n(2) - 11
  640.                 n(3) = n(3) - 22
  641.                 showfang 0
  642.                 situation = 16
  643.             End If
  644.         End If
  645.     Case 16
  646.         If n(3) - 18 > 1 Then
  647.             If cmdfang(n(2) - 9).Visible = False And _
  648.                cmdfang(n(3) - 18).Visible = False Then
  649.                 hidefang 0
  650.                 n(0) = n(0) - 11
  651.                 n(2) = n(2) - 9
  652.                 n(3) = n(3) - 18
  653.                 showfang 0
  654.                 situation = 17
  655.             End If
  656.         End If
  657.     Case 17
  658.         If (n(3) + 22) Mod 10 > 1 Then
  659.             If cmdfang(n(2) + 11).Visible = False And _
  660.                cmdfang(n(3) + 22).Visible = False Then
  661.                 hidefang 0
  662.                 n(0) = n(0) - 9
  663.                 n(2) = n(2) + 11
  664.                 n(3) = n(3) + 22
  665.                 showfang 0
  666.                 situation = 18
  667.             End If
  668.         End If
  669.     Case 18
  670.         If n(3) + 18 < 198 Then
  671.             If cmdfang(n(2) + 9).Visible = False And _
  672.                cmdfang(n(3) + 18).Visible = False Then
  673.                 hidefang 0
  674.                 n(0) = n(0) + 11
  675.                 n(2) = n(2) + 9
  676.                 n(3) = n(3) + 18
  677.                 showfang 0
  678.                 situation = 15
  679.             End If
  680.         End If
  681.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  682.     End Select
  683. End Sub
  684. Private Sub cmdoption_Click()
  685.     frmoption.Show
  686. End Sub
  687. Private Sub cmdpause_Click()                                             '编写暂定按钮的代码
  688.     Select Case cmdpause.Caption
  689.     Case "暂停"
  690.         cmdpause.Caption = "继续"
  691.         tmrmain.Enabled = False
  692.         cmdabout.Enabled = True
  693.     Case "继续"
  694.         cmdpause.Caption = "暂停"
  695.         tmrmain.Enabled = True
  696.         cmdabout.Enabled = False
  697.         picmain.SetFocus
  698.     End Select
  699. End Sub
  700. Private Sub cmdstart_Click()
  701.     If cmdstart.Caption = "开始" Then
  702.         picmain.SetFocus
  703.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  704.         tmrmain.Interval = 1000 / Val(txtlevel.Text)                     '根据关卡系数设置方块下降速度
  705.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  706.         For i = 19 To 20 - Val(txthard.Text) Step -1                     '根据难度系数产生不同难度的地基
  707.             For j = i * 10 To i * 10 + 9
  708.                 If Rnd >= 0.5 Then cmdfang(j).Visible = True
  709.             Next
  710.         Next
  711.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  712.         For i = 0 To 3                                                   '引用预览区已经产生的方块
  713.             n(i) = m(i)
  714.         Next
  715.         showfang 0
  716.         situation = situation2
  717.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  718.         tmrmain.Enabled = True                                           '设置一些控件的可用性
  719.         cmdpause.Enabled = True
  720.         cmdoption.Enabled = False
  721.         cmdabout.Enabled = False
  722.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  723.         hidefang 1                                                       '清空预览区
  724.         loadfangkuai                                                     '继续在预览区产生方块
  725.         showfang 1
  726.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  727.         cmdstart.Caption = "结束"
  728.     Else
  729.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  730.         tmrmain.Enabled = False                                          '设置一些控件的可用性
  731.         cmdpause.Enabled = False
  732.         cmdoption.Enabled = True
  733.         cmdabout.Enabled = True
  734.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  735.         For i = 1 To 199
  736.             cmdfang(i).Visible = False
  737.         Next
  738.         cmdstart.Caption = "开始"
  739.         txtscore.Text = "0"
  740.         linenum = 0
  741.     End If
  742. End Sub
  743. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  744.     If t = 0 Then
  745.     hidefang 0
  746.     Select Case KeyCode
  747.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  748.     Case vbKeyLeft                                                       '点击向左键
  749.         If leftable() = True Then
  750.             For j = 0 To 3
  751.                 cmdfang(n(j) - 1).Visible = True
  752.                 n(j) = n(j) - 1
  753.             Next j
  754.         End If
  755.         showfang 0
  756.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  757.     Case vbKeyDown                                                       '点击向下键
  758.         If downable() = True Then
  759.             For j = 0 To 3
  760.                 cmdfang(n(j) + 10).Visible = True
  761.                 n(j) = n(j) + 10
  762.             Next j
  763.         End If
  764.         showfang 0
  765.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  766.     Case vbKeyRight                                                      '点击向右键
  767.         If rightable() = True Then
  768.             For j = 0 To 3
  769.                 cmdfang(n(j) + 1).Visible = True
  770.                 n(j) = n(j) + 1
  771.             Next j
  772.         End If
  773.         showfang 0
  774.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  775.     Case vbKeyReturn                                                     '点击旋转键(回车键)
  776.         showfang 0
  777.         zhuan
  778.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  779.     Case Else
  780.         showfang 0
  781.     End Select
  782.     End If
  783. End Sub
  784. Private Sub Form_Load()
  785.     Randomize                                                            '非正序的随机数
  786.     For i = 1 To 199                                                     '创建游戏区的方块
  787.         Load cmdfang(i)
  788.     Next i
  789.     For i = 0 To 199                                                     '在游戏区以10×20排列方块
  790.         cmdfang(i).Left = (i Mod 10)
  791.         cmdfang(i).Top = i  10
  792.         cmdfang(i).Visible = False
  793.     Next i
  794.     For i = 1 To 39                                                      '创建预览区的方块
  795.         Load cmdfangnext(i)
  796.     Next i
  797.     For i = 0 To 39                                                      '在预览区排列方块
  798.         cmdfangnext(i).Left = (i Mod 10) - 3
  799.         cmdfangnext(i).Top = i  10
  800.         cmdfangnext(i).Visible = False
  801.     Next i
  802.     loadfangkuai                                                         '在预览区产生第一个方块
  803.     showfang 1
  804. End Sub
  805. Private Sub tmrmain_Timer()                                              '使方块下降的Timer
  806.     hidefang 0
  807.     If downable() = True Then                                            '能够下降
  808.         For j = 0 To 3
  809.             n(j) = n(j) + 10
  810.         Next j
  811.         showfang 0
  812.     Else                                                                 '不能继续下降了
  813.         showfang 0
  814.         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  815.         clearline                                                        '引用自定义方法,判断是否消除满行
  816.         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  817.         For i = 0 To 9                                                   '如果方块叠至最上层,游戏结束
  818.             If cmdfang(i).Visible = True Then Exit For
  819.         Next
  820.         If i < 10 Then cmdstart_Click: Exit Sub
  821.         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  822.         For i = 0 To 3                                                   '引用预览区已经产生的方块
  823.             n(i) = m(i)
  824.         Next
  825.         showfang 0
  826.         situation = situation2
  827.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  828.         txtscore.Text = Str(Val(txtscore.Text) + 100 * (2 ^ linenum - 1)) '这段代码控制加分
  829.         
  830.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  831.                                                                          '这段代码控制过关升级
  832.         If Val(Right(txtscore.Text, 4)) < Val(Right(Str(Val(txtscore.Text) - 100 * (2 ^ linenum - 1)), 4)) Then
  833.             txtlevel.Text = Str(Val(txtlevel.Text) + 1)
  834.             tmrmain.Interval = 1000 / Val(txtlevel.Text)
  835.         End If
  836.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  837.         linenum = 0
  838.         hidefang 1                                                       '清空预览区
  839.         loadfangkuai                                                     '继续在预览区产生方块
  840.         showfang 1
  841.     End If
  842. End Sub