Bag preview rendering, bag randomization
This commit is contained in:
parent
d77df73f61
commit
9e7244833e
27
src/bag.zig
27
src/bag.zig
|
@ -1,43 +1,56 @@
|
|||
const std = @import("std");
|
||||
|
||||
const Piece = @import("piece.zig");
|
||||
|
||||
const Self = @This();
|
||||
|
||||
contents: [14]?Piece.Type,
|
||||
prng: std.rand.DefaultPrng,
|
||||
|
||||
pub fn init() Self {
|
||||
|
||||
var ret = Self{
|
||||
.contents = undefined,
|
||||
.prng = std.rand.DefaultPrng.init(@intCast(u64, std.time.milliTimestamp())),
|
||||
};
|
||||
// We must fill all of the array
|
||||
for (ret.contents[0..6]) |_, i| {
|
||||
for (ret.contents[0..7]) |_, i| {
|
||||
std.debug.print("Bag: {any}\n", .{ret.contents});
|
||||
ret.contents[i] = @intToEnum(Piece.Type, i);
|
||||
}
|
||||
// Then we would shuffle
|
||||
// Then we shuffle
|
||||
ret.prng.random().shuffle(?Piece.Type, ret.contents[0..7]);
|
||||
|
||||
for (ret.contents[7..13]) |_, i| {
|
||||
for (ret.contents[7..14]) |_, i| {
|
||||
std.debug.print("Bag: {any}\n", .{ret.contents});
|
||||
ret.contents[i + 7] = @intToEnum(Piece.Type, i);
|
||||
}
|
||||
// Then we would shuffle
|
||||
// Then we shuffle
|
||||
ret.prng.random().shuffle(?Piece.Type, ret.contents[7..14]);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
pub fn pop(self: *Self) Piece.Type {
|
||||
var ret = Piece.Type.i;
|
||||
var ret = Piece.Type.i; // TODO
|
||||
if (self.contents[0]) |head| {
|
||||
ret = head;
|
||||
for (self.contents) |_, i| {
|
||||
//std.debug.print("Bag: {any}\n", .{self.contents});
|
||||
if (i + 1 >= self.contents.len) {
|
||||
break;
|
||||
}
|
||||
if (self.contents[i + 1]) |next| {
|
||||
self.contents[i] = next;
|
||||
self.contents[i + 1] = null;
|
||||
} else break;
|
||||
}
|
||||
if (self.contents[7] == null) {
|
||||
for (self.contents[7..13]) |_, i| {
|
||||
for (self.contents[7..14]) |_, i| {
|
||||
self.contents[i + 7] = @intToEnum(Piece.Type, i);
|
||||
}
|
||||
self.prng.random().shuffle(?Piece.Type, self.contents[7..14]);
|
||||
}
|
||||
// Then we would shuffle
|
||||
|
||||
}
|
||||
return ret;
|
||||
|
|
|
@ -5,6 +5,7 @@ const Grid = @import("grid.zig");
|
|||
const Piece = @import("piece.zig");
|
||||
const Bag = @import("bag.zig");
|
||||
|
||||
const preview = @import("preview.zig");
|
||||
const movement = @import("movement.zig");
|
||||
|
||||
const Self = @This();
|
||||
|
@ -25,7 +26,7 @@ left_action: bool = false,
|
|||
down_action: bool = false,
|
||||
|
||||
pub fn init(renderer: *SDL.SDL_Renderer) Self {
|
||||
var ret = Self {
|
||||
var ret = Self{
|
||||
.grid = Grid.init(),
|
||||
.grid_cell_size = 16,
|
||||
.grid_pos_x = 16,
|
||||
|
@ -44,10 +45,12 @@ fn render(self: Self) void {
|
|||
if (self.piece) |safe_piece| {
|
||||
safe_piece.render(self.renderer, self.grid_cell_size, self.grid_pos_x, self.grid_pos_y);
|
||||
}
|
||||
preview.render(self.renderer, self.bag, self.grid_cell_size, self.grid_pos_x + self.grid_cell_size * (Grid.ncolumns + 1), self.grid_pos_y);
|
||||
}
|
||||
pub fn tick(self: *Self) void {
|
||||
if (self.piece) |safe_piece| {
|
||||
std.debug.print("Piece: Col: {} Row: {}\n", .{ safe_piece.col, safe_piece.row });
|
||||
//std.debug.print("Piece: Col: {} Row: {}\n", .{ safe_piece.col, safe_piece.row });
|
||||
//std.debug.print("Bag: {any}\n", .{self.bag.contents});
|
||||
|
||||
var key_state = SDL.SDL_GetKeyboardState(null);
|
||||
|
||||
|
|
|
@ -4,65 +4,33 @@ const Piece = @import("piece.zig");
|
|||
pub fn moveRight(grid: Grid, piece: Piece) Piece {
|
||||
var new_piece = piece;
|
||||
new_piece.col += 1;
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
return piece;
|
||||
}
|
||||
}
|
||||
if (checkCollision(grid, new_piece)) {
|
||||
return piece;
|
||||
} else {
|
||||
return new_piece;
|
||||
}
|
||||
return new_piece;
|
||||
}
|
||||
|
||||
pub fn moveLeft(grid: Grid, piece: Piece) Piece {
|
||||
var new_piece = piece;
|
||||
new_piece.col -= 1;
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
return piece;
|
||||
}
|
||||
}
|
||||
if (checkCollision(grid, new_piece)) {
|
||||
return piece;
|
||||
} else {
|
||||
return new_piece;
|
||||
}
|
||||
return new_piece;
|
||||
}
|
||||
|
||||
pub fn moveDown(grid: Grid, piece: Piece) Piece {
|
||||
var new_piece = piece;
|
||||
new_piece.row += 1;
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
new_piece.row -= 1;
|
||||
new_piece.dropped = true;
|
||||
return new_piece;
|
||||
}
|
||||
}
|
||||
if (checkCollision(grid, new_piece)) {
|
||||
new_piece.row -= 1;
|
||||
new_piece.dropped = true;
|
||||
return new_piece;
|
||||
} else {
|
||||
return new_piece;
|
||||
}
|
||||
return new_piece;
|
||||
}
|
||||
|
||||
pub fn drop(grid: Grid, piece: Piece) Grid {
|
||||
|
@ -79,3 +47,14 @@ pub fn drop(grid: Grid, piece: Piece) Grid {
|
|||
|
||||
return new_grid;
|
||||
}
|
||||
|
||||
fn checkCollision(grid: Grid, piece: Piece) bool {
|
||||
for (piece.structure) |_, y| {
|
||||
for (piece.structure[y]) |_, x| {
|
||||
if (piece.structure[y][x] and ((@intCast(i32, x) + piece.col > Grid.ncolumns - 1) or (@intCast(i32, x) + piece.col < 0) or (@intCast(i32, y) + piece.row > Grid.nrows - 1) or (!grid.cells[@intCast(usize, piece.row + @intCast(i32, y))][@intCast(usize, piece.col + @intCast(i32, x))].free))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
const SDL = @import("sdl2");
|
||||
|
||||
const Bag = @import("bag.zig");
|
||||
const Piece = @import("piece.zig");
|
||||
|
||||
pub fn render(renderer: *SDL.SDL_Renderer, bag: Bag, cell_size: i32, pos_x: i32, pos_y: i32) void {
|
||||
for (bag.contents[0..5]) |_, i| {
|
||||
if (bag.contents[i]) |piece_type| {
|
||||
Piece.init(piece_type).render(renderer, cell_size, pos_x, pos_y + @intCast(i32, i) * cell_size * 4);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 1656603169529970766 91a8da097c7c1645ba2a6217a5171c4e /home/strange/Documentos/Projectes/Programació/usg/zig-cache/options/kh59p23UXKId3bWMadeQ0Yp6cv2kATA4qPk2nBQ2q_3IsG9JTjKRYS1YxdIMHL6s
|
||||
32 36968726 1656632837179949947 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,15 +21,17 @@
|
|||
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 1656603169529970766 91a8da097c7c1645ba2a6217a5171c4e /home/strange/Documentos/Projectes/Programació/usg/zig-cache/options/kh59p23UXKId3bWMadeQ0Yp6cv2kATA4qPk2nBQ2q_3IsG9JTjKRYS1YxdIMHL6s
|
||||
32 36968726 1656632837179949947 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
|
||||
2399 36570413 1656603168279970768 d4d51b79488448e23f39e4e84787d496 /home/strange/Documentos/Projectes/Programació/usg/src/game.zig
|
||||
2649 36570091 1656629353399957256 523c3a7aeb39f3ee57d067e56613429e /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
|
||||
1044 36570092 1656602936009971256 dd01945b52fd457a1747c416231ca4d8 /home/strange/Documentos/Projectes/Programació/usg/src/bag.zig
|
||||
1614 36573582 1656632835659949950 ac671c1b9b9d285f3bf62118c3faafb9 /home/strange/Documentos/Projectes/Programació/usg/src/bag.zig
|
||||
3496 36570196 1656599489839978486 b265adb85e30c82ae22f0bb2d5a8dd49 /home/strange/Documentos/Projectes/Programació/usg/src/piece.zig
|
||||
16192 36968506 1655270162000000000 744a2bb13e662f350a196780c9fbcad2 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/rand.zig
|
||||
3105 36968346 1655270162000000000 412e5ff0bcf84571f173caa8acab5393 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/rand/Xoshiro256.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
|
||||
|
@ -38,7 +40,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
|
||||
2668 36570091 1656434160779985462 f3c4e20f05debba69b5c21f77e7e35f9 /home/strange/Documentos/Projectes/Programació/usg/src/movement.zig
|
||||
1819 36570413 1656628035579960021 a4d209e3de383732caf3ac9ebb5ae6fe /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
|
||||
|
@ -57,12 +59,13 @@
|
|||
7395 36968424 1655270162000000000 fe0e04bcd58863e97993f2137b09a3ca /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/dwarf/AT.zig
|
||||
50955 36968340 1655270162000000000 89afffa3bc72846bab2c1ed13b0672f4 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/fs/path.zig
|
||||
7889 36968577 1655270162000000000 562fc4eee397a5037d16dffd5e048cd4 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/os/linux/errno/generic.zig
|
||||
12529 36968527 1655270162000000000 2e8a443dd5c55df11dc0ea7ce5b52bf5 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/time.zig
|
||||
663 36569831 1656078583710029346 74acba9445f0ebf3147733e83d02a6d1 /home/strange/Documentos/Projectes/Programació/usg/src/color.zig
|
||||
412 36573579 1656629341849957280 ed9e5a84332a53905bd9184ccb8d55ab /home/strange/Documentos/Projectes/Programació/usg/src/preview.zig
|
||||
932 36968507 1655270162000000000 b4c3b5276113dacf836baae9d9f94c34 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/event.zig
|
||||
68808 36968298 1655270162000000000 1428e5a8bcb96a47d038d40214331d68 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/event/loop.zig
|
||||
32411 36968509 1655270162000000000 a25cf125aa2af22a7263d8104b549cb9 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/unicode.zig
|
||||
44495 36968491 1655270162000000000 bfcc36624c8f3cb045fc58558f6aa79d /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/process.zig
|
||||
12529 36968527 1655270162000000000 2e8a443dd5c55df11dc0ea7ce5b52bf5 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/time.zig
|
||||
76200 36968550 1655270162000000000 35261e8277652ce34bf8d0d6761b4bab /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/os/linux/syscalls.zig
|
||||
1174 36968430 1655270162000000000 1a71f479a0d0d95f1b0d960381e246ee /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/hash.zig
|
||||
10122 36968518 1655270162000000000 6372ee29c64a8e176138e879d43eb625 /home/strange/Documentos/Projectes/Programació/usg/zig/lib/std/hash/wyhash.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.
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.
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.
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.
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.
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.
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.
Binary file not shown.
BIN
zig-out/bin/usg
BIN
zig-out/bin/usg
Binary file not shown.
Loading…
Reference in New Issue