本项目是开源软件开发实践课程Lab2的实践项目,主要用于GitHub操作练习。项目19实现了一个经典的"生命游戏"(Conway's Game of Life)算法,并包含相关的测试用例。
根据课程要求,个人任务是修复Solution19.java中的bug并为其建立测试类L2023112638_19_Test.java。
生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机,遵循以下四条生存定律:
- 如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;
- 如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;
- 如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡;
- 如果死细胞周围正好有三个活细胞,则该位置死细胞复活;
下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。
这是生命游戏的核心实现类,包含以下主要方法:
gameOfLife(int[][] board): 根据生命游戏规则计算下一个状态
代码中已修复的bug包括:
- 去掉了不必要的括号
- 修正了数组访问的符号使用
- 修复了条件判断中的语法问题
这是为Solution19类编写的测试类,包含以下测试功能:
-
预设测试用例自动运行:
- 标准测试用例1和2(题目示例)
- 孤独死亡规则测试
- 复活规则测试
- 单细胞网格边界测试
-
交互式测试模式:
- 用户可以自定义输入网格大小和初始状态
- 实时查看演化结果
-
编译Java文件:
javac Solution19.java L2023112638_19_Test.java
-
运行测试:
java L2023112638_19_Test
-
根据提示选择测试模式:
- 选择1:运行预设的测试用例
- 选择2:进入交互模式,自定义测试用例
测试用例设计遵循以下原则:
- 等价类划分原则:根据生命游戏的规则划分等价类
- 边界值分析:测试边界情况(如单细胞网格)
- 路径覆盖:覆盖所有可能的规则路径
本项目仅供学习交流使用,用于开源软件开发实践课程Lab2的GitHub操作练习。