diff options
Diffstat (limited to 'examples/cgol.sloth')
| -rw-r--r-- | examples/cgol.sloth | 150 |
1 files changed, 66 insertions, 84 deletions
diff --git a/examples/cgol.sloth b/examples/cgol.sloth index db578f9..3700395 100644 --- a/examples/cgol.sloth +++ b/examples/cgol.sloth @@ -1,76 +1,66 @@ fn populate() [Int] { - # Initialize life vector - var life: [Int] = ["Hello World"]; - vpopi(life); + # Initialize life vector + var life: [Int] = [0]; + vpopi(life); - # Fill the vector with random values - var i: Int = 0; - while i < 57600 + # Fill the vector with random values + var i: Int = 0; + while i < 57600 { - var n: Int = randGen(0,1); - vpushi(life, n); - i = i+1; - } + var n: Int = randGen(0,1); + vpushi(life, n); + i = i+1; + } - return life; + return life; } -fn coord(x: Int, y: Int) Int +fn coord(x: Int, y: Int) Int { - var res: Int = -1; - # Calculate index based on coordinates - if x >= 0 && y >= 0 + var res: Int = -1; + # Calculate index based on coordinates + if x >= 0 && y >= 0 { - res = y*240+ x; - } - # if coordinate is invalid, return -1 - return res; + res = y*240+ x; + } + # if coordinate is invalid, return -1 + return res; } fn cval(x: Int, y: Int, life: [Int]) Int { - # Check to make sure index exists before returning - var res: Int = 0; - var c: Int = coord(x, y); - if c >= 0 - { - res = vgeti(life, c); - } - return res; + # Check to make sure index exists before returning + var res: Int = 0; + var c: Int = coord(x, y); + if c >= 0 { + res = vgeti(life, c); + } + return res; } -#fn gol(total: Int, alive: Bool) Int -#{ - - #if !alive && total == 3 - #{ - #return 1; - #} - #if alive && () - #return 0; - #} + fn update(life: [Int], new: [Int]) { - # Iterate through life - for x in 0..64 + # Iterate through life + for x in 0..64 { - for y in 0..240 + for y in 0..240 { - # Calculate total score around selected cell - var total: Int = + # Calculate total score around selected cell + var total: Int = cval(x-1, y-1, life) + # Top Left - cval(x-1, y , life) + - cval(x-1, y+1, life) + - cval(x , y-1, life) + - cval(x , y+1, life) + - cval(x+1, y-1, life) + - cval(x+1, y , life) + + cval(x-1, y , life) + + cval(x-1, y+1, life) + + cval(x , y-1, life) + + cval(x , y+1, life) + + cval(x+1, y-1, life) + + cval(x+1, y , life) + cval(x+1, y+1, life); - # Apply game of life rules - + # Apply game of life rules + var idx: Int = coord(x, y); if cval(x, y, life) == 1 @@ -95,44 +85,36 @@ fn update(life: [Int], new: [Int]) vseti(new, idx, 0); } } - } - } + } + } } -fn display(life: [Int]) -{ - # Iterate through life - for x in 3..62 - { - for y in 0..240 - { - termpos(x-3, y); - if cval(x-3, y, life) == 1 - { - print("█"); - } - else - { - print(" "); - } - } - } +fn display(life: [Int]) { + # Iterate through life + for x in 3..62 { + for y in 0..240 { + termpos(x-3, y); + if cval(x-3, y, life) == 1 { + print("█"); + } else { + print(" "); + } + } + } } -fn main() Int -{ - # Populate - var life: [Int] = populate(); - display(life); - curshide(); - # Play forever - while true - { +fn main() Int { + # Populate + var life: [Int] = populate(); + display(life); + curshide(); + # Play forever + while true { var new: [Int] = populate(); - update(life, new); - display(new); + update(life, new); + display(new); life = new; - # wait(100); - } - return 0; + wait(100); + } + return 0; } |
