俄罗斯方块的VB代码.docx
《俄罗斯方块的VB代码.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块的VB代码.docx(24页珍藏版)》请在冰豆网上搜索。
俄罗斯方块的VB代码
俄罗斯方块的VB代码
Privaten(3),m(3)AsInteger'n(3)记录游戏区的四个活动方块的编号
'm(3)记录预览区的四个活动方块的编号
Privatesituation,situation2,linenum,tAsInteger'situation
记录游戏区的方块样式
'situation2记录预览区的方块样式
'linenum
记录一次消除的行数
PrivateSubhidefang(aAsInteger)'定义使方块不可见的过程
SelectCasea
Case0'a=0使游戏区方块不可见
cmdfang(n(0)).Visible=False
cmdfang(n
(1)).Visible=False
cmdfang(n
(2)).Visible=False
cmdfang(n(3)).Visible=False
Case1'a=1使预览区方块不可见
cmdfangnext(m(0)).Visible=False
cmdfangnext(m
(1)).Visible=False
cmdfangnext(m
(2)).Visible=False
cmdfangnext(m(3)).Visible=False
EndSelect
EndSub
PrivateSubshowfang(aAsInteger)'定义使方块可见的过程
SelectCasea
Case0'a=0使游戏区方块可见
cmdfang(n(0)).Visible=True
cmdfang(n
(1)).Visible=True
cmdfang(n
(2)).Visible=True
cmdfang(n(3)).Visible=True
Case1'a=1使预览区方块不可见
cmdfangnext(m(0)).Visible=True
cmdfangnext(m
(1)).Visible=True
cmdfangnext(m
(2)).Visible=True
cmdfangnext(m(3)).Visible=True
EndSelect
EndSub
PrivateSubclearline()'定义消除整
行的过程
Fori=190To10Step-10
Ifcmdfang(i).Visible=TrueAnd_
cmdfang(i+1).Visible=TrueAnd_
cmdfang(i+2).Visible=TrueAnd_
cmdfang(i+3).Visible=TrueAnd_
cmdfang(i+4).Visible=TrueAnd_
cmdfang(i+5).Visible=TrueAnd_
cmdfang(i+6).Visible=TrueAnd_
cmdfang(i+7).Visible=TrueAnd_
cmdfang(i+8).Visible=TrueAnd_
cmdfang(i+9).Visible=TrueThen
Forj=i+4ToiStep-1
t=1
cmdfang(j).Visible=False
cmdfang(2*i+9-j).Visible=False
Fork=1To4000
DoEvents
Next
t=0
Next
linenum=linenum+1
Forj=i-1To0Step-1
Ifcmdfang(j).Visible=TrueThen
cmdfang(j).Visible=False
cmdfang(j+10).Visible=True
EndIf
Next
clearline'为了实现
连消数行,这里使用递归调用
EndIf
Next
EndSub
PrivateFunctiondownable()AsBoolean'自定义函数,
确定方块是否能下降
Ifn(0)<190Andn
(1)<190Andn
(2)<190Andn(3)<190Then
Ifcmdfang(n(0)+10).Visible=FalseAnd_
cmdfang(n
(1)+10).Visible=FalseAnd_
cmdfang(n
(2)+10).Visible=FalseAnd_
cmdfang(n(3)+10).Visible=FalseThen
downable=True
Else
downable=False
EndIf
Else
downable=False
EndIf
EndFunction
PrivateFunctionleftable()AsBoolean'自定义函
数,确定方块是否能左移
Ifn(0)Mod10<>0Andn
(1)Mod10<>0Andn
(2)Mod10<>0Andn(3)Mod10<>0Then
Ifcmdfang(n(0)-1).Visible=FalseAnd_
cmdfang(n
(1)-1).Visible=FalseAnd_
cmdfang(n
(2)-1).Visible=FalseAnd_
cmdfang(n(3)-1).Visible=FalseThen
leftable=True
Else
leftable=False
EndIf
Else
leftable=False
EndIf
EndFunction
PrivateFunctionrightable()AsBoolean'自定义函
数,确定方块是否能右移
Ifn(0)Mod10<>9Andn
(1)Mod10<>9Andn
(2)Mod10<>9Andn(3)Mod10<>9Then
Ifcmdfang(n(0)+1).Visible=FalseAnd_
cmdfang(n
(1)+1).Visible=FalseAnd_
cmdfang(n
(2)+1).Visible=FalseAnd_
cmdfang(n(3)+1).Visible=FalseThen
rightable=True
Else
rightable=False
EndIf
Else
rightable=False
EndIf
EndFunction
PrivateSubloadfangkuai()'定义随机产
生一种方块的过程
SelectCaseInt(Rnd*6)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Case0'这是长条
型方块
SelectCaseInt(Rnd*2)
Case0
m(0)=3
m
(1)=4
m
(2)=5
m(3)=6
situation2=0
Case1
m(0)=5
m
(1)=15
m
(2)=25
m(3)=35
situation2=1
EndSelect
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''
Case1'这是正方
形方块
m(0)=4
m
(1)=5
m
(2)=14
m(3)=15
situation2=2
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''
Case2'这是正S
型方块
SelectCaseInt(Rnd*2)
Case0
m(0)=6
m
(1)=5
m
(2)=15
m(3)=14
situation2=3
Case1
m(0)=4
m
(1)=14
m
(2)=15
m(3)=25
situation2=4
EndSelect
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''
Case3'这是反S
型方块
SelectCaseInt(Rnd*2)
Case0
m(0)=4
m
(1)=5
m
(2)=15
m(3)=16
situation2=5
Case1
m(0)=5
m
(1)=15
m
(2)=14
m(3)=24
situation2=6
EndSelect
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''
Case4'这是T型
方块
SelectCaseInt(Rnd*4)
Case0
m(0)=4
m
(1)=5
m
(2)=6
m(3)=15
situation2=7
Case1
m(0)=5
m
(1)=15
m
(2)=25
m(3)=14
situation2=8
Case2
m(0)=16
m
(1)=15
m
(2)=14
m(3)=5
situation2=9
Case3
m(0)=24
m
(1)=14
m
(2)=4
m(3)=15
situation2=10
EndSelect
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''
Case5'这是正7
字型方块
SelectCaseInt(Rnd*4)
Case0
m(0)=4
m
(1)=5
m
(2)=15
m(3)=25
situation2=11
Case1
m(0)=5
m
(1)=15
m
(2)=14
m(3)=13
situation2=12
Case2
m(0)=25
m
(1)=24
m
(2)=14
m(3)=4
situation2=13
Case3
m(0)=14
m
(1)=4
m
(2)=5
m(3)=6
situation2=14
EndSelect
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''
Case6'这是反7
字型方块
SelectCaseInt(Rnd*4)
Case0
m(0)=5
m
(1)=4
m
(2)=14
m(3)=24
situation2=15
Case1
m(0)=15
m
(1)=5
m
(2)=4
m(3)=3
situation2=16
Case2
m(0)=24
m
(1)=25
m
(2)=15
m(3)=5
situation2=17
Case3
m(0)=4
m
(1)=14
m
(2)=15
m(3)=16
situation2=18
EndSelect
EndSelect
EndSub
PrivateSubzhuan()'定义使方块
旋转的过程
SelectCasesituation
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''
Case0'这是长条
型方块
Ifn(0)-18>=2Andn(3)+9<=198Then
Ifcmdfang(n(0)-18).Visible=FalseAnd_
cmdfang(n
(1)-9).Visible=FalseAnd_
cmdfang(n(3)+9).Visible=FalseThen
hidefang0
n(0)=n(0)-18
n
(1)=n
(1)-9
n(3)=n(3)+9
showfang0
situation=1
EndIf
EndIf
Case1
If(n(0)+18)Mod10<8And(n(3)-9)Mod10>0Then
Ifcmdfang(n(0)+18).Visible=FalseAnd_
cmdfang(n
(1)+9).Visible=FalseAnd_
cmdfang(n(3)-9).Visible=FalseThen
hidefang0
n(0)=n(0)+18
n
(1)=n
(1)+9
n(3)=n(3)-9
showfang0
situation=0
EndIf
EndIf
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''
Case2'这是正方
形方块
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''
Case3'这是正S
型方块
Ifn(0)-11>1Then
Ifcmdfang(n(0)-11).Visible=FalseAnd_
cmdfang(n(3)+2).Visible=FalseThen
hidefang0
n(0)=n(0)-11
n
(2)=n
(2)-9
n(3)=n(3)+2
showfang0
situation=4
EndIf
EndIf
Case4
If(n(3)-2)Mod10<9Then
Ifcmdfang(n
(2)+9).Visible=FalseAnd_
cmdfang(n(3)-2).Visible=FalseThen
hidefang0
n(0)=n(0)+11
n
(2)=n
(2)+9
n(3)=n(3)-2
showfang0
situation=3
EndIf
EndIf
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''
Case5'这是反S
型方块
Ifn(0)-9>1Then
Ifcmdfang(n(0)-9).Visible=FalseAnd_
cmdfang(n(3)-2).Visible=FalseThen
hidefang0
n(0)=n(0)-9
n
(2)=n
(2)-11
n(3)=n(3)-2
showfang0
situation=6
EndIf
EndIf
Case6
If(n(3)+2)Mod10>0Then
Ifcmdfang(n
(2)+11).Visible=FalseAnd_
cmdfang(n(3)+2).Visible=FalseThen
hidefang0
n(0)=n(0)+9
n
(2)=n
(2)+11
n(3)=n(3)+2
showfang0
situation=5
EndIf
EndIf
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''
Case7'这是T
型方块
Ifn(0)-9>0Then
Ifcmdfang(n(0)-9).Visible=FalseThen
hidefang0
n(0)=n(0)-9
n
(2)=n
(2)+9
n(3)=n(3)-11
showfang0
situation=8
EndIf
EndIf
Case8
If(n(0)+11)Mod10>0Then
Ifcmdfang(n(0)+11).Visible=FalseThen
hidefang0
n(0)=n(0)+11
n
(2)=n
(2)-11
n(3)=n(3)-9
showfang0
situation=9
EndIf
EndIf
Case9
Ifn(0)+9<199Then
Ifcmdfang(n(0)+9).Visible=FalseThen
hidefang0
n(0)=n(0)+9
n
(2)=n
(2)-9
n(3)=n(3)+11
showfang0
situation=10
EndIf
EndIf
Case10
If(n(0)-11)Mod10<9Then
Ifcmdfang(n(0)-11).Visible=FalseThen
hidefang0
n(0)=n(0)-11
n
(2)=n
(2)+11
n(3)=n(3)+9
showfang0
situation=7
EndIf
EndIf
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''
Case11'这是正
7字型方块
Ifn(0)-9>1And(n(3)-22)Mod10<9Then
Ifcmdfang(n(0)-9).Visible=FalseAnd_
cmdfang(n(3)-22).Visible=FalseThen
hidefang0
n(0)=n(0)-9
n
(2)=n
(2)-11
n(3)=n(3)-22
showfang0
situation=12
EndIf
EndIf
Case12
If(n(0)+11)Mod10>0Andn(3)-18>1Then
Ifcmdfang(n(0)+11).Visible=FalseAnd_
cmdfang(n(3)-18).Visible=FalseThen
hidefang0
n(0)=n(0)+11
n
(2)=n
(2)-9
n(3)=n(3)-18
showfang0
situation=13
EndIf
EndIf
Case13
Ifn(0)+9<198And(n(3)+22)Mod10>0Then
Ifcmdfang(n(0)+9).Visible=FalseAnd_
cmdfang(n(3)+22).Visible=FalseThen
hidefang0
n(0)=n(0)+9
n
(2)=n
(2)+11
n(3)=n(3)+22
showfang0
situation=14
EndIf
EndIf
Case14
If(n(0)-11)Mod10<9Andn(3)+18<198Then
Ifcmdfang(n(0)-11).Visible=FalseAnd_
cmdfang(n(3)+18).Visible=FalseThen
hidefang0
n(0)=n(0)-11
n
(2)=n
(2)+9
n(3)=n(3)+18
showfang0
situation=11
EndIf
EndIf
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''
Case15'这是反
7字型方块
If(n(3)-22)Mod10<8Then
Ifcmdfang(n
(2)-11).Visible=FalseAnd_
cmdfang(n(3)-22).Visible=FalseThen
hidefang0
n(0)=n(0)+9
n(2