aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/life.c84
-rw-r--r--examples/life.cff2
2 files changed, 1 insertions, 85 deletions
diff --git a/examples/life.c b/examples/life.c
deleted file mode 100644
index 212ece9..0000000
--- a/examples/life.c
+++ /dev/null
@@ -1,84 +0,0 @@
-#include <stdio.h>
-
-#define W 60
-#define H 40
-
-typedef unsigned char Board[W*H/8];
-static Board board;
-
-static _Bool
-get(Board *b, unsigned x, unsigned y) {
- x %= W; y %= H;
- unsigned idx = x + y * W;
- return (*b)[idx/8] & (1 << (idx % 8));
-}
-
-static void
-set(Board *b, unsigned x, unsigned y, _Bool set) {
- x %= W; y %= H;
- unsigned idx = x + y * W;
- (*b)[idx/8] &= ~(1 << (idx % 8));
- if (set)
- (*b)[idx/8] |= (1 << (idx % 8));
-}
-
-static void
-next(Board *b) {
- Board temp;
- memcpy(temp, &**b, sizeof temp);
- for (int y = 0; y < H; ++y)
- for (int x = 0; x < W; ++x) {
- #define C(ox, oy) get(&temp, x + ox, y + oy)
- int n = C(-1,-1) + C(0,-1) + C(1,-1)
- + C(-1, 0) + C(1, 0)
- + C(-1, 1) + C(0, 1) + C(1, 1);
-
- set(b, x, y, 0);
- if (get(&temp, x, y))
- set(b, x, y, n == 3);
- else if (n == 2)
- set(b, x, y, 1);
- else if (n == 3)
- set(b, x, y, 1);
- }
-}
-
-static
-void draw(Board *b) {
- printf("\x1B[H\n");
- printf("\n");
- for (int y = 0; y < H; ++y) {
- printf(" ");
- for (int x = 0; x < W; ++x) {
- if (get(b, x, y)) {
- printf("W");
- } else {
- printf(" ");
- }
- }
- printf(" \n");
- }
-}
-
-
-static void
-init(Board *b) {
- int time(void *);
- unsigned rnd = time(0);
- for (int y = 0; y < H; ++y) {
- for (int x = 0; x < W; ++x) {
- set(b, x, y, (_Bool)((rnd >> 31) & 1));
- rnd = (rnd * 134775813) + 1;
- }
- }
-}
-
-void usleep(unsigned);
-int main () {
- init(&board);
- for (;;) {
- draw(&board);
- usleep(100);
- next(&board);
- }
-}
diff --git a/examples/life.cff b/examples/life.cff
index e9c4dce..cbdd3e0 100644
--- a/examples/life.cff
+++ b/examples/life.cff
@@ -29,7 +29,7 @@ fn next(b *Board) void {
+ C(-1, 0) + C(1, 0)
+ C(-1, 1) + C(0, 1) + C(1, 1);
- set(b, x, y, get(&temp, x, y) ? n == 3 : (n == 2 or n == 3));
+ set(b, x, y, get(&temp, x, y) ? n == 3 : n == 2 or n == 3);
}
}
}