Piece dropping
This commit is contained in:
parent
9866839080
commit
b64efefea7
13
src/game.zig
13
src/game.zig
|
@ -43,10 +43,12 @@ fn render(self: Self) void {
|
|||
}
|
||||
pub fn tick(self: *Self) void {
|
||||
if (self.piece) |safe_piece| {
|
||||
|
||||
std.debug.print("Piece: Col: {} Row: {}\n", .{ safe_piece.col, safe_piece.row });
|
||||
|
||||
var key_state = SDL.SDL_GetKeyboardState(null);
|
||||
|
||||
// MOVEMENT
|
||||
|
||||
if (key_state[SDL.SDL_SCANCODE_D] == 1 and !self.right_action) {
|
||||
self.right_action = true;
|
||||
self.piece = movement.moveRight(self.grid, safe_piece);
|
||||
|
@ -70,5 +72,14 @@ pub fn tick(self: *Self) void {
|
|||
}
|
||||
}
|
||||
|
||||
// DROP
|
||||
|
||||
if (self.piece) |safe_piece| {
|
||||
if (safe_piece.dropped) {
|
||||
self.grid = movement.drop(self.grid, safe_piece);
|
||||
self.piece = Piece.init(Piece.Type.t);
|
||||
}
|
||||
}
|
||||
|
||||
self.render();
|
||||
}
|
||||
|
|
|
@ -7,11 +7,13 @@ pub fn moveRight(grid: Grid, piece: Piece) Piece {
|
|||
for (new_piece.structure) |_, y| {
|
||||
for (new_piece.structure[y]) |_, x| {
|
||||
if (new_piece.structure[y][x] and
|
||||
@intCast(i32, x) + new_piece.col > Grid.ncolumns - 1) {
|
||||
@intCast(i32, x) + new_piece.col > Grid.ncolumns - 1)
|
||||
{
|
||||
return piece;
|
||||
}
|
||||
if (new_piece.structure[y][x] and
|
||||
!grid.cells[@intCast(usize, new_piece.row + @intCast(i32, y))][@intCast(usize, new_piece.col + @intCast(i32, x))].free) {
|
||||
!grid.cells[@intCast(usize, new_piece.row + @intCast(i32, y))][@intCast(usize, new_piece.col + @intCast(i32, x))].free)
|
||||
{
|
||||
return piece;
|
||||
}
|
||||
}
|
||||
|
@ -25,11 +27,13 @@ pub fn moveLeft(grid: Grid, piece: Piece) Piece {
|
|||
for (new_piece.structure) |_, y| {
|
||||
for (new_piece.structure[y]) |_, x| {
|
||||
if (new_piece.structure[y][x] and
|
||||
@intCast(i32, x) + new_piece.col < 0) {
|
||||
@intCast(i32, x) + new_piece.col < 0)
|
||||
{
|
||||
return piece;
|
||||
}
|
||||
if (new_piece.structure[y][x] and
|
||||
!grid.cells[@intCast(usize, new_piece.row + @intCast(i32, y))][@intCast(usize, new_piece.col + @intCast(i32, x))].free) {
|
||||
!grid.cells[@intCast(usize, new_piece.row + @intCast(i32, y))][@intCast(usize, new_piece.col + @intCast(i32, x))].free)
|
||||
{
|
||||
return piece;
|
||||
}
|
||||
}
|
||||
|
@ -43,14 +47,35 @@ pub fn moveDown(grid: Grid, piece: Piece) Piece {
|
|||
for (new_piece.structure) |_, y| {
|
||||
for (new_piece.structure[y]) |_, x| {
|
||||
if (new_piece.structure[y][x] and
|
||||
@intCast(i32, y) + new_piece.row > Grid.nrows - 1) {
|
||||
return piece;
|
||||
@intCast(i32, y) + new_piece.row > Grid.nrows - 1)
|
||||
{
|
||||
new_piece.row -= 1;
|
||||
new_piece.dropped = true;
|
||||
return new_piece;
|
||||
}
|
||||
if (new_piece.structure[y][x] and
|
||||
!grid.cells[@intCast(usize, new_piece.row + @intCast(i32, y))][@intCast(usize, new_piece.col + @intCast(i32, x))].free) {
|
||||
return piece;
|
||||
!grid.cells[@intCast(usize, new_piece.row + @intCast(i32, y))][@intCast(usize, new_piece.col + @intCast(i32, x))].free)
|
||||
{
|
||||
new_piece.row -= 1;
|
||||
new_piece.dropped = true;
|
||||
return new_piece;
|
||||
}
|
||||
}
|
||||
}
|
||||
return new_piece;
|
||||
}
|
||||
|
||||
pub fn drop(grid: Grid, piece: Piece) Grid {
|
||||
var new_grid = grid;
|
||||
|
||||
for (piece.structure) |_, y| {
|
||||
for (piece.structure[y]) |_, x| {
|
||||
if (piece.structure[y][x]) {
|
||||
new_grid.cells[@intCast(usize, piece.row + @intCast(i32, y))][@intCast(usize, piece.col + @intCast(i32, x))].free = false;
|
||||
new_grid.cells[@intCast(usize, piece.row + @intCast(i32, y))][@intCast(usize, piece.col + @intCast(i32, x))].color = piece.color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new_grid;
|
||||
}
|
||||
|
|
|
@ -18,9 +18,16 @@ pub const Type = enum {
|
|||
// Positions relative to a grid
|
||||
row: i32,
|
||||
col: i32,
|
||||
|
||||
// 4x4 grid indicating piece form
|
||||
structure: [4][4]bool,
|
||||
|
||||
// Should this be dropped and become part of the grid (flag)
|
||||
dropped: bool = false,
|
||||
|
||||
color: SDL.SDL_Color,
|
||||
|
||||
|
||||
pub fn init(piece_type: Type) Self {
|
||||
return Self{
|
||||
.row = 0,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
1271 36569768 1656334617470040282 fdaa7b4da8476360daa4621804b40f8f /home/strange/Documentos/Projectes/Programació/usg/src/main.zig
|
||||
1271 36569768 1656334617470040282 fdaa7b4da8476360daa4621804b40f8f /home/strange/Documentos/Projectes/Programació/usg/src/main.zig
|
||||
135300 36570392 1655299923670057346 b4c2d851673df5aab566633b89bdaa84 /home/strange/Documentos/Projectes/Programació/usg/lib/SDL.zig/src/binding/sdl.zig
|
||||
32 36968726 1656419975960035072 91a8da097c7c1645ba2a6217a5171c4e /home/strange/Documentos/Projectes/Programació/usg/zig-cache/options/kh59p23UXKId3bWMadeQ0Yp6cv2kATA4qPk2nBQ2q_3IsG9JTjKRYS1YxdIMHL6s
|
||||
32 36968726 1656434162539985452 91a8da097c7c1645ba2a6217a5171c4e /home/strange/Documentos/Projectes/Programació/usg/zig-cache/options/kh59p23UXKId3bWMadeQ0Yp6cv2kATA4qPk2nBQ2q_3IsG9JTjKRYS1YxdIMHL6s
|
||||
5621 36968525 1655270162000000000 66001e1a55f68e4681c1f32a69223647 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/std.zig
|
||||
5621 36968525 1655270162000000000 66001e1a55f68e4681c1f32a69223647 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/std.zig
|
||||
29901 36968437 1655270162000000000 5c441d88acbf5e7fe2a26137df2b5376 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/builtin.zig
|
||||
|
@ -21,14 +21,14 @@
|
|||
121502 36968568 1655270162000000000 4bad05f05e4a10364e515a13d2fa2b3f /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/os/linux/io_uring.zig
|
||||
135300 36570392 1655299923670057346 b4c2d851673df5aab566633b89bdaa84 /home/strange/Documentos/Projectes/Programació/usg/lib/SDL.zig/src/binding/sdl.zig
|
||||
1640 36570393 1655299923670057346 c3d50ea43c9e10688a521a9ac927ded4 /home/strange/Documentos/Projectes/Programació/usg/lib/SDL.zig/src/binding/sdl_image.zig
|
||||
32 36968726 1656419975960035072 91a8da097c7c1645ba2a6217a5171c4e /home/strange/Documentos/Projectes/Programació/usg/zig-cache/options/kh59p23UXKId3bWMadeQ0Yp6cv2kATA4qPk2nBQ2q_3IsG9JTjKRYS1YxdIMHL6s
|
||||
32 36968726 1656434162539985452 91a8da097c7c1645ba2a6217a5171c4e /home/strange/Documentos/Projectes/Programació/usg/zig-cache/options/kh59p23UXKId3bWMadeQ0Yp6cv2kATA4qPk2nBQ2q_3IsG9JTjKRYS1YxdIMHL6s
|
||||
7338 36968289 1655270162000000000 ee4fd6c02929ff52d99a8faa2539dce8 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/zig.zig
|
||||
21121 36968483 1655270162000000000 669c911cf26ce07c5f5516d896b30e33 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/zig/c_translation.zig
|
||||
113573 36968636 1655270162000000000 2c3980264c753ba754322c7c8c4f2634 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/mem.zig
|
||||
2093 36570091 1656419286550029980 ca1621dc43254a56e24a1d2bece18d59 /home/strange/Documentos/Projectes/Programació/usg/src/game.zig
|
||||
2326 36570413 1656433976089986564 b5923a8a7d90c6a495a5914d992e6f25 /home/strange/Documentos/Projectes/Programació/usg/src/game.zig
|
||||
1359 36569821 1656418680670025505 5643391f858689faa3fe97fa8d814454 /home/strange/Documentos/Projectes/Programació/usg/src/grid.zig
|
||||
342 36569823 1656079597800036836 fcaa0d5efa9177d38e199b7727f8f020 /home/strange/Documentos/Projectes/Programació/usg/src/cell.zig
|
||||
3375 36569819 1656418592760024855 16d00cd07d8a20e15e989c4bcb844021 /home/strange/Documentos/Projectes/Programació/usg/src/piece.zig
|
||||
3497 36569819 1656433455109989671 609c6515376d60dd45ea803bc24f2389 /home/strange/Documentos/Projectes/Programació/usg/src/piece.zig
|
||||
45023 36968356 1655270162000000000 c30e605ecc099ad6f5498460429756fa /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/elf.zig
|
||||
5432 36968458 1655270162000000000 624956409eee1e93746e77415e9cdca9 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/atomic.zig
|
||||
25568 36968501 1655270162000000000 f15ad6de023e2f7205ca6550cee7becd /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/atomic/Atomic.zig
|
||||
|
@ -37,7 +37,7 @@
|
|||
9352 36968413 1655270162000000000 8c526bbafa435d2af666b490a1e838ad /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/Thread/Mutex.zig
|
||||
3400 36968452 1655270162000000000 5d1d518c32f4fd700943417f56120125 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/io/writer.zig
|
||||
41490 36968415 1655270162000000000 f3d5b2d6057676d8866cf9291ef27dee /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/Thread/Futex.zig
|
||||
1927 36570132 1656419974100035058 ec127107cd07f104cca644a6dafc1e17 /home/strange/Documentos/Projectes/Programació/usg/src/movement.zig
|
||||
2668 36570091 1656434160779985462 f3c4e20f05debba69b5c21f77e7e35f9 /home/strange/Documentos/Projectes/Programació/usg/src/movement.zig
|
||||
102705 36968384 1655270162000000000 4896646ce9abce74b86bcbbc275a18c1 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/fmt.zig
|
||||
31107 36968497 1655270162000000000 efe5272d00145b6eca03d42fcf5fcd30 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/mem/Allocator.zig
|
||||
87065 36968504 1655270162000000000 64f7d52fa9f0953194c996773f4ed130 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/hash_map.zig
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
zig-out/bin/usg
BIN
zig-out/bin/usg
Binary file not shown.
Loading…
Reference in New Issue