collision

This commit is contained in:
2026-03-23 22:02:33 +07:00
parent 3c32aeaea6
commit d7a50ba057
+13 -5
View File
@@ -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;
}
} }
} }