collision
This commit is contained in:
+13
-5
@@ -43,8 +43,14 @@ impl SideMatrix {
|
|||||||
|
|
||||||
fn draw_matrix(matrix: &Matrix, x: f32, y: f32, cell_size: f32) {
|
fn draw_matrix(matrix: &Matrix, x: f32, y: f32, cell_size: f32) {
|
||||||
for (i, row) in matrix.visible_cells().iter().enumerate() {
|
for (i, row) in matrix.visible_cells().iter().enumerate() {
|
||||||
for (j, _) in row.iter().enumerate() {
|
for (j, is_filled) in row.iter().enumerate() {
|
||||||
let color = if (i + j) % 2 == 0 { RED } else { YELLOW };
|
let color = if *is_filled {
|
||||||
|
GRAY
|
||||||
|
} else if (i + j) % 2 == 0 {
|
||||||
|
RED
|
||||||
|
} else {
|
||||||
|
YELLOW
|
||||||
|
};
|
||||||
|
|
||||||
draw_rectangle(
|
draw_rectangle(
|
||||||
x + j as f32 * cell_size,
|
x + j as f32 * cell_size,
|
||||||
@@ -114,7 +120,7 @@ impl Game {
|
|||||||
preview: SideMatrix::new(4, 20),
|
preview: SideMatrix::new(4, 20),
|
||||||
piece: Piece::new(20),
|
piece: Piece::new(20),
|
||||||
drop_timer: 0.0,
|
drop_timer: 0.0,
|
||||||
drop_interval: 1.0,
|
drop_interval: 0.2,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,7 +136,7 @@ impl Game {
|
|||||||
fn drop_piece(&mut self) {
|
fn drop_piece(&mut self) {
|
||||||
let next_y = self.piece.y + 1;
|
let next_y = self.piece.y + 1;
|
||||||
|
|
||||||
if next_y >= self.matrix.height as i32 {
|
if next_y >= self.matrix.height as i32 || self.matrix.cells[next_y as usize][self.piece.x as usize] {
|
||||||
self.lock_piece();
|
self.lock_piece();
|
||||||
self.piece = Piece::new(20);
|
self.piece = Piece::new(20);
|
||||||
} else {
|
} else {
|
||||||
@@ -139,7 +145,9 @@ impl Game {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn lock_piece(&mut self) {
|
fn lock_piece(&mut self) {
|
||||||
self.matrix.cells[self.piece.y as usize][self.piece.x as usize] = true;
|
if self.piece.y >= 0 && self.piece.y < self.matrix.height as i32 {
|
||||||
|
self.matrix.cells[self.piece.y as usize][self.piece.x as usize] = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user