SYSU中级实训总结

实训总结报告

阶段一

阶段一主要是为实训项目做基本的技术准备,学会使用Vi, JAVA, Ant 和 Junit, 以及熟悉GridWorld的使用,并完成指定的任务。

vi使用

  1. vi分为三种状态,分别是命令模式、插入模式、底行模式,命令模式下可控制屏幕光标的移动,字符或行的删除;插入模式下才可以做文字输入;低行模式下可将文件保存或退出vi,或查找字符串等。
  2. 进入vi,在系统提示符号输入vi,后跟文件的名称,即可计入vi编辑该文件,如$vi myfile。
  3. 进入vi后,默认是命令模式,若要编辑文字,先按一下[i]进入插入模式,才可以编辑。
  4. 若要从插入模式转为命令模式,则按一下[esc]
  5. 若要退出vi,即按一下[:]进入底行模式,如:w filename是以filename文件名保存,:wq即保存并退出,:q!即不保存退出

java环境变量配置

  1. 首先去官网下载[java开发工具包JDK][1],选择对应的系统激进型下载
  2. 安装完成后,右击“我的电脑”,点击“属性”,选择“高级系统设置”,添加下列参数

变量名:JAVA_HOME

变量值:C:\Program Files (x86)\Java\jdk1.8.0_91 // 要根据自己的实际路径配置

变量名:CLASSPATH

变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //记得前面有个"."

变量名:Path

变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

Ant的使用

Ant是java项目的构造工具,利用它可以方便地编译运行java项目程序,使用方法为在项目的根目录下建立一个build.xml文件,然后在该目录下输入Ant命令,即可构造程序。一个简单的编译运行Helloworld程序的build文件如下所示

    <?xml version="1.0"?>
    <project name="javacTest"default="compile" basedir=".">
            <target name="clean">
                 <delete dir="build"/>
            </target>

            <target name="compile" depends="clean">
                 <mkdir dir="build/classes"/>
            <javac srcdir="src" destdir="build/classes"/>
            </target>
    </project>

junit的使用

junit是一个单元测试工具,这对于分析程序功能和检查错误具有非常打的作用,在eclipse中可以方便地建立junit测试,如下是一个简单的junit测试阳历代码,用来检测程序的输出是否为helloworld

        import static org.junit.Assert.*;
        import org.junit.Test;
        public class HelloWorldTest {
            public HelloWorld helloworld = new HelloWorld();
            @Test
            Public void testHello() {
             helloworld.hello();
             assertEquals("Hello World!", helloworld.getStr());
            }
        }

阶段二

阶段二主要是实现各种基类的拓展类

Part2

实现CircleBug、SpiralBug、ZBug、DancingBug的代码编写

Part3

实现jumper类的编写

Part4

实现ModifiedChameleonCritter、ChameleonKid、RockHound、BlusterCritter、QuickCrab、KingCrab的编写

Part5

实现SparseBoundedGrid、hashBoundedrid等类的编写

这些类基本都是继承了题目给出的基类,比如Part2代码的基类是Bug,而我们要实现的只是在Bug的基础上添加各种不同的功能,比如circleBug功能是运动路线是一个圆形。其它Part也是类似地在原有基类上进行修改增加功能,所以代码的实现并不复杂。具体的代码可以看上传的代码包

阶段三

Imageocessing

这道题是要我们实现一个图片处理器,该处理器能读取和写出图片,还能将图片变为灰度、红、黄、蓝的色彩。要实现这些共呢个,必须搞清楚bmp图片的格式和它的编码方式。

  1. 位图头: 保存位图文件的总体信息。
  2. 位图信息: 保存位图图像的详细信息。
  3. 调色板: 保存所用颜色的定义。
  4. 位图数据: 保存一个又一个像素的实际图像。

其中,位图信息中保存了图片的长和宽,而位图数据则是保存了图片的像素值矩阵。在读取这个图片时,我们着重获取这三个信息。然后调用java提供的API创建Image,这样图片就可以显示了,具体代码见代码包。

这道题还要求我们把图片变为灰度图片,这利用到一条公式I = 0.299 * R + 0.587 * G + 0.114 *B,其中R,G,B分别为红、绿、蓝通道的颜色值。在前面的图片信息中位图数据保存的就是一个个RGB像素值,我们每次从位图数据读取3个值,分别为BGR,这样就可以或得灰度值,再利用java提供的API,将灰度值传入,即可将图片转为灰度图片。具体代码见代码包。

MazeBug

利用深度优先算法,实现走迷宫找出口的功能,

深度优先搜索用栈(stack)来实现,整个过程可以想象成一个倒立的树形:
1、把根节点压入栈中。
2、每次从栈中弹出一个元素,搜索所有在它下一级的元素,把这些元素压入栈中。并把这个元素记为它下一级元素的前驱。
3、找到所要找的元素时结束程序。
4、如果遍历整个树还没有找到,结束程序。

具体代码见代码包

nuzzle

利用广度优先算法,实现拼图功能

广度优先搜索使用队列(queue)来实现,整个过程也可以看做一个倒立的树形:
1、把根节点放到队列的末尾。
2、每次从队列的头部取出一个元素,查看这个元素所有的下一级元素,把它们放到队列的末尾。并把这个元素记为它下一级元素的前驱。
3、找到所要找的元素时结束程序。
4、如果遍历整个树还没有找到,结束程序。

猜你喜欢

转载自blog.csdn.net/qq_36272282/article/details/82428269