This commit is contained in:
Crispy 2024-05-02 13:27:53 +02:00
parent 46910fa0e7
commit a784f7bb98

View file

@ -4,22 +4,14 @@ import "core:fmt"
import "core:strings" import "core:strings"
import "core:time" import "core:time"
WIDTH :: 128 WIDTH :: 64
HEIGHT :: 128 HEIGHT :: 64
AREA :: WIDTH * HEIGHT AREA :: WIDTH * HEIGHT
main :: proc() { main :: proc() {
board : [AREA]bool = --- board : [AREA]bool = ---
// board[0] = true
// board[1] = true
// board[WIDTH] = true
// for x in 4..<14 {
// board[x + WIDTH*8] = true
// }
fmt.print("\e[2J") // clear screen fmt.print("\e[2J") // clear screen
for { for {
fmt.print("\e[u") // reset cursor
print_board(&board) print_board(&board)
update_board(&board) update_board(&board)
time.sleep(time.Millisecond * 50) time.sleep(time.Millisecond * 50)
@ -27,12 +19,13 @@ main :: proc() {
} }
print_board :: proc(state: ^[AREA]bool) { print_board :: proc(state: ^[AREA]bool) {
for y := 0; y < HEIGHT; y += 2{ fmt.print("\e[u") // reset cursor
for y := 0; y < HEIGHT; y += 2 {
line := strings.builder_make() line := strings.builder_make()
defer strings.builder_destroy(&line) defer strings.builder_destroy(&line)
for x in 0..<WIDTH{ for x in 0..<WIDTH {
top := state[x + y * WIDTH] top := state[x + y * WIDTH]
bot := state[x + (y+1) * WIDTH ] bot := state[x + (y+1) * WIDTH]
c : rune c : rune
switch { switch {
case top && bot: c = '█' case top && bot: c = '█'
@ -57,14 +50,12 @@ update_board :: proc(state: ^[AREA]bool) {
px := (x + dx + WIDTH) % WIDTH px := (x + dx + WIDTH) % WIDTH
for dy in -1..=1 { for dy in -1..=1 {
py := (y + dy + HEIGHT) % HEIGHT py := (y + dy + HEIGHT) % HEIGHT
if state[px + py * WIDTH]{ if state[px + py * WIDTH] do count += 1
count += 1
}
}
} }
cell := state[x + y * WIDTH] }
new_cell := (count == 3 && !cell) || (cell && count < 5 && count > 2) cell := state[x + y * WIDTH]
new_state[x + y * WIDTH] = new_cell new_cell := (count == 3 && !cell) || (cell && count < 5 && count > 2)
new_state[x + y * WIDTH] = new_cell
} }
} }
for i in 0..<AREA { for i in 0..<AREA {