vb俄羅斯方塊代碼[寶典]_第1頁(yè)
vb俄羅斯方塊代碼[寶典]_第2頁(yè)
vb俄羅斯方塊代碼[寶典]_第3頁(yè)
vb俄羅斯方塊代碼[寶典]_第4頁(yè)
vb俄羅斯方塊代碼[寶典]_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、經(jīng)典俄羅斯方塊演示:代碼如下:Dim Type_Now As Integer '目前方塊的類(lèi)型Dim Type_Next As Integer '下個(gè)方塊的類(lèi)型Dim intRotate As Integer '方塊旋轉(zhuǎn)的狀態(tài)Function Get_X_Value() If GetValue(1, 2) Then 'Get X Value If MaxX - MinX >= 2 Then If MaxX - CurX <= 1 Then Adjust_Left = MaxX - 2 - 1 Else Adjust_Left = CurX - 1 E

2、nd If Get_X_Value = True Exit Function End If End If Get_X_Value = FalseEnd FunctionFunction GetValue(nType As Integer, nWid As Integer) Call GetCoor On Error Resume Next Dim OKCount, EmptyCount As Integer MinX = Xs(1).cX MaxX = Xs(1).cX MinY = Xs(1).cY MaxY = Xs(1).cY For i = 2 To 4 If MinX > Xs

3、(i).cX Then MinX = Xs(i).cX If MaxX < Xs(i).cX Then MaxX = Xs(i).cX If MinY > Xs(i).cY Then MinY = Xs(i).cY If MaxY < Xs(i).cY Then MaxY = Xs(i).cY Next For i = MinX To MaxX For j = MinY To MaxY If Total(i, j) Then GetValue = False Exit Function End If Next Next If nType = 0 Then 'Get Y

4、 Value EmptyCount = 0 'Get MinY OKCount = 0 For i = MinY - 1 To MinY - (nWid - 1) Step -1 For j = MinX To MaxX If Total(j, i) = False Then OKCount = OKCount + 1 Next If OKCount >= picPictureNow.Width And OKCount >= picPictureNow.Height Then EmptyCount = EmptyCount + 1 OKCount = 0 Else Exit

5、 For End If Next MinY = MinY - EmptyCount If MinY < 1 Then MinY = 1 EmptyCount = 0 'GetMaxY OKCount = 0 For i = MaxY + 1 To MaxY + nWid - 1 For j = MinX To MaxX If Total(j, i) = False Then OKCount = OKCount + 1 Next If OKCount >= picPictureNow.Width And OKCount >= picPictureNow.Height T

6、hen EmptyCount = EmptyCount + 1 OKCount = 0 Else Exit For End If Next MaxY = MaxY + EmptyCount If MaxY > 20 Then MaxY = 20 Else 'Get X Value EmptyCount = 0 'Get MinX OKCount = 0 For i = MinX - 1 To MinX - (nWid - 1) Step -1 For j = MinY To MaxY If Total(i, j) = False Then OKCount = OKCoun

7、t + 1 Next If OKCount >= picPictureNow.Width And OKCount >= picPictureNow.Height Then EmptyCount = EmptyCount + 1 OKCount = 0 Else Exit For End If Next MinX = MinX - EmptyCount If MinX < 1 Then MinX = 1 EmptyCount = 0 'GetMaxX OKCount = 0 For i = MaxX + 1 To MaxX + (nWid - 1) For j = Mi

8、nY To MaxY If Total(i, j) = False Then OKCount = OKCount + 1 Next If OKCount >= picPictureNow.Width And OKCount >= picPictureNow.Height Then EmptyCount = EmptyCount + 1 OKCount = 0 Else Exit For End If Next MaxX = MaxX + EmptyCount If MaxX > 10 Then MaxX = 10 End If GetValue = TrueEnd Funct

9、ionFunction Get_Y_Value() If GetValue(0, 2) Then 'Get Y Value If MaxY - MinY >= 2 Then If MaxY - (picPictureNow.Top + 1) <= 1 Then Adjust_Top = MinY - 1 Else End If Get_Y_Value = True Exit Function End If End If Get_Y_Value = FalseEnd FunctionSub Global_Init()'全局初始化 imgPictureNext.Pict

10、ure = LoadPicture("") picPictureNow.Visible = False tmrDrop.Enabled = False Command1.Enabled = True Command2.Enabled = False Call HScroll1_Change Label1.Caption = "速度: " + Str(600 - HScroll1.Value)End SubSub Init()'每個(gè)方塊的初始化過(guò)程 picPictureNow.Visible = False tmrDrop.Enabled = Fa

11、lse Type_Now = Type_Next Call Sel_Next intRotate = 0 picPictureNow.Left = 4 picPictureNow.Top = 0 picPictureNow.Visible = True tmrDrop.Enabled = True Label1.Caption = "速度: " + Str(600 - HScroll1.Value) Call HScroll1_ChangeEnd SubSub GetCoor()'獲取一個(gè)方塊的 4 個(gè)點(diǎn)的坐標(biāo) For i = 1 To 4 'init Xs

12、(i).cX = 0 Xs(i).cY = 0 Xs(i).cZ = False Next CurX = picPictureNow.Left + 1 Select Case Type_Now Case 1 '長(zhǎng)條 If intRotate Mod 2 = 1 Then Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 1 Xs(1).cZ = True For i = 2 To 4 Xs(i).cX = CurX + i - 1 Xs(i).cY = picPictureNow.Top + 1 Xs(i).cZ = True Next El

13、se Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 4 Xs(1).cZ = True For i = 2 To 4 Xs(i).cX = CurX Xs(i).cY = picPictureNow.Top + i - 1 Xs(i).cZ = False Next End If Case 2 '2字 If intRotate Mod 2 = 1 Then Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 3 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).c

14、Y = picPictureNow.Top + 2 Xs(2).cZ = True For i = 3 To 4 Xs(i).cX = CurX + i - 3 Xs(i).cY = picPictureNow.Top + 5 - i Xs(i).cZ = False Next Else Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 1 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 2 Xs(2).cZ = True Xs(3).cX = CurX + 2 X

15、s(3).cY = picPictureNow.Top + 2 Xs(3).cZ = True Xs(4).cX = CurX + 1 Xs(4).cY = picPictureNow.Top + 1 Xs(4).cZ = False End If Case 3 '7字 Select Case intRotate Mod 4 Case 0 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 1 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 3 Xs(2).c

16、Z = True For i = 3 To 4 Xs(i).cX = CurX + 1 Xs(i).cY = picPictureNow.Top + i - 2 Xs(i).cZ = False Next Case 1 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 2 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 2 Xs(2).cZ = True Xs(3).cX = CurX + 2 Xs(3).cY = picPictureNow.Top + 2 Xs(

17、3).cZ = True Xs(4).cX = CurX + 2 Xs(4).cY = picPictureNow.Top + 1 Xs(4).cZ = False Case 2 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 3 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 3 Xs(2).cZ = True For i = 3 To 4 Xs(i).cX = CurX Xs(i).cY = picPictureNow.Top + i - 2 Xs(i).cZ

18、 = False Next Case 3 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 2 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 1 Xs(2).cZ = True Xs(3).cX = CurX + 2 Xs(3).cY = picPictureNow.Top + 1 Xs(3).cZ = True Xs(4).cX = CurX Xs(4).cY = picPictureNow.Top + 1 Xs(4).cZ = False End Select

19、 Case 4 'T字 Select Case intRotate Mod 4 Case 0 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 2 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 2 Xs(2).cZ = True Xs(3).cX = CurX + 2 Xs(3).cY = picPictureNow.Top + 2 Xs(3).cZ = True Xs(4).cX = CurX + 1 Xs(4).cY = picPictureNow.T

20、op + 1 Xs(4).cZ = False Case 1 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 3 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 2 Xs(2).cZ = True For i = 3 To 4 Xs(i).cX = CurX Xs(i).cY = picPictureNow.Top + i - 2 Xs(i).cZ = False Next Case 2 Xs(1).cX = CurX Xs(1).cY = picPictureN

21、ow.Top + 1 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 2 Xs(2).cZ = True Xs(3).cX = CurX + 2 Xs(3).cY = picPictureNow.Top + 1 Xs(3).cZ = True Xs(4).cX = CurX + 1 Xs(4).cY = picPictureNow.Top + 1 Xs(4).cZ = False Case 3 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 2 Xs(1).cZ

22、= True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 3 Xs(2).cZ = True For i = 3 To 4 Xs(i).cX = CurX + 1 Xs(i).cY = picPictureNow.Top + i - 2 Xs(i).cZ = False Next End Select Case 5 '反7字 Select Case intRotate Mod 4 Case 0 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 3 Xs(1).cZ = True Xs(

23、2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 1 Xs(2).cZ = True For i = 3 To 4 Xs(i).cX = CurX Xs(i).cY = picPictureNow.Top + i - 2 Xs(i).cZ = False Next Case 1 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 1 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 1 Xs(2).cZ = True Xs(

24、3).cX = CurX + 2 Xs(3).cY = picPictureNow.Top + 2 Xs(3).cZ = True Xs(4).cX = CurX + 2 Xs(4).cY = picPictureNow.Top + 1 Xs(4).cZ = False Case 2 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 3 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 3 Xs(2).cZ = True For i = 3 To 4 Xs(i).cX

25、 = CurX + 1 Xs(i).cY = picPictureNow.Top + i - 2 Xs(i).cZ = False Next Case 3 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 2 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 2 Xs(2).cZ = True Xs(3).cX = CurX + 2 Xs(3).cY = picPictureNow.Top + 2 Xs(3).cZ = True Xs(4).cX = CurX Xs(

26、4).cY = picPictureNow.Top + 1 Xs(4).cZ = False End Select Case 6 '反2字 If intRotate Mod 2 = 1 Then Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 2 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 3 Xs(2).cZ = True For i = 3 To 4 Xs(i).cX = CurX + i - 3 Xs(i).cY = picPictureNow.

27、Top + i - 2 Xs(i).cZ = False Next Else Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 2 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 2 Xs(2).cZ = True Xs(3).cX = CurX + 2 Xs(3).cY = picPictureNow.Top + 1 Xs(3).cZ = True Xs(4).cX = CurX + 1 Xs(4).cY = picPictureNow.Top + 1 Xs(4)

28、.cZ = False End If Case 7 '田字 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 2 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 2 Xs(2).cZ = True For i = 3 To 4 Xs(i).cX = CurX + i - 3 Xs(i).cY = picPictureNow.Top + 1 Xs(i).cZ = False Next End SelectEnd SubSub Judge_Full()'

29、判斷是否堆滿(mǎn) R_Value = picPictureNow.Top + 1 'MinY rx_value = picPictureNow.Top + picPictureNow.Height 'MaxY For i = rx_value To R_Value Step -1 If Total(1, i) And Total(2, i) And Total(3, i) And Total(4, i) And Total(5, i) And _ Total(6, i) And Total(7, i) And Total(8, i) And Total(9, i) And Tota

30、l(10, i) Then '如果一行已經(jīng)堆滿(mǎn),那么將此行上面的圖象全部向下移動(dòng)一點(diǎn) k = BitBlt(picBackGround.hDC, 0, 20, 200, (i - 1) * 20, picBackGround.hDC, 0, 0, vbSrcCopy) For j = i To 1 Step -1 For k = 1 To 10 Total(k, j) = Total(k, j - 1) Next k Next j i = i + 1 End If Next i '如果目前方塊的頂點(diǎn)位置 <=0 ,那么表示全部堆滿(mǎn) If picPictureNow.Top <= 1 Then Select Case MsgBox("你輸了!想再試試嗎?", 4 + 32) Case vbYes mnuGameNew_Click Case Else Call Global_Init End Select End IfEnd Sub'判斷方塊能否翻轉(zhuǎn)Function Judge_Rotate() Select Case Type_Now Case 1 '長(zhǎng)條 If intRot

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論