中山大学中级实训 - GridWorld
中山大学实训
敬告
本博文仅供参考使用,不鼓励直接复制该博文所引用的代码,鼓励大家在理解引用代码的情况下编写出属于自己的代码。
此文章尚在编辑中
前几天结束了中山大学的中级实训,感觉还是按照进度,并没有像各个大神一样超前完成工作……不过最后还是顺利地结束了~~话不多说,马上来正题~
关于GridWorld
什么是GridWorld
关于实训
关于编程环境
这次实训全程用Java进行编程,虽然我相信大家在之前很少有接触过Java,但是请大家放心,Java其实并没有那么难,基本的控制结构是没有变化的,而需要的程序功能都可以参考文档来找到。
这次是会用到的工具有:
- vi/vim - 一个高效编程的软件
- Ant - Java的makefile
- Junit - Java的单元测试
- SonarQube - 代码检查(可以用于其他代码质量检测的神器!)
- Eclipse - java的IDE(选用, stage2和stage3并没有强制用ant来编译,可以提高编译和debug的效率)
实训任务简介
来自于我的github的readme,所以是纯英文的(个人习惯),而实训的stage1和stage2的文档也是全英文的,所以最好适应一下。
- stage1 - project beginning
- HelloWorld - first java program, learn about ant, junit.
- Calculator - a simple java program, learn about ant, sonarQube
- stage2 - basic tasks
- Part2 - gets familiar to the GridWorld program
- CircleBug - extands the Bug class, making a bug trace an octagon.
- DancingBug - extands the Bug class, making a bug trace a certain trace the programmer has set.
- SpiralBug - extands the Bug class, making a bug drop flowers in a spiral pattern
- ZBug - extands the Bug class, making a bug trace the shape for only once.
- Part3
- Jumper - group activity. a jumper can move forward two cells in each move. It "jumps" over rocks and flowers
- Part4
- ModifiedChameleonCritter - extands the Critter class. darkens itself if no neighbors actor.
- ChameleonKid - extands ModifiedCahmeleonCritter. a chameleon kid only modifies the actor in front of or at the back of itself.
- RockHound - extands the Critter class. removes rocks in its neighbors.
- BlusterCritter - extands the Critter class. a blust critter has a courage. if the number of critters in its neighbors is less than ` its courage, it brightens itself. else it darkens itself.
- QuickCrab - extands the CrabCritter class. moves 2 steps at an act if possible.
- KingCrab - extands the CrabCritter class. if any actor is in front of a king crab, the crab will push them out.
- Part5
- SparseGrid - extands the Grid class. contains 3 tasks.
- implements the SparseBoundedGrid class using a sparse array.
- implesments the SparseBoundedGrid2 class using a hashmap.
- implements the UnboundedGrid2 class using a 2-dimension array.
- stage3
- ImageProcessing - implements the IImageIO interface and the IImageProcessor by oneself.
- MazeBug - uses DFS algorithm to implements a maze bug. framework is provided.
- N-puzzle - uses BFS algorithm to solve an N-puzzle problem. framework of Jigsaw is provided.
如需快速跳转 请点击右上角的目录图标。
stage1 项目启动
配置好Java环境和工具,并且完成HelloWorld和一个简单的Calculator。
stage2 基本任务
熟悉GridWorld里面的各个类,并且对各个类进行扩展。
如circleBug, 就是让原来向右转两次变成转一次,画出一个正八边形(octagon)就可以了。
stage3 扩展任务
- 给定图片,要自己用二进制流解析bmp图片的格式读取,用已有的接口写入新文件;
- 将图片分解成RGB和伪灰度图。
使用深度优先搜索算法搜索出一条能走出迷宫的路径。
这里利用了Stack<ArrayList<Location>>
的结构是为了能够按照树的分支来遍历迷宫和设置岔路口转某一方向的的概率。
广度优先搜索算法解决8数码问题和A*算法优化搜索解决24数码问题。