【golang】py里py气的生命游戏示例,你的第一行代码何必是hello,world
抽空折腾了一下golang,只调用fmt的话果然还是适合拿来搞生命游戏吧。
go
package main
import (
"fmt"
)
var (
count in
封校中,电脑被干掉了,从efi分区根源性报销,在这里更新一波代码,自己留着用termux写着玩,之前的代码莫名多出了一个[]
,删掉正常使用:
package main
import (
"fmt"
)
var (
num_zero [12][12]int
day int = 6
num_add int
num_reduce int
)
func main() {
life_map()
//test()
for i := 1; i <= day; i++ {
fmt.Printf("第%d次迭代结果:", i)
fmt.Println()
life_game()
}
}
func life_map() {
num_zero_x := [12]int {1,2,3,4,5}
num_zero_y := [12]int {6,7,8,9}
num_zero_neg_x := [12]int {1,2,3,4,5}
num_zero_neg_y := [12]int {6,7,8,9}
for i := 0; i < life; i++ {
if (num_zero_x[i] > 1 && num_zero_x[i] < len()
}
num_zero[3][5] = 1
num_zero[4][6] = 1
num_zero[3][6] = 1
num_zero[3][9] = 1
num_zero[4][7] = -1
num_zero[5][9] = -1
num_zero[4][8] = -1
num_zero[5][8] = -1
}
func test() {
//矩阵测试
i := 0
fmt.Println("生成生命地图:")
for i != len(num_zero) {
fmt.Println(num_zero[i])
i += 1
}
//for循环测试
run_1 := 0
for run_1 != 6 {
fmt.Print(run_1)
run_1 += 1
}
fmt.Println(run_1)
for run_2 := 0; run_2 <= 5; run_2++ {
fmt.Print(run_2)
}
fmt.Println(run_1)
//多循环测试
for j := 0; j < 5; j++ {
fmt.Printf("第%d行:", j+1)
for i := 0; i < 10; i++ {
if i > 5 {
fmt.Println(i)
break
}
fmt.Print(i)
}
}
}
func life_game() {
//初次搭建生命游戏模型
for j := 1; j <= len(num_zero)-2; j++ {
for i := 1; i <= len(num_zero)-2; i++ {
num_zero[i][j] = near_count(i, j)
}
}
i := 0
count := len(num_zero[i])
for i != len(num_zero) {
for j := 0; j < count; j++ {
if num_zero[i][j] == -1 {
fmt.Print("■")
} else if num_zero[i][j] == 0 {
fmt.Print(" ")
} else if num_zero[i][j] == 1 {
fmt.Print("□")
}
}
fmt.Println()
i += 1
}
}
func near_count(i, j int) int {
num_add = 0
num_reduce = 0
for y := -1; y <= 1; y++ {
for x := -1; x <= 1; x++ {
if (num_zero[i+x][j+y] == 1) && (x != 0 || y != 0) {
num_add += 1
} else if (num_zero[i+x][j+y] == -1) && (x != 0 || y != 0) {
num_reduce -= 1
}
}
}
if num_add == 3 {
num_add = 1
} else if num_add == 2 && num_zero[i][j] == 1 {
num_add = 1
} else {
num_add = 0
}
if num_reduce == -3 {
num_reduce = -1
} else if num_reduce == -2 && num_zero[i][j] == -1 {
num_reduce = -1
} else {
num_reduce = 0
}
return (num_add + num_reduce)
}