Professional Documents
Culture Documents
L A M P I R A N
44
A. Kode program aplikasi game tetris untuk form1 ( MainF.frm ) adalah sebagai berikut.
45
RS.Update HIS.Caption = "Hi Score : " + CStr(RS("hiscoref")) If KeyDownC.Enabled Then KeyDownC.SetFocus End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 39 Then Call MOVErigth If KeyCode = 37 Then Call MOVEleft
End Sub
Private Sub Form_Load() 'KeyDownC.SetFocus Set BANK = DBEngine.OpenDatabase(App.Path + "\hiscore.mdb") Set RS = BANK.OpenRecordset("his") RS.MoveFirst HIS.Caption = "Hi Score : " + CStr(RS("hiscoref")) BEGflag = True If SND.Value = 1 Then j = sndPlaySound(App.Path + "\startGAME.wav", 0) nextSHAPE BEGflag1 = True
46
Private Sub Form_Unload(Cancel As Integer) If SND.Value = 1 Then j = sndPlaySound(App.Path + "\gameOVER.wav", SND_ASYNC Or SND_LOOP) End Sub
Private Sub KeyDownC_KeyPress(KeyCode As Integer) KeyDownC.Caption = KeyAscii 'Form1.BackColor = GRRc.BackColor If KeyCode = 48 Then If SELshape = 4 Then SELshape = 1 Else SELshape = SELshape + 1 End If End If If KeyCode = 48 Then Call ROTATEshape If KeyCode = 54 Then Call MOVErigth If KeyCode = 52 Then Call MOVEleft If KeyCode = 53 Then Call MOVEdown 'If KeyCode = 51 Then Call nextSHAPE If KeyCode = 32 Then FASTdownFLAG = True
47
Call MOVEdown End If If KeyCode = 112 Or KeyCode = 80 Then Call pouseKEY End If End Sub
Function GetMEi() 'If BEGflag Then ' ' BEGflag = False Call GetMEi
'End If COLORt = S(6) 'PRi = i 'rewFLAG = True Randomize Timer pishi1 = Rnd * 1000 For i = 1 To 8 If pishi1 > i * 142 - 142 And pishi1 <= i * 142 Then Exit For Next i TEMPi = PRi DEFshape If Not BEGflag Then PRi = i
48
Call PRIshape Else BEGflag = False Call GetMEi End If i = TEMPi 'BEGflag = False End Function
Function nextSHAPE() KeepFLAG = True MainI = 4 SELshape = 1 'For k = 1 To 160 ' MM(k) = False
'Next k If KeepFLAG = True Then GetMEi DEFshape End If For j = 0 To 3 MM(MainI + S(j)) = S(6) Next j For cleaner = 1 To 160 If MM(cleaner) <> 0 Then
49
If MM(cleaner) = 1 Then C(cleaner).BackColor = BCOLOR(1).BackColor If MM(cleaner) = 2 Then C(cleaner).BackColor = BCOLOR(2).BackColor If MM(cleaner) = 3 Then C(cleaner).BackColor = BCOLOR(3).BackColor If MM(cleaner) = 4 Then C(cleaner).BackColor = BCOLOR(4).BackColor If MM(cleaner) = 5 Then C(cleaner).BackColor = BCOLOR(5).BackColor If MM(cleaner) = 6 Then C(cleaner).BackColor = BCOLOR(6).BackColor If MM(cleaner) = 7 Then C(cleaner).BackColor = BCOLOR(7).BackColor Else C(cleaner).BackColor = BLAKc.BackColor End If Next cleaner If SND.Value = 1 Then j = sndPlaySound(App.Path + "\fallDOWN.wav", SND_ASYNC Or SND_LOOP) End Function
Private Sub LEVEL_KeyPress(KeyAscii As Integer) If KeyAscii = 112 Then Call pouseKEY End If End Sub
50
Function ROTATEshape() KeepFLAG = True 'MainI = 4 For j = 0 To 3 MM(MainI + S(j)) = 0 Next j 'If KeepFLAG = True Then 'GetMEi DEFshape 'End If temp = MainI Mod 10 If temp = 0 Then temp = 10 row = ((MainI - (temp)) / 10) + 1 If MainI > S(4) + ((row - 1) * 10) Then fillFLAG = True For q = 0 To 3 If MM(MainI + S(q)) Then fillFLAG = True Next q If fillFLAG Then If SELshape = 1 Then SELshape = 4 Else SELshape = SELshape - 1 End If End If DEFshape
51
fillFLAG = False For j = 0 To 3 MM(MainI + S(j)) = S(6) Next j For cleaner = 1 To 160 If MM(cleaner) <> 0 Then If MM(cleaner) = 1 Then C(cleaner).BackColor = BCOLOR(1).BackColor If MM(cleaner) = 2 Then C(cleaner).BackColor = BCOLOR(2).BackColor If MM(cleaner) = 3 Then C(cleaner).BackColor = BCOLOR(3).BackColor If MM(cleaner) = 4 Then C(cleaner).BackColor = BCOLOR(4).BackColor If MM(cleaner) = 5 Then C(cleaner).BackColor = BCOLOR(5).BackColor If MM(cleaner) = 6 Then C(cleaner).BackColor = BCOLOR(6).BackColor If MM(cleaner) = 7 Then C(cleaner).BackColor = BCOLOR(7).BackColor Else C(cleaner).BackColor = BLAKc.BackColor End If Next cleaner
End Function Function MOVErigth() KeepFLAG = True For j = 0 To 3 MM(MainI + S(j)) = False Next j MainI = MainI + 1
52
temp = MainI Mod 10 If temp = 0 Then temp = 10 row = ((MainI - (temp)) / 10) + 1 If MainI > S(4) + ((row - 1) * 10) Then MainI = MainI - 1 If i = 7 And (SELshape = 2 Or SELshape = 4) And temp = 1 Then MainI = MainI - 1 For q = 0 To 3 If MM(MainI + S(q)) Then fillFLAG = True Next q If fillFLAG Then MainI = MainI - 1 fillFLAG = False For j = 0 To 3 MM(MainI + S(j)) = S(6) Next j For cleaner = 1 To 160 If MM(cleaner) <> 0 Then If MM(cleaner) = 1 Then C(cleaner).BackColor = BCOLOR(1).BackColor If MM(cleaner) = 2 Then C(cleaner).BackColor = BCOLOR(2).BackColor If MM(cleaner) = 3 Then C(cleaner).BackColor = BCOLOR(3).BackColor If MM(cleaner) = 4 Then C(cleaner).BackColor = BCOLOR(4).BackColor If MM(cleaner) = 5 Then C(cleaner).BackColor = BCOLOR(5).BackColor If MM(cleaner) = 6 Then C(cleaner).BackColor = BCOLOR(6).BackColor If MM(cleaner) = 7 Then C(cleaner).BackColor = BCOLOR(7).BackColor Else C(cleaner).BackColor = BLAKc.BackColor End If
53
Next cleaner
End Function Function MOVEleft() KeepFLAG = True For j = 0 To 3 MM(MainI + S(j)) = 0 Next j MainI = MainI - 1 row = ((MainI - (MainI Mod 10)) / 10) + 1 If MainI < 1 + ((row - 1) * 10) Then MainI = MainI + 1 For q = 0 To 3 If MM(MainI + S(q)) <> 0 Then fillFLAG = True Next q If fillFLAG Then MainI = MainI + 1 fillFLAG = False 'If KeepFLAG = True Then 'GetMEi ' DEFshape '********************************
'End If For j = 0 To 3 MM(MainI + S(j)) = S(6) Next j For cleaner = 1 To 160 If MM(cleaner) <> 0 Then
54
If MM(cleaner) = 1 Then C(cleaner).BackColor = BCOLOR(1).BackColor If MM(cleaner) = 2 Then C(cleaner).BackColor = BCOLOR(2).BackColor If MM(cleaner) = 3 Then C(cleaner).BackColor = BCOLOR(3).BackColor If MM(cleaner) = 4 Then C(cleaner).BackColor = BCOLOR(4).BackColor If MM(cleaner) = 5 Then C(cleaner).BackColor = BCOLOR(5).BackColor If MM(cleaner) = 6 Then C(cleaner).BackColor = BCOLOR(6).BackColor If MM(cleaner) = 7 Then C(cleaner).BackColor = BCOLOR(7).BackColor Else C(cleaner).BackColor = BLAKc.BackColor End If Next cleaner
End Function
Function MOVEdown() Dim lineFLAG As Boolean SCORE.Text = Val(SCORE.Text) + 5 'If MAINtimer.Interval < 200 Then ' ' MAINtimer.Interval = 500 LEVEL.Text = Val(LEVEL.Text) + 1
'End If 'MAINtimer.Interval = MAINtimer.Interval - 2 'If SND.Value = 1 Then j = sndPlaySound(App.Path + "\falldown.wav", SND_ASYNC) KeepFLAG = True
55
For j = 0 To 3 MM(MainI + S(j)) = 0 Next j MainI = MainI + 10 'If MainI > S(5) Then 'p = i 'End If For q = 0 To 3 If MM(MainI + S(q)) <> 0 Then fillFLAG = True Next q If S(5) < MainI Or fillFLAG Then MainI = MainI - 10 For p = 0 To 3 MM(MainI + S(p)) = S(6) Next p fillFLAG = False If MainI < 10 And Not BEGflag1 Then MAINtimer.Enabled = False If Val(SCORE.Text) > RS("hiscoref") Then RS.Edit RS("hiscoref") = Val(SCORE.Text) RS.Update End If HIS.Caption = "Hi Score : " + CStr(RS("hiscoref")) C(44).BackColor = Smile.BackColor
56
C(47).BackColor = Smile.BackColor C(62).BackColor = Smile.BackColor C(73).BackColor = Smile.BackColor C(84).BackColor = Smile.BackColor C(85).BackColor = Smile.BackColor C(86).BackColor = Smile.BackColor C(87).BackColor = Smile.BackColor C(78).BackColor = Smile.BackColor C(69).BackColor = Smile.BackColor If SND.Value = 1 Then j = sndPlaySound(App.Path + "\gameOVER.wav", SND_ASYNC Or SND_LOOP) MsgBox "YOU LOSE THE GAME ! " KeyDownC.Enabled = False Exit Function End If BEGflag1 = False For w = 0 To 15 lineFLAG = True For e = 1 To 10 If MM(w * 10 + e) = 0 Then lineFLAG = False Next e If lineFLAG = True Then SCORE.Text = Val(SCORE.Text) + 100 For r = w To 1 Step -1 For t = 1 To 10
57
MM(r * 10 + t) = MM((r - 1) * 10 + t) MM((r - 1) * 10 + t) = 0 'If MM(r * 10 + t) Then C(r * 10 + t).BackColor = GRRc.BackColor Else C(r * 10 + t).BackColor = BLAKc.BackColor Next t Next r 'GoTo 1 If SND.Value = 1 Then j = sndPlaySound(App.Path + "\LINEFILL.wav", SND_ASYNC) End If Next w For cleaner = 1 To 160 If MM(cleaner) <> 0 Then If MM(cleaner) = 1 Then C(cleaner).BackColor = BCOLOR(1).BackColor If MM(cleaner) = 2 Then C(cleaner).BackColor = BCOLOR(2).BackColor If MM(cleaner) = 3 Then C(cleaner).BackColor = BCOLOR(3).BackColor If MM(cleaner) = 4 Then C(cleaner).BackColor = BCOLOR(4).BackColor If MM(cleaner) = 5 Then C(cleaner).BackColor = BCOLOR(5).BackColor If MM(cleaner) = 6 Then C(cleaner).BackColor = BCOLOR(6).BackColor If MM(cleaner) = 7 Then C(cleaner).BackColor = BCOLOR(7).BackColor Else C(cleaner).BackColor = BLAKc.BackColor End If Next cleaner FASTdownFLAG = False
58
nextSHAPE Else If FASTdownFLAG Then Call MOVEdown End If 'If MainI > 140 Then MainI = MainI - 10 'If KeepFLAG = True Then 'GetMEi 'DEFshape 'End If For j = 0 To 3 MM(MainI + S(j)) = S(6) Next j For cleaner = 1 To 160 If MM(cleaner) <> 0 Then If MM(cleaner) = 1 Then C(cleaner).BackColor = BCOLOR(1).BackColor If MM(cleaner) = 2 Then C(cleaner).BackColor = BCOLOR(2).BackColor If MM(cleaner) = 3 Then C(cleaner).BackColor = BCOLOR(3).BackColor If MM(cleaner) = 4 Then C(cleaner).BackColor = BCOLOR(4).BackColor If MM(cleaner) = 5 Then C(cleaner).BackColor = BCOLOR(5).BackColor If MM(cleaner) = 6 Then C(cleaner).BackColor = BCOLOR(6).BackColor If MM(cleaner) = 7 Then C(cleaner).BackColor = BCOLOR(7).BackColor Else C(cleaner).BackColor = BLAKc.BackColor End If Next cleaner
59
'If lineFLAG = True Then ' ' lineFLAG = False Exit Function
Private Sub NEW_GAME_Click() HIS.Caption = "Hi Score : " + CStr(RS("hiscoref")) MainI = 4 For lk = 0 To 160 MM(lk) = 0 Next lk SCORE.Text = 0 LEVEL.Text = 1 MAINtimer.Enabled = True KeyDownC.Enabled = True If KeyDownC.Enabled Then KeyDownC.SetFocus If SND.Value = 1 Then j = sndPlaySound(App.Path + "\startGAME.wav", SND_ASYNC Or SND_LOOP) End Sub
Private Sub NEW_GAME_KeyPress(KeyAscii As Integer) If KeyAscii = 112 Or KeyAscii = 80 Then Call pouseKEY
60
End If
End Sub
Function pouseKEY() MAINtimer.Enabled = Not MAINtimer.Enabled KeyDownC.Enabled = Not KeyDownC.Enabled If KeyDownC.Enabled Then KeyDownC.SetFocus End Function
Private Sub SCORE_KeyPress(KeyAscii As Integer) If KeyAscii = 112 Or KeyAscii = 80 Then Call pouseKEY End If End Sub
Function PRIshape() For m = 1 To 4 A(m).BackColor = PINKc.BackColor A(m + 10).BackColor = PINKc.BackColor A(m + 20).BackColor = PINKc.BackColor A(m + 30).BackColor = PINKc.BackColor Next m If S(6) = 0 Then Exit Function Select Case PRi
61
Case 1 GoTo 1 Case 2 GoTo 2 Case 3 GoTo 3 Case 4 GoTo 4 Case 5 GoTo 5 Case 6 GoTo 6 Case 7 GoTo 7 End Select 1 A(2).BackColor = BCOLOR(S(6)).BackColor A(3).BackColor = BCOLOR(S(6)).BackColor A(11).BackColor = BCOLOR(S(6)).BackColor A(12).BackColor = BCOLOR(S(6)).BackColor Exit Function 2 A(1).BackColor = BCOLOR(S(6)).BackColor A(2).BackColor = BCOLOR(S(6)).BackColor A(12).BackColor = BCOLOR(S(6)).BackColor
62
3 A(1).BackColor = BCOLOR(S(6)).BackColor A(11).BackColor = BCOLOR(S(6)).BackColor A(21).BackColor = BCOLOR(S(6)).BackColor A(22).BackColor = BCOLOR(S(6)).BackColor Exit Function
4 A(2).BackColor = BCOLOR(S(6)).BackColor A(12).BackColor = BCOLOR(S(6)).BackColor A(21).BackColor = BCOLOR(S(6)).BackColor A(22).BackColor = BCOLOR(S(6)).BackColor Exit Function
5 A(2).BackColor = BCOLOR(S(6)).BackColor A(11).BackColor = BCOLOR(S(6)).BackColor A(12).BackColor = BCOLOR(S(6)).BackColor A(13).BackColor = BCOLOR(S(6)).BackColor Exit Function
63
A(1).BackColor = BCOLOR(S(6)).BackColor A(2).BackColor = BCOLOR(S(6)).BackColor A(11).BackColor = BCOLOR(S(6)).BackColor A(12).BackColor = BCOLOR(S(6)).BackColor Exit Function 7 A(1).BackColor = BCOLOR(S(6)).BackColor A(2).BackColor = BCOLOR(S(6)).BackColor A(3).BackColor = BCOLOR(S(6)).BackColor A(4).BackColor = BCOLOR(S(6)).BackColor Exit Function
End Function
64
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long Global S(6) As Integer 'global s2(3) As Integer 'Global s3(3) As Integer 'Global s4(3) As Integer 'Global s5(3) As Integer 'Global s6(3) As Integer 'Global s7(3) As Integer Global MM(160) As Integer 'if 0 then null if 1 then blue if 2 red Global SELshape As Integer Global MainI As Integer Global KeepFLAG As Boolean Global rewFLAG As Boolean Global i As Integer Global row As Integer Global fillFLAG As Boolean Global FASTdownFLAG As Boolean Global ShColor As Integer Global PRi As Integer Global BEGflag As Boolean Global TEMPi As Integer
65
'KIND a Select Case i Case 1 S(0) = 1 S(1) = 2 S(2) = 10 S(3) = 11 S(4) = 8 S(5) = 140 Case 2 S(0) = 0 S(1) = 1 S(2) = 11 S(3) = 12 S(4) = 8 S(5) = 140 Case 3 S(0) = 0
66
S(1) = 10 S(2) = 20 S(3) = 21 S(5) = 130 S(4) = 9 Case 4 S(0) = 1 S(1) = 11 S(2) = 20 S(3) = 21 S(4) = 9 S(5) = 130 Case 5 S(0) = 1 S(1) = 10 S(2) = 11 S(3) = 12 S(4) = 8 S(5) = 140 Case 6 S(0) = 0 S(1) = 1 S(2) = 10 S(3) = 11 S(4) = 9
67
S(5) = 140 Case 7 S(0) = 0 S(1) = 1 S(2) = 2 S(3) = 3 S(4) = 7 S(5) = 150 End Select Case 2 'KIND b Select Case i Case 1 S(0) = 0 S(1) = 10 S(2) = 11 S(3) = 21 S(4) = 9 S(5) = 130 Case 2 S(0) = 1 S(1) = 10 S(2) = 11 S(3) = 20 S(4) = 9
68
S(5) = 130 Case 3 S(0) = 0 S(1) = 1 S(2) = 2 S(3) = 10 S(4) = 8 S(5) = 140 Case 4 S(0) = 0 S(1) = 10 S(2) = 11 S(3) = 12 S(4) = 8 S(5) = 140 Case 5 S(0) = 0 S(1) = 10 S(2) = 11 S(3) = 20 S(4) = 9 S(5) = 130 Case 6 S(0) = 0 S(1) = 1
69
S(2) = 10 S(3) = 11 S(4) = 9 S(5) = 140 Case 7 S(0) = 0 S(1) = 10 S(2) = 20 S(3) = 30 S(4) = 10 S(5) = 120 End Select Case 3 'KIND c Select Case i Case 1 S(0) = 1 S(1) = 2 S(2) = 10 S(3) = 11 S(4) = 8 S(5) = 140 Case 2 S(0) = 0 S(1) = 1
70
S(2) = 11 S(3) = 12 S(4) = 8 S(5) = 140 Case 3 S(0) = 0 S(1) = 1 S(2) = 11 S(3) = 21 S(4) = 9 S(5) = 130 Case 4 S(0) = 0 S(1) = 1 S(2) = 10 S(3) = 20 S(4) = 9 S(5) = 130 Case 5 S(0) = 0 S(1) = 1 S(2) = 2 S(3) = 11 S(4) = 8 S(5) = 140
71
Case 6 S(0) = 0 S(1) = 1 S(2) = 10 S(3) = 11 S(4) = 9 S(5) = 140 Case 7 S(0) = 0 S(1) = 1 S(2) = 2 S(3) = 3 S(4) = 7 S(5) = 150 End Select Case 4 'KIND d Select Case i Case 1 S(0) = 0 S(1) = 10 S(2) = 11 S(3) = 21 S(4) = 9 S(5) = 130
72
Case 2 S(0) = 1 S(1) = 10 S(2) = 11 S(3) = 20 S(4) = 9 S(5) = 130 Case 3 S(0) = 2 S(1) = 10 S(2) = 11 S(3) = 12 S(4) = 8 S(5) = 140 Case 4 S(0) = 0 S(1) = 1 S(2) = 2 S(3) = 12 S(4) = 8 S(5) = 140 Case 5 S(0) = 1 S(1) = 10 S(2) = 11
73
S(3) = 21 S(4) = 9 S(5) = 130 Case 6 S(0) = 0 S(1) = 1 S(2) = 10 S(3) = 11 S(4) = 9 S(5) = 140 Case 7 S(0) = 0 S(1) = 10 S(2) = 20 S(3) = 30 S(4) = 10 S(5) = 120 End Select End Select Select Case i Case 1 S(6) = 1 Case 2 S(6) = 2 Case 3
74
S(6) = 3 Case 4 S(6) = 4 Case 5 S(6) = 5 Case 6 S(6) = 6 Case 7 S(6) = 7 End Select End Function