frmmain.frm
上传用户:wuyi06
上传日期:2015-04-09
资源大小:1872k
文件大小:37k
源码类别:

压缩解压

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Begin VB.Form frmmain 
  3.    BackColor       =   &H00000000&
  4.    BorderStyle     =   1  'Fixed Single
  5.    Caption         =   "俄罗斯方块"
  6.    ClientHeight    =   6390
  7.    ClientLeft      =   3195
  8.    ClientTop       =   1140
  9.    ClientWidth     =   5205
  10.    Icon            =   "frmmain.frx":0000
  11.    KeyPreview      =   -1  'True
  12.    LinkTopic       =   "Form1"
  13.    MaxButton       =   0   'False
  14.    Picture         =   "frmmain.frx":08CA
  15.    ScaleHeight     =   6390
  16.    ScaleWidth      =   5205
  17.    Begin VB.Timer Timer4 
  18.       Interval        =   100
  19.       Left            =   1800
  20.       Top             =   5880
  21.    End
  22.    Begin VB.Timer tmrmain 
  23.       Enabled         =   0   'False
  24.       Interval        =   1000
  25.       Left            =   840
  26.       Top             =   5880
  27.    End
  28.    Begin VB.Timer Timer2 
  29.       Interval        =   300
  30.       Left            =   1320
  31.       Top             =   5880
  32.    End
  33.    Begin VB.Timer Timer1 
  34.       Left            =   360
  35.       Top             =   5880
  36.    End
  37.    Begin VB.Frame fraoption 
  38.       BackColor       =   &H00000000&
  39.       Caption         =   "游戏设置:"
  40.       ForeColor       =   &H000000FF&
  41.       Height          =   1335
  42.       Left            =   3480
  43.       TabIndex        =   4
  44.       Top             =   1680
  45.       Width           =   1335
  46.       Begin VB.TextBox txtscore 
  47.          Alignment       =   1  'Right Justify
  48.          Enabled         =   0   'False
  49.          ForeColor       =   &H00C00000&
  50.          Height          =   270
  51.          Left            =   600
  52.          TabIndex        =   10
  53.          Text            =   "0"
  54.          Top             =   960
  55.          Width           =   615
  56.       End
  57.       Begin VB.TextBox txthard 
  58.          Alignment       =   2  'Center
  59.          Enabled         =   0   'False
  60.          ForeColor       =   &H00FF0000&
  61.          Height          =   270
  62.          Left            =   780
  63.          TabIndex        =   9
  64.          Text            =   "0"
  65.          Top             =   240
  66.          Width           =   435
  67.       End
  68.       Begin VB.TextBox txtlevel 
  69.          Alignment       =   2  'Center
  70.          Enabled         =   0   'False
  71.          ForeColor       =   &H00FF0000&
  72.          Height          =   270
  73.          Left            =   480
  74.          TabIndex        =   5
  75.          Text            =   "1"
  76.          Top             =   600
  77.          Width           =   380
  78.       End
  79.       Begin VB.Label Label1 
  80.          BackColor       =   &H00000000&
  81.          Caption         =   "得分"
  82.          BeginProperty Font 
  83.             Name            =   "宋体"
  84.             Size            =   9
  85.             Charset         =   134
  86.             Weight          =   700
  87.             Underline       =   0   'False
  88.             Italic          =   0   'False
  89.             Strikethrough   =   0   'False
  90.          EndProperty
  91.          ForeColor       =   &H0000FFFF&
  92.          Height          =   255
  93.          Left            =   120
  94.          TabIndex        =   11
  95.          Top             =   1005
  96.          Width           =   495
  97.       End
  98.       Begin VB.Label lblhard 
  99.          BackColor       =   &H00000000&
  100.          Caption         =   "难度"
  101.          BeginProperty Font 
  102.             Name            =   "宋体"
  103.             Size            =   12
  104.             Charset         =   134
  105.             Weight          =   700
  106.             Underline       =   0   'False
  107.             Italic          =   0   'False
  108.             Strikethrough   =   0   'False
  109.          EndProperty
  110.          ForeColor       =   &H0000FFFF&
  111.          Height          =   255
  112.          Left            =   120
  113.          TabIndex        =   8
  114.          Top             =   240
  115.          Width           =   615
  116.       End
  117.       Begin VB.Label lbldi 
  118.          Alignment       =   2  'Center
  119.          BackColor       =   &H00000000&
  120.          Caption         =   "第"
  121.          BeginProperty Font 
  122.             Name            =   "宋体"
  123.             Size            =   12
  124.             Charset         =   134
  125.             Weight          =   700
  126.             Underline       =   0   'False
  127.             Italic          =   0   'False
  128.             Strikethrough   =   0   'False
  129.          EndProperty
  130.          ForeColor       =   &H0000FFFF&
  131.          Height          =   255
  132.          Left            =   120
  133.          TabIndex        =   7
  134.          Top             =   600
  135.          Width           =   255
  136.       End
  137.       Begin VB.Label lblguan 
  138.          Alignment       =   2  'Center
  139.          BackColor       =   &H00000000&
  140.          Caption         =   "关"
  141.          BeginProperty Font 
  142.             Name            =   "宋体"
  143.             Size            =   12
  144.             Charset         =   134
  145.             Weight          =   700
  146.             Underline       =   0   'False
  147.             Italic          =   0   'False
  148.             Strikethrough   =   0   'False
  149.          EndProperty
  150.          ForeColor       =   &H0000FFFF&
  151.          Height          =   255
  152.          Left            =   960
  153.          TabIndex        =   6
  154.          Top             =   600
  155.          Width           =   255
  156.       End
  157.    End
  158.    Begin VB.PictureBox picnext 
  159.       BackColor       =   &H00000000&
  160.       BorderStyle     =   0  'None
  161.       Enabled         =   0   'False
  162.       Height          =   1140
  163.       Left            =   3480
  164.       ScaleHeight     =   3.8
  165.       ScaleMode       =   0  'User
  166.       ScaleWidth      =   3.8
  167.       TabIndex        =   2
  168.       Top             =   360
  169.       Width           =   1140
  170.       Begin VB.CommandButton cmdfangnext 
  171.          Height          =   300
  172.          Index           =   0
  173.          Left            =   0
  174.          Picture         =   "frmmain.frx":43E5C
  175.          Style           =   1  'Graphical
  176.          TabIndex        =   3
  177.          Top             =   0
  178.          Width           =   300
  179.       End
  180.    End
  181.    Begin VB.PictureBox picmain 
  182.       Height          =   6060
  183.       Left            =   240
  184.       Picture         =   "frmmain.frx":47103
  185.       ScaleHeight     =   20
  186.       ScaleMode       =   0  'User
  187.       ScaleWidth      =   10
  188.       TabIndex        =   0
  189.       Top             =   120
  190.       Width           =   3060
  191.       Begin VB.CommandButton cmdfang 
  192.          Height          =   300
  193.          Index           =   0
  194.          Left            =   0
  195.          Picture         =   "frmmain.frx":4F81C
  196.          Style           =   1  'Graphical
  197.          TabIndex        =   1
  198.          Top             =   0
  199.          Width           =   300
  200.       End
  201.    End
  202.    Begin VB.Label Label2 
  203.       BackColor       =   &H00000000&
  204.       Caption         =   "   游戏忠告:    适度游戏益脑,   沉迷游戏伤身,   合理安排时间,   享受健康生活."
  205.       DragIcon        =   "frmmain.frx":52AE7
  206.       BeginProperty Font 
  207.          Name            =   "华文中宋"
  208.          Size            =   10.5
  209.          Charset         =   134
  210.          Weight          =   700
  211.          Underline       =   0   'False
  212.          Italic          =   0   'False
  213.          Strikethrough   =   0   'False
  214.       EndProperty
  215.       ForeColor       =   &H00FFFF00&
  216.       Height          =   1455
  217.       Left            =   3360
  218.       TabIndex        =   12
  219.       Top             =   3960
  220.       Width           =   1575
  221.    End
  222.    Begin VB.Image snow 
  223.       Height          =   375
  224.       Index           =   0
  225.       Left            =   4560
  226.       Top             =   5400
  227.       Width           =   375
  228.    End
  229.    Begin VB.Menu files 
  230.       Caption         =   "文件(&F)"
  231.       Begin VB.Menu start 
  232.          Caption         =   "开始"
  233.          Shortcut        =   {F1}
  234.       End
  235.       Begin VB.Menu go 
  236.          Caption         =   "继续"
  237.          Enabled         =   0   'False
  238.          Shortcut        =   {F2}
  239.       End
  240.       Begin VB.Menu stop1 
  241.          Caption         =   "暂停"
  242.          Enabled         =   0   'False
  243.          Shortcut        =   {F3}
  244.       End
  245.       Begin VB.Menu heng 
  246.          Caption         =   "-"
  247.       End
  248.       Begin VB.Menu exit 
  249.          Caption         =   "退出"
  250.          Shortcut        =   ^Q
  251.       End
  252.    End
  253.    Begin VB.Menu set 
  254.       Caption         =   "设置(&S)"
  255.       Begin VB.Menu grade 
  256.          Caption         =   "游戏级别(高度)"
  257.          Begin VB.Menu gao 
  258.             Caption         =   "一"
  259.             Index           =   0
  260.          End
  261.          Begin VB.Menu gao 
  262.             Caption         =   "二"
  263.             Index           =   1
  264.          End
  265.          Begin VB.Menu gao 
  266.             Caption         =   "三"
  267.             Index           =   2
  268.          End
  269.          Begin VB.Menu gao 
  270.             Caption         =   "四"
  271.             Index           =   3
  272.          End
  273.          Begin VB.Menu gao 
  274.             Caption         =   "五"
  275.             Index           =   4
  276.          End
  277.          Begin VB.Menu gao 
  278.             Caption         =   "六"
  279.             Index           =   5
  280.          End
  281.          Begin VB.Menu gao 
  282.             Caption         =   "七"
  283.             Index           =   6
  284.          End
  285.          Begin VB.Menu gao 
  286.             Caption         =   "八"
  287.             Index           =   7
  288.          End
  289.          Begin VB.Menu gao 
  290.             Caption         =   "九"
  291.             Index           =   8
  292.          End
  293.          Begin VB.Menu gao 
  294.             Caption         =   "十"
  295.             Index           =   9
  296.          End
  297.       End
  298.       Begin VB.Menu speed 
  299.          Caption         =   "游戏速度"
  300.          Begin VB.Menu fast 
  301.             Caption         =   "一"
  302.             Index           =   0
  303.          End
  304.          Begin VB.Menu fast 
  305.             Caption         =   "二"
  306.             Index           =   1
  307.          End
  308.          Begin VB.Menu fast 
  309.             Caption         =   "三"
  310.             Index           =   2
  311.          End
  312.          Begin VB.Menu fast 
  313.             Caption         =   "四"
  314.             Index           =   3
  315.          End
  316.          Begin VB.Menu fast 
  317.             Caption         =   "五"
  318.             Index           =   4
  319.          End
  320.          Begin VB.Menu fast 
  321.             Caption         =   "六"
  322.             Index           =   5
  323.          End
  324.          Begin VB.Menu fast 
  325.             Caption         =   "七"
  326.             Index           =   6
  327.          End
  328.          Begin VB.Menu fast 
  329.             Caption         =   "八"
  330.             Index           =   7
  331.          End
  332.          Begin VB.Menu fast 
  333.             Caption         =   "九"
  334.             Index           =   8
  335.          End
  336.          Begin VB.Menu fast 
  337.             Caption         =   "十"
  338.             Index           =   9
  339.          End
  340.       End
  341.    End
  342.    Begin VB.Menu kaoyan 
  343.       Caption         =   "考验(&K)"
  344.       Begin VB.Menu yincang 
  345.          Caption         =   "隐藏"
  346.          Shortcut        =   {F5}
  347.       End
  348.       Begin VB.Menu xianshi 
  349.          Caption         =   "显示"
  350.          Shortcut        =   {F6}
  351.       End
  352.    End
  353.    Begin VB.Menu help 
  354.       Caption         =   "帮助(&H)..."
  355.       Begin VB.Menu about 
  356.          Caption         =   "操作提示"
  357.          Shortcut        =   {F7}
  358.       End
  359.    End
  360. End
  361. Attribute VB_Name = "frmmain"
  362. Attribute VB_GlobalNameSpace = False
  363. Attribute VB_Creatable = False
  364. Attribute VB_PredeclaredId = True
  365. Attribute VB_Exposed = False
  366. Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
  367. Dim IsMusicOn As Boolean
  368. Dim RetValue As Long
  369. Private n(3), m(3) As Integer                                         'n(3)记录游戏区的四个活动方块的编号
  370.                                                                       'm(3)记录预览区的四个活动方块的编号
  371. Private situation, situation2, linenum, t As Integer                  'situation记录游戏区的方块样式
  372.                                                                       'situation2记录预览区的方块样式
  373.                                                                       'linenum记录一次消除的行数
  374.                                                                                                                                            
  375.  Dim no As Integer
  376.  Dim num As Integer
  377.  Dim dx(), dy(), xp(), yp(), am(), stx(), sty() As Double
  378. Private Sub hidefang(a As Integer)                                    '定义使方块不可见的过程
  379.     Select Case a
  380.     Case 0                                                            'a=0使游戏区方块不可见
  381.         cmdfang(n(0)).Visible = False
  382.         cmdfang(n(1)).Visible = False
  383.         cmdfang(n(2)).Visible = False
  384.         cmdfang(n(3)).Visible = False
  385.     Case 1                                                            'a=1使预览区方块不可见
  386.         cmdfangnext(m(0)).Visible = False
  387.         cmdfangnext(m(1)).Visible = False
  388.         cmdfangnext(m(2)).Visible = False
  389.         cmdfangnext(m(3)).Visible = False
  390.     End Select
  391. End Sub
  392. Private Sub showfang(a As Integer)                                    '定义使方块可见的过程
  393.     Select Case a
  394.     Case 0                                                            'a=0使游戏区方块可见
  395.         cmdfang(n(0)).Visible = True
  396.         cmdfang(n(1)).Visible = True
  397.         cmdfang(n(2)).Visible = True
  398.         cmdfang(n(3)).Visible = True
  399.     Case 1                                                            'a=1使预览区方块不可见
  400.         cmdfangnext(m(0)).Visible = True
  401.         cmdfangnext(m(1)).Visible = True
  402.         cmdfangnext(m(2)).Visible = True
  403.         cmdfangnext(m(3)).Visible = True
  404.     End Select
  405. End Sub
  406. Private Sub clearline()                                               '定义消除整行的过程
  407.     For i = 190 To 10 Step -10
  408.         If cmdfang(i).Visible = True And _
  409.            cmdfang(i + 1).Visible = True And _
  410.            cmdfang(i + 2).Visible = True And _
  411.            cmdfang(i + 3).Visible = True And _
  412.            cmdfang(i + 4).Visible = True And _
  413.            cmdfang(i + 5).Visible = True And _
  414.            cmdfang(i + 6).Visible = True And _
  415.            cmdfang(i + 7).Visible = True And _
  416.            cmdfang(i + 8).Visible = True And _
  417.            cmdfang(i + 9).Visible = True Then
  418.             For j = i + 4 To i Step -1
  419.                 t = 1
  420.                 cmdfang(j).Visible = False
  421.                 cmdfang(2 * i + 9 - j).Visible = False
  422.                 For k = 1 To 4000
  423.                     DoEvents
  424.                 Next
  425.                 t = 0
  426.             Next
  427.             linenum = linenum + 1
  428.             For j = i - 1 To 0 Step -1
  429.                 If cmdfang(j).Visible = True Then
  430.                     cmdfang(j).Visible = False
  431.                     cmdfang(j + 10).Visible = True
  432.                 End If
  433.             Next
  434.             clearline                                                  '为了实现连消数行,这里使用递归调用
  435.         End If
  436.     Next
  437. End Sub
  438. Private Function downable() As Boolean                                '自定义函数,确定方块是否能下降
  439.     If n(0) < 190 And n(1) < 190 And n(2) < 190 And n(3) < 190 Then
  440.         If cmdfang(n(0) + 10).Visible = False And _
  441.            cmdfang(n(1) + 10).Visible = False And _
  442.            cmdfang(n(2) + 10).Visible = False And _
  443.            cmdfang(n(3) + 10).Visible = False Then
  444.             downable = True
  445.         Else: downable = False
  446.         End If
  447.     Else: downable = False
  448.     End If
  449. End Function
  450. Private Function leftable() As Boolean                                 '自定义函数,确定方块是否能左移
  451.     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
  452.         If cmdfang(n(0) - 1).Visible = False And _
  453.            cmdfang(n(1) - 1).Visible = False And _
  454.            cmdfang(n(2) - 1).Visible = False And _
  455.            cmdfang(n(3) - 1).Visible = False Then
  456.             leftable = True
  457.         Else: leftable = False
  458.         End If
  459.     Else: leftable = False
  460.     End If
  461. End Function
  462. Private Function rightable() As Boolean                                 '自定义函数,确定方块是否能右移
  463.     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
  464.         If cmdfang(n(0) + 1).Visible = False And _
  465.            cmdfang(n(1) + 1).Visible = False And _
  466.            cmdfang(n(2) + 1).Visible = False And _
  467.            cmdfang(n(3) + 1).Visible = False Then
  468.             rightable = True
  469.         Else: rightable = False
  470.         End If
  471.     Else: rightable = False
  472.     End If
  473. End Function
  474. Private Sub loadfangkuai()                                            '定义随机产生一种方块的过程
  475.     Select Case Int(Rnd * 6)
  476.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  477.     Case 0                                                            '这是长条型方块
  478.         Select Case Int(Rnd * 2)
  479.         Case 0
  480.             m(0) = 3: m(1) = 4: m(2) = 5: m(3) = 6: situation2 = 0
  481.         Case 1
  482.             m(0) = 5: m(1) = 15: m(2) = 25: m(3) = 35: situation2 = 1
  483.         End Select
  484.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  485.     Case 1                                                            '这是正方形方块
  486.             m(0) = 4: m(1) = 5: m(2) = 14: m(3) = 15: situation2 = 2
  487.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  488.     Case 2                                                            '这是正S型方块
  489.         Select Case Int(Rnd * 2)
  490.         Case 0
  491.             m(0) = 6: m(1) = 5: m(2) = 15: m(3) = 14: situation2 = 3
  492.         Case 1
  493.             m(0) = 4: m(1) = 14: m(2) = 15: m(3) = 25: situation2 = 4
  494.         End Select
  495.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  496.     Case 3                                                            '这是反S型方块
  497.         Select Case Int(Rnd * 2)
  498.         Case 0
  499.             m(0) = 4: m(1) = 5: m(2) = 15: m(3) = 16: situation2 = 5
  500.         Case 1
  501.             m(0) = 5: m(1) = 15: m(2) = 14: m(3) = 24: situation2 = 6
  502.         End Select
  503.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  504.     Case 4                                                             '这是T型方块
  505.         Select Case Int(Rnd * 4)
  506.         Case 0
  507.             m(0) = 4: m(1) = 5: m(2) = 6: m(3) = 15: situation2 = 7
  508.         Case 1
  509.             m(0) = 5: m(1) = 15: m(2) = 25: m(3) = 14: situation2 = 8
  510.         Case 2
  511.             m(0) = 16: m(1) = 15: m(2) = 14: m(3) = 5: situation2 = 9
  512.         Case 3
  513.             m(0) = 24: m(1) = 14: m(2) = 4: m(3) = 15: situation2 = 10
  514.         End Select
  515.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  516.     Case 5                                                            '这是正7字型方块
  517.         Select Case Int(Rnd * 4)
  518.         Case 0
  519.             m(0) = 4: m(1) = 5: m(2) = 15: m(3) = 25: situation2 = 11
  520.         Case 1
  521.             m(0) = 5: m(1) = 15: m(2) = 14: m(3) = 13: situation2 = 12
  522.         Case 2
  523.             m(0) = 25: m(1) = 24: m(2) = 14: m(3) = 4: situation2 = 13
  524.         Case 3
  525.             m(0) = 14: m(1) = 4: m(2) = 5: m(3) = 6: situation2 = 14
  526.         End Select
  527.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  528.     Case 6                                                            '这是反7字型方块
  529.         Select Case Int(Rnd * 4)
  530.         Case 0
  531.             m(0) = 5: m(1) = 4: m(2) = 14: m(3) = 24: situation2 = 15
  532.         Case 1
  533.             m(0) = 15: m(1) = 5: m(2) = 4: m(3) = 3: situation2 = 16
  534.         Case 2
  535.             m(0) = 24: m(1) = 25: m(2) = 15: m(3) = 5: situation2 = 17
  536.         Case 3
  537.             m(0) = 4: m(1) = 14: m(2) = 15: m(3) = 16: situation2 = 18
  538.         End Select
  539.     End Select
  540. End Sub
  541. Private Sub zhuan()                                                   '定义使方块旋转的过程
  542.     Select Case situation
  543.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  544.     Case 0                                                            '这是长条型方块
  545.         If n(0) - 18 >= 2 And n(3) + 9 <= 198 Then                    '由横着变成竖立状态
  546.             If cmdfang(n(0) - 18).Visible = False And _
  547.                cmdfang(n(1) - 9).Visible = False And _
  548.                cmdfang(n(3) + 9).Visible = False Then
  549.                 hidefang 0
  550.                 n(0) = n(0) - 18
  551.                 n(1) = n(1) - 9
  552.                 n(3) = n(3) + 9
  553.                 showfang 0
  554.                 situation = 1
  555.             End If
  556.         End If
  557.     Case 1
  558.         If (n(0) + 18) Mod 10 < 8 And (n(3) - 9) Mod 10 > 0 Then     '由竖立变成横着状态
  559.             If cmdfang(n(0) + 18).Visible = False And _
  560.                cmdfang(n(1) + 9).Visible = False And _
  561.                cmdfang(n(3) - 9).Visible = False Then
  562.                 hidefang 0
  563.                 n(0) = n(0) + 18
  564.                 n(1) = n(1) + 9
  565.                 n(3) = n(3) - 9
  566.                 showfang 0
  567.                 situation = 0
  568.             End If
  569.         End If
  570.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  571.     Case 2                                                             '这是正方形方块
  572.     
  573.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  574.     Case 3                                                             '这是正S型方块
  575.         If n(0) - 11 > 1 Then
  576.             If cmdfang(n(0) - 11).Visible = False And _
  577.                cmdfang(n(3) + 2).Visible = False Then
  578.                 hidefang 0
  579.                 n(0) = n(0) - 11
  580.                 n(2) = n(2) - 9
  581.                 n(3) = n(3) + 2
  582.                 showfang 0
  583.                 situation = 4
  584.             End If
  585.         End If
  586.     Case 4
  587.         If (n(3) - 2) Mod 10 < 9 Then
  588.             If cmdfang(n(2) + 9).Visible = False And _
  589.                cmdfang(n(3) - 2).Visible = False Then
  590.                 hidefang 0
  591.                 n(0) = n(0) + 11
  592.                 n(2) = n(2) + 9
  593.                 n(3) = n(3) - 2
  594.                 showfang 0
  595.                 situation = 3
  596.             End If
  597.         End If
  598.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  599.     Case 5                                                              '这是反S型方块
  600.         If n(0) - 9 > 1 Then
  601.             If cmdfang(n(0) - 9).Visible = False And _
  602.                cmdfang(n(3) - 2).Visible = False Then
  603.                 hidefang 0
  604.                 n(0) = n(0) - 9
  605.                 n(2) = n(2) - 11
  606.                 n(3) = n(3) - 2
  607.                 showfang 0
  608.                 situation = 6
  609.             End If
  610.         End If
  611.     Case 6
  612.         If (n(3) + 2) Mod 10 > 0 Then
  613.             If cmdfang(n(2) + 11).Visible = False And _
  614.                cmdfang(n(3) + 2).Visible = False Then
  615.                 hidefang 0
  616.                 n(0) = n(0) + 9
  617.                 n(2) = n(2) + 11
  618.                 n(3) = n(3) + 2
  619.                 showfang 0
  620.                 situation = 5
  621.             End If
  622.         End If
  623.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  624.     Case 7                                                               '这是T型方块
  625.         If n(0) - 9 > 0 Then
  626.             If cmdfang(n(0) - 9).Visible = False Then
  627.                 hidefang 0
  628.                 n(0) = n(0) - 9
  629.                 n(2) = n(2) + 9
  630.                 n(3) = n(3) - 11
  631.                 showfang 0
  632.                 situation = 8
  633.             End If
  634.         End If
  635.     Case 8
  636.         If (n(0) + 11) Mod 10 > 0 Then
  637.             If cmdfang(n(0) + 11).Visible = False Then
  638.                 hidefang 0
  639.                 n(0) = n(0) + 11
  640.                 n(2) = n(2) - 11
  641.                 n(3) = n(3) - 9
  642.                 showfang 0
  643.                 situation = 9
  644.             End If
  645.         End If
  646.     Case 9
  647.         If n(0) + 9 < 199 Then
  648.             If cmdfang(n(0) + 9).Visible = False Then
  649.                 hidefang 0
  650.                 n(0) = n(0) + 9
  651.                 n(2) = n(2) - 9
  652.                 n(3) = n(3) + 11
  653.                 showfang 0
  654.                 situation = 10
  655.             End If
  656.         End If
  657.     Case 10
  658.         If (n(0) - 11) Mod 10 < 9 Then
  659.             If cmdfang(n(0) - 11).Visible = False Then
  660.                 hidefang 0
  661.                 n(0) = n(0) - 11
  662.                 n(2) = n(2) + 11
  663.                 n(3) = n(3) + 9
  664.                 showfang 0
  665.                 situation = 7
  666.             End If
  667.         End If
  668.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  669.     Case 11                                                              '这是正7字型方块
  670.         If n(0) - 9 > 1 And (n(3) - 22) Mod 10 < 9 Then
  671.             If cmdfang(n(0) - 9).Visible = False And _
  672.                cmdfang(n(3) - 22).Visible = False Then
  673.                 hidefang 0
  674.                 n(0) = n(0) - 9
  675.                 n(2) = n(2) - 11
  676.                 n(3) = n(3) - 22
  677.                 showfang 0
  678.                 situation = 12
  679.             End If
  680.         End If
  681.     Case 12
  682.         If (n(0) + 11) Mod 10 > 0 And n(3) - 18 > 1 Then
  683.             If cmdfang(n(0) + 11).Visible = False And _
  684.                cmdfang(n(3) - 18).Visible = False Then
  685.                 hidefang 0
  686.                 n(0) = n(0) + 11
  687.                 n(2) = n(2) - 9
  688.                 n(3) = n(3) - 18
  689.                 showfang 0
  690.                 situation = 13
  691.             End If
  692.         End If
  693.     Case 13
  694.         If n(0) + 9 < 198 And (n(3) + 22) Mod 10 > 0 Then
  695.             If cmdfang(n(0) + 9).Visible = False And _
  696.                cmdfang(n(3) + 22).Visible = False Then
  697.                 hidefang 0
  698.                 n(0) = n(0) + 9
  699.                 n(2) = n(2) + 11
  700.                 n(3) = n(3) + 22
  701.                 showfang 0
  702.                 situation = 14
  703.             End If
  704.         End If
  705.     Case 14
  706.         If (n(0) - 11) Mod 10 < 9 And n(3) + 18 < 198 Then
  707.             If cmdfang(n(0) - 11).Visible = False And _
  708.                cmdfang(n(3) + 18).Visible = False Then
  709.                 hidefang 0
  710.                 n(0) = n(0) - 11
  711.                 n(2) = n(2) + 9
  712.                 n(3) = n(3) + 18
  713.                 showfang 0
  714.                 situation = 11
  715.             End If
  716.         End If
  717.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  718.     Case 15                                                              '这是反7字型方块
  719.         If (n(3) - 22) Mod 10 < 8 Then
  720.             If cmdfang(n(2) - 11).Visible = False And _
  721.                cmdfang(n(3) - 22).Visible = False Then
  722.                 hidefang 0
  723.                 n(0) = n(0) + 9
  724.                 n(2) = n(2) - 11
  725.                 n(3) = n(3) - 22
  726.                 showfang 0
  727.                 situation = 16
  728.             End If
  729.         End If
  730.     Case 16
  731.         If n(3) - 18 > 1 Then
  732.             If cmdfang(n(2) - 9).Visible = False And _
  733.                cmdfang(n(3) - 18).Visible = False Then
  734.                 hidefang 0
  735.                 n(0) = n(0) - 11
  736.                 n(2) = n(2) - 9
  737.                 n(3) = n(3) - 18
  738.                 showfang 0
  739.                 situation = 17
  740.             End If
  741.         End If
  742.     Case 17
  743.         If (n(3) + 22) Mod 10 > 1 Then
  744.             If cmdfang(n(2) + 11).Visible = False And _
  745.                cmdfang(n(3) + 22).Visible = False Then
  746.                 hidefang 0
  747.                 n(0) = n(0) - 9
  748.                 n(2) = n(2) + 11
  749.                 n(3) = n(3) + 22
  750.                 showfang 0
  751.                 situation = 18
  752.             End If
  753.         End If
  754.     Case 18
  755.         If n(3) + 18 < 198 Then
  756.             If cmdfang(n(2) + 9).Visible = False And _
  757.                cmdfang(n(3) + 18).Visible = False Then
  758.                 hidefang 0
  759.                 n(0) = n(0) + 11
  760.                 n(2) = n(2) + 9
  761.                 n(3) = n(3) + 18
  762.                 showfang 0
  763.                 situation = 15
  764.             End If
  765.         End If
  766.     End Select
  767. End Sub
  768.   Private Sub about_Click()
  769.   Dim Msg As String
  770.   Msg = "键盘控制方法:" & vbCrLf
  771.   Msg = Msg & "1.左右光标键控制方块左右移动。" & vbCrLf
  772.   Msg = Msg & "2.上光标键控制方块顺时针旋转90度。" & vbCrLf
  773.   Msg = Msg & "3.下光标键控制方块加速向下移动。" & vbCrLf & vbCrLf
  774.   Msg = Msg & "程序设计者: 王志伟   李虎" & vbCrLf
  775.   Msg = Msg & "    版权所有,请勿盗版  " & vbCrLf
  776.   Msg = Msg & " E-Mail: lihu_2008@163.com"
  777.   MsgBox Msg, vbOKOnly + vbQuestion, Me.Caption
  778. End Sub
  779. Private Sub fast_Click(Index As Integer)
  780.     Dim k As Integer
  781.     For k = 0 To 9
  782.     fast(k).Checked = False
  783.     Next k
  784.     fast(Index).Checked = True
  785.     txtlevel.Text = Index + 1
  786. End Sub
  787. Private Sub gao_Click(Index As Integer)
  788.     Dim l As Integer
  789.     For l = 0 To 9
  790.     gao(l).Checked = False
  791.     Next l
  792.     gao(Index).Checked = True
  793.     txthard.Text = Index + 1
  794. End Sub
  795. Private Sub start_Click()
  796.         picmain.SetFocus
  797.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  798.         tmrmain.Interval = 1000 / Val(txtlevel.Text)                     '根据关卡系数设置方块下降速度
  799.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  800.         For i = 19 To 20 - Val(txthard.Text) Step -1                     '根据难度系数产生不同难度的地基
  801.             For j = i * 10 To i * 10 + 9
  802.                 If Rnd >= 0.5 Then cmdfang(j).Visible = True
  803.             Next
  804.         Next
  805.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  806.         For i = 0 To 3                                                   '引用预览区已经产生的方块
  807.             n(i) = m(i)
  808.         Next
  809.         showfang 0
  810.         situation = situation2
  811.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  812.         tmrmain.Enabled = True                                           '设置一些控件的可用性
  813.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  814.         hidefang 1                                                       '清空预览区
  815.         loadfangkuai                                                     '继续在预览区产生方块
  816.         showfang 1
  817.         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  818.         stop1.Enabled = True
  819. End Sub
  820. Private Sub exit_Click()
  821.     StrMsg = "您是否继续玩游戏?"
  822.      Ref = MsgBox(StrMsg, vbYesNo + vbQuestion, "游戏结束")
  823.   If Ref = vbYes Then
  824.      tmrmain.Enabled = True
  825.   Else
  826.      tmrmain.Enabled = False
  827.      Unload Me
  828.   End If
  829. End Sub
  830. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  831.     If t = 0 Then
  832.     hidefang 0
  833.     Select Case KeyCode
  834.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  835.     Case vbKeyLeft                                                       '点击向左键
  836.         If leftable() = True Then
  837.             For j = 0 To 3
  838.                 cmdfang(n(j) - 1).Visible = True
  839.                 n(j) = n(j) - 1
  840.             Next j
  841.         End If
  842.         showfang 0
  843.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  844.     Case vbKeyDown                                                       '点击向下键
  845.         If downable() = True Then
  846.             For j = 0 To 3
  847.                 cmdfang(n(j) + 10).Visible = True
  848.                 n(j) = n(j) + 10
  849.             Next j
  850.         End If
  851.         showfang 0
  852.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  853.     Case vbKeyRight                                                      '点击向右键
  854.         If rightable() = True Then
  855.             For j = 0 To 3
  856.                 cmdfang(n(j) + 1).Visible = True
  857.                 n(j) = n(j) + 1
  858.             Next j
  859.         End If
  860.         showfang 0
  861.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  862.     Case vbKeyUp                                                     '点击旋转键(向上键)
  863.         showfang 0
  864.         zhuan
  865.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  866.     Case Else
  867.         showfang 0
  868.     End Select
  869.     End If
  870. End Sub
  871. Private Sub Form_Load()
  872.     Randomize                                                            '非正序的随机数
  873.     For i = 1 To 199                                                     '创建游戏区的方块
  874.         Load cmdfang(i)
  875.     Next i
  876.     For i = 0 To 199                                                     '在游戏区以10×20排列方块
  877.         cmdfang(i).Left = (i Mod 10)
  878.         cmdfang(i).Top = i  10
  879.         cmdfang(i).Visible = False
  880.     Next i
  881.     For i = 1 To 39                                                      '创建预览区的方块
  882.         Load cmdfangnext(i)
  883.     Next i
  884.     For i = 0 To 39                                                      '在预览区排列方块
  885.         cmdfangnext(i).Left = (i Mod 10) - 3
  886.         cmdfangnext(i).Top = i  10
  887.         cmdfangnext(i).Visible = False
  888.     Next i
  889.     loadfangkuai                                                         '在预览区产生第一个方块
  890.     showfang 1
  891. End Sub
  892. Private Sub Form_Unload(Cancel As Integer)
  893.     IsMusicOn = False
  894.     RetValue = mciSendString("CLOSE BackgroundMusic", "", 0, 0)
  895. End Sub
  896. Private Sub stop1_Click()
  897.     tmrmain.Enabled = False
  898.     go.Enabled = True
  899.     stop1.Enabled = False
  900. End Sub
  901. Private Sub go_Click()
  902.     tmrmain.Enabled = True
  903.     go.Enabled = False
  904.     stop1.Enabled = True
  905. End Sub
  906. Private Sub Timer4_Timer()
  907.       Label2.ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
  908. End Sub
  909. Private Sub tmrmain_Timer()                                              '使方块下降的Timer
  910.     hidefang 0
  911.     If downable() = True Then                                            '能够下降
  912.         For j = 0 To 3
  913.             n(j) = n(j) + 10
  914.         Next j
  915.         showfang 0
  916.     Else                                                                 '不能继续下降了
  917.         showfang 0
  918.         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  919.         clearline                                                        '引用自定义方法,判断是否消除满行
  920.         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  921.         For i = 0 To 9                                                   '如果方块叠至最上层,游戏结束
  922.             If cmdfang(i).Visible = True Then Exit For
  923.         Next
  924.         If i < 10 Then
  925.            StrMsg = "输了请不要灰心" & vbCrLf & "是否重新开始玩游戏?"
  926.            Ref = MsgBox(StrMsg, vbYesNo + vbQuestion, "俄罗斯方块游戏")
  927.               If Ref = vbYes Then
  928.                  For i = 1 To 199
  929.                  cmdfang(i).Visible = False
  930.                  Next i
  931.                  txtscore.Text = "0"
  932.                  linenum = 0
  933.                  For i = 19 To 20 - Val(txthard.Text) Step -1        '根据难度系数产生不同难度的地基
  934.                      For j = i * 10 To i * 10 + 9
  935.                      If Rnd >= 0.5 Then cmdfang(j).Visible = True
  936.                      Next
  937.                 Next
  938.              Else
  939.                IsMusicOn = False
  940.                RetValue = mciSendString("CLOSE BackgroundMusic", "", 0, 0)
  941.                End
  942.              End If
  943.         End If
  944.         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  945.         For i = 0 To 3                                                   '引用预览区已经产生的方块
  946.             n(i) = m(i)
  947.         Next
  948.         showfang 0
  949.         situation = situation2
  950.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  951.         txtscore.Text = Str(Val(txtscore.Text) + 100 * (2 ^ linenum - 1)) '这段代码控制加分
  952.         
  953.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  954.                                                                          '这段代码控制过关升级
  955.         If Val(Right(txtscore.Text, 4)) < Val(Right(Str(Val(txtscore.Text) - 100 * (2 ^ linenum - 1)), 4)) Then
  956.             txtlevel.Text = Str(Val(txtlevel.Text) + 1)
  957.             tmrmain.Interval = 1000 / Val(txtlevel.Text)
  958.         End If
  959.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  960.         linenum = 0
  961.         hidefang 1                                                       '清空预览区
  962.         loadfangkuai                                                     '继续在预览区产生方块
  963.         showfang 1
  964.     End If
  965. End Sub
  966. Private Sub Timer1_Timer()
  967.     For i = 0 To num
  968.         yp(i) = yp(i) + sty(i)
  969.         If yp(i) > ScaleHeight - 50 Then
  970.             xp(i) = Rnd * (ScaleWidth - am(i) - 30)
  971.             yp(i) = 0
  972.             stx(i) = 0.02 + Rnd / 10
  973.             sty(i) = 0.7 + Rnd
  974.         End If
  975.         dx(i) = dx(i) + stx(i)
  976.         snow(i).Left = xp(i) + am(i) * Sin(dx(i))
  977.         snow(i).Top = yp(i)
  978.     Next i
  979. End Sub
  980. Private Sub yincang_Click()
  981.     picnext.Visible = False
  982.     yincang.Enabled = False
  983.     xianshi.Enabled = True
  984. End Sub
  985. Private Sub xianshi_Click()
  986.     picnext.Visible = True
  987.     yincang.Enabled = True
  988.     xianshi.Enabled = False
  989. End Sub