请阅读gourds
分支上示例项目代码。该项目运行后会打开一个图形化窗口,并在其中绘制内容。
gourds
分支的图形化绘制部分采用了github上开源的AsciiPanel。因对其进行了一点点修改,故直接将其源代码放在asciiPanel
目录下(此部分代码可不阅读)。AsciiPanel模拟了早期计算机终端的现实方式,因其所具有的复古风,还有基于它所实现的Roguelike类型RPG游戏,如Roguelike
分支上项目所示。
请仔细阅读gourds
分支项目代码,理解其运作原理,重点理解泛型相关代码,包括:
Tile
类型Thing
类型中的Tile<? extends Thing> tile
属性Sorter
类型、其子类BubbleSorter
以及Comparable
接口
请新建matrix
分支,并在该分支上仿照示例代码,实现妖精方阵排序。
注意:请将方阵定义为一个二维数据结构,而不是定义为一位数组后分行输出(W02中很多人这样偷懒)。请谨记用代码模拟现实。
代码运行结果请截屏发QQ群内。
请新建maze
分支,并在该分支上实现迷宫生成算法,然后实现葫芦娃走迷宫(可以用算法指挥葫芦娃走出迷宫,或手工操作键盘指挥葫芦娃走迷宫)
迷宫生成算法可直接用https://github.com/oppenheimj/maze-generator。
切记,本课程作业的重点不是算法实现,而是正确写出面向对象风格的代码。
代码运行结果请截屏发QQ群内。