@@ -56,50 +56,76 @@ function animate() {
56
56
}
57
57
58
58
function loop ( ) {
59
- brick = bricks . back ( ) ;
60
- brick . move ( ) ;
61
-
62
- if ( command == SPACE ) {
63
- prevBrick = bricks . get ( bricks . size ( ) - 2 ) ;
64
- brick . stop ( ) ;
65
- if ( ! brick . cut ( prevBrick ) )
66
- command = STOP ;
67
-
68
- bricks . set ( brick ) ;
69
-
70
- // Untuk setiap stepnya, balok yang lama turun 1 kotak
71
- for ( let i = 0 ; i < bricks . size ( ) ; i ++ )
72
- bricks . items [ i ] . down ( ) ;
73
-
74
- if ( direction == 'x' ) {
75
- var topBrick = new Brick ( {
76
- position : new THREE . Vector3 ( - startPos , 0 , brick . position . z ) ,
77
- scale : new THREE . Vector3 ( brick . scale . x , brick . scale . y , brick . scale . z ) ,
78
- color : "hsl(" + hue + ", 100%, 50%)" ,
79
- direction : direction
80
- } ) ;
81
- direction = 'z' ;
82
- startPos = - startPos ;
83
- }
84
- else if ( direction == 'z' ) {
85
- var topBrick = new Brick ( {
86
- position : new THREE . Vector3 ( brick . position . x , 0 , startPos ) ,
87
- scale : new THREE . Vector3 ( brick . scale . x , brick . scale . y , brick . scale . z ) ,
88
- color : "hsl(" + hue + ", 100%, 50%)" ,
89
- direction : direction
90
- } ) ;
91
- direction = 'x' ;
92
- }
93
-
94
- // Menambahkan balok baru
95
- // Membuang balok lama
96
- scene . add ( topBrick . build ) ;
97
- scene . remove ( bricks . front ( ) . build ) ;
98
- bricks . pop ( ) ;
99
- bricks . push ( topBrick ) ;
100
-
101
- hue = ( hue + 5 ) % 360 ;
102
- command = PLAY ;
59
+ switch ( command ) {
60
+ // Balok melakukan update
61
+ case PLAY :
62
+ brick = bricks . back ( ) ;
63
+ brick . move ( ) ;
64
+ break ;
65
+ // Balok berhenti, memotong, dan stop
66
+ // sesuai kondisi
67
+ case SPACE :
68
+ brick . stop ( ) ;
69
+ prevBrick = bricks . get ( bricks . size ( ) - 2 ) ;
70
+
71
+ // Jika balok masih bisa memotong, maka loop lanjut
72
+ if ( brick . cut ( prevBrick ) ) {
73
+ bricks . set ( brick ) ;
74
+
75
+ // Untuk setiap stepnya, balok yang lama turun 1 kotak
76
+ for ( let i = 0 ; i < bricks . size ( ) ; i ++ )
77
+ bricks . items [ i ] . down ( ) ;
78
+
79
+ // Jika balok berjalan di-arah x,
80
+ // mengatur direction menjadi 'x'
81
+ if ( direction == 'x' ) {
82
+ var topBrick = new Brick ( {
83
+ position : new THREE . Vector3 ( - startPos , 0 , brick . position . z ) ,
84
+ scale : new THREE . Vector3 ( brick . scale . x , brick . scale . y , brick . scale . z ) ,
85
+ color : "hsl(" + hue + ", 100%, 50%)" ,
86
+ direction : direction
87
+ } ) ;
88
+ // Update agar variasi
89
+ direction = 'z' ;
90
+ startPos = - startPos ;
91
+ }
92
+ // Jika balok berjalan di-arah x,
93
+ // mengatur direction menjadi 'x'
94
+ else if ( direction == 'z' ) {
95
+ var topBrick = new Brick ( {
96
+ position : new THREE . Vector3 ( brick . position . x , 0 , startPos ) ,
97
+ scale : new THREE . Vector3 ( brick . scale . x , brick . scale . y , brick . scale . z ) ,
98
+ color : "hsl(" + hue + ", 100%, 50%)" ,
99
+ direction : direction
100
+ } ) ;
101
+ // Update agar variasi
102
+ direction = 'x' ;
103
+ }
104
+
105
+ // Menambahkan balok baru
106
+ // Membuang balok lama
107
+ scene . add ( topBrick . build ) ;
108
+ scene . remove ( bricks . front ( ) . build ) ;
109
+ bricks . pop ( ) ;
110
+ bricks . push ( topBrick ) ;
111
+
112
+ // Mengatur parameter warna agar dinamis,
113
+ // berdasarkan tingkat nilai Hue-nya.
114
+ hue = ( hue + 5 ) % 360 ;
115
+
116
+ // mengembalikan state menjadi play
117
+ command = PLAY ;
118
+ }
119
+ // Jika balok tidak bisa memotong (game over)
120
+ else {
121
+ command = STOP ;
122
+ }
123
+ break ;
124
+ case STOP :
125
+
126
+ break ;
127
+ default :
128
+ break ;
103
129
}
104
130
105
131
scene . render ( ) ;
0 commit comments