程序代写代做 game 1.如果细胞现在活着,并且有2/3个相邻细胞活着,这个细胞就可以活到下一轮 2.如果一个细胞现在死了,并且3个邻居活着,这个细胞下一轮变成活的 3.除此之外,这个细胞下一轮都会死

1.如果细胞现在活着,并且有2/3个相邻细胞活着,这个细胞就可以活到下一轮 2.如果一个细胞现在死了,并且3个邻居活着,这个细胞下一轮变成活的 3.除此之外,这个细胞下一轮都会死
例子: .是死的,*是活的
………
………
..***….
从上到下是0到n排,从左到右0到n列。 不限排数, 限制一共512列。 1.补全在文件gol.h里面的 struct universe(定义细胞的画布,和需要追踪的数据),​不要在 gol.h里加任何除此之外的东西。
2.创建一个gol.c,写以下的function: 1. read_in_file()
2. write_out_file() 将被指向的universe的内容从外部指针文件写进文件
3. is_alive()对单个细胞,现在活着返回1死了返回0
4. will_be_alive() 对单个细胞,下一轮将活着返回1死了返回0,默认跑出universe的细
胞都将死了
5. will_be_alive_torus() 对单个细胞,下一轮将活着返回1死了返回0,假设环形拓扑 6. evolve() 实现从上一状态到下一状态的变化,
7. print_statistics()
3.
借助已经提供的gameoflife.c,实现一个命令行程序gameoflife来使用你的library 。确保你的程序使用了gol.h里的function,而不是直接操作universe结构。
命令: • -i input_filename ​从指定文件读取Universe的初始样子。如果没有的话,则应 让用户输入
• -o output_filename
• -g number_of_generations
• -s 打印2.7中的统计数据 (print_statistics)
• -t 来使用环拓扑,如果没有选择这个,默认跑出universe的细胞永远死去
4.
​从文件中的文件指针中读取文件,并将Universe存储在被指向的结构
中,​必须使用动态内存分配来存储universe。​用fscanf()与%c来计算每行细胞数量。recall
fscanf()在文件结束时返回EOF。按Ctrl + D发送EOF如果键入。
决定一个单元格是存活还是死亡,例如will_be_alive或will_be_alive_torus。​注意:让使用你
​它使用功能指针规则所指向的功能来
的library的用户可以自己更改定好的规则。
​计算当前世代中存活的细胞百分比以及迄今为止所有世代中存活的
平均百分比(包括原始代)。百分比到小数点后三位,并打印到屏幕上。​格式:
32.000% of cells currently alive
10.667% of cells alive on average
不能使用任何globa变量!library必须能支持内存同时中有多个universe结构! 添加一些错
误检查,保证稳定性:格式: 遇到error 打印信息(非零的错误代码)到stderr并且退出程序
​提供了一个基本的gameoflife.c文件,该文件将忽略所有命令行选项。这可以用来帮助测试
你的library。​
​指定结果输出到的文件。如果未指定,则应在屏幕上输出。
​指定游戏中细胞进化的次数,如果未提供,则设置为5。
命令行选项可以打乱顺序使用。您必须使用switch语句来帮助您解析它们。与库一样
必须考虑进行适当的错误检查,并确保可以使用您的程序稳定。
​提供一个Makefile来编译您的库和命令行程序。在您的Makefile中,使用-Wall -Wextra
-pedantic -std = c11选项来每次调用gcc,您的代码应该在没有任何警告或错误。对每个.c文
件创建对象文件来生成你的​自动化链接​的library libgol.so 和你的命令行程序gameoflife。使用
命令make应该将您的程序编译为一个名为gameoflife的文件和您的库libgol.so都编译到当前文
件夹。运行命令make clean应该删除编译期间生成的所有文件。