From 51024e1d06b2ec299d39282d5a466d70c367dec3 Mon Sep 17 00:00:00 2001 From: xamidev Date: Sat, 10 Aug 2024 22:58:56 +0200 Subject: [PATCH] Add: conway game (basic) but flickers? --- com1.out | Bin 227 -> 1907 bytes iso/boot/kernel.elf | Bin 30876 -> 35236 bytes src/kernel/kmain.c | 2 +- src/kernel/shell.c | 3 +- src/libc/crypto.c | 19 ++++++ src/libc/crypto.h | 5 ++ src/programs/conway.c | 132 ++++++++++++++++++++++++++++++++++++++++ src/programs/conway.h | 18 ++++++ src/programs/misc.c | 2 +- src/programs/programs.h | 1 + 10 files changed, 179 insertions(+), 3 deletions(-) create mode 100644 src/programs/conway.c create mode 100644 src/programs/conway.h diff --git a/com1.out b/com1.out index 10c4e1d7383e1041f28ad6a13f8547fed8f32526..70ff6a0700ddc32bf3c75b33ab72989adadd86e0 100644 GIT binary patch literal 1907 zcma!cadirHk5ynOPA$qz%uz_r&&x|qF3HT#Q%Ef?NlePgEY3(x;bMsP^mFqED$C5v zECH&^tV&H$aCZq&NX;uL%1kZBuE5hJ1cyX$5H2l2fk-k2oXGZ-Wag$8DP$z(rR1a* wAq+-Ul$~0cl%H6Xf}{@SMWD0GQi1wL`H(0d4Uf_EFq$7m%Y)JKkgnw+0OHXS+yDRo delta 6 Ncmey&_n2|QV*m?~16cq7 diff --git a/iso/boot/kernel.elf b/iso/boot/kernel.elf index 8e5c86cab238ada0cbd3bf2c0c940666680dad14..ff425bf4c573406508793ff126674b9e2becd198 100755 GIT binary patch delta 12123 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 0 && ni < X && nj >= 0) + { + if (grid[ni][nj] == LIVE) live_neighbors++; + } + } + } + return live_neighbors; +} + +void grid_new_generation(unsigned char grid[X][Y], unsigned char temp[X][Y]) +{ + for (int i=0; i SOUP_PROB ? LIVE : DEAD; + } + } +} + +void program_conway(int argc, char* argv[]) +{ + clear(); + unsigned char grid[X][Y] = {0}; + unsigned char temp[X][Y] = {0}; + + if (argc == 1) + { + soup(grid); + } else if (argc == 2 && strcmp(argv[1], "-g") == 0) { + grid[1][2] = LIVE; + grid[2][3] = LIVE; + grid[3][1] = LIVE; + grid[3][2] = LIVE; + grid[3][3] = LIVE; + } else if (argc == 2 && strcmp(argv[1], "-l") == 0) { + grid[10][3] = LIVE; grid[10][4] = LIVE; grid[10][5] = LIVE; grid[10][6] = LIVE; + grid[11][2] = LIVE; grid[11][6] = LIVE; + grid[12][6] = LIVE; + grid[13][2] = LIVE; grid[13][5] = LIVE; + } + + print_grid(grid); + puts("generation 0"); + for (int i=1; i