【2020中大中级实训】Part4:中级实训总结


1、阶段划分

  1. Stage 1 (熟悉GridWorld基本架构以及Java编程语言)
  2. Stage 2 (完成Par2 - Part5对GridWorld的扩展)
  3. Stage 3 (接触图像处理,学习并DP算法,BP算法,认识并设计估价函数)

2、分阶段实训任务总结

Stage 1
详见阶段一:vi,java,ant 和Junit 的自学报告总结博客https://blog.csdn.net/jessiaflora/article/details/109013117

  1. Vi的学习总结
    Vi是最初代的编辑器,虽然其已经达到了一个编辑器该有的功能,但是由于我习惯了VScode,所以在编辑代码时感觉到没有封装集成好的环境那么优秀,不过既然是学习新的语言编程,那么从简单的开始改变也是对自己耐心的一种锻炼。
  2. Java的学习总结
    庆幸的是去年选修了JAVA课程学习过相当一部分Java的知识(但是由于疫情影响在家闲了半年基本上全部忘干净了,不过有经验捡起来还是比较容易的),再经过这一个多月的学习巩固,感觉Java跟C++虽然比较接近,都是属于面向对象的编程,但是细枝末节差异十分明显,比如Java中并不存在指针这个东西,所以在寻址时候就只能按照数组或者容器的地址来进行一次次的顺序访问;同时Java中提供的已定义好的函数也是用法与C++有所不同,也是需要注意。总体来说,学习一门新的语言还是多实践编程打代码比较合适,如果只是单单的一味看书,并不能达到比较好的层次的要求。
  3. Ant学习总结
    对Ant的学习就比较懵逼,基本上是从零开始,虽然本学期所给的环境里已经安装配置好了Ant,但是网上的资料着实有限,最后还是在一个偏僻的论坛里明白了Ant是一种基于XML的指令集,使用Ant预制写好需要进行的编译流程,系统会根据此集合运行调试。在之后Junit和Ant的同时使用中也遇到了大麻烦,因为环境配置问题,Junit所在的文件夹始终无法调用,在咨询了已经完成的同学后对环境配置进行了进一步修改最后终于调试运行成功。
  4. Junit学习总结
    Junit是一个基于JDK基础并且属于-o -j等附加属性的命令选项,并不是一个需要配置环境变量之类的编译工具。这部分的学习也是去年选修Java课程学习的盲区,依然是在论坛搜索其他人的问题解决,最后在CSDN一个学长的博客和菜鸟教程有关Junit的教程里按照步骤一步一步编写出代码。理解到在本次实训和以后的使用中Junit基本上是作为Test工具用于测试代码是否符合预期要求的一个工具。但是在编译过程中出现了3中提到的jar包无法调用的大问题,感谢同学的帮助,这部分在规范了调用指令的使用成功运行后,成为了之后我实训编程过程中最熟练的一步。
  5. SonarQube学习总结
    SonarQube是一个用于代码质量管理的开源平台,用于管理源代码的质量。这部分学习在参考的学长的博客里丝毫没有提到,搜索整个CSDN都没有找到详细的教程,最后依然是在菜鸟论坛上找到了相关的问题和操作步骤。其重点是设置 SONAR_HOME,SONAR_RUNNER_HOME 环境变量,并将 SONAR_RUNNER_HOME 加入 PATH ,其次就是运行之前要先进入SONAR_HOME目录启动sonarQube,然后返回需要执行的代码目录start运行,在使用后同样需要记得stop结束运行。本次实训中主要是使用sonarQube来检查代码的规范性。
  6. GridWorld项目的初步了解
    GridWorld是本次实训中的主体、近乎于全部的实验基础,主要为一个存在于网格中的游戏,网格中储存一些或者固定不动(岩石)或者作为主对象需要移动(bug)的对象。在之后的Stage2和Stage3的part2的编程练习中主要是调用其封装好的GridWorld.jar包。

Stage 2
这一阶段主要是基于GridWorld对Bug以及Actor对象属性进行行为扩充,分别是让一个bug走圆形、走中心对称图形、跳着走、走Z字,以及替换图标踢开岩石等等,这一部分更多是让我们熟悉java语言中接口跟继承的用法,并没有太多的涉及到算法上的知识。虽然助教说可以使用eclipse这个软件,但是由于我自己已经习惯直接在终端上敲指令,所以并没有直接使用,而是作为代码编写的辅助工具用来调整代码格式的。
总的来说,虽然这一部分的小项目比较多,但是编程难度并没有特别大,基本上都是类的接口继承。除了Part3的设计文档和测试文档从没写过类似的,遇到了不小困扰外,还有在Part5的地图扩展遇到了麻烦,这一部分实在无奈,可能是由于终端直接指令无法同时调用多个jar包的问题(虽然使用了-Djava.library.path替代-classpath指令(参考博客:java 中PATH, -classpath, -Djava.library.path的区别),并把所要调用的所有jar包放进一个名为lib的文件夹里,但是不知道为什么依然无法调用任何一个jar),最后使用了eclipse的环境重新编译运行才得以实现。

Stage 3
第三阶段是中级实训的难点,主要是考察我们的算法掌握和使用能力,比如深搜与宽搜算法,这两个算法在数据结构的相关课程里学过,主要是用于解决图论与树的问题。

  • Part1是图像处理,主要是对bitmap的使用的掌握:理解Bitmap文件结构,并使用二进制流读取Bitmap文件,然后在三个色彩通道进行操作。有关图像处理的算法代码编写,由于我本学期恰好也选修了计算机视觉,恰巧不久前刚刚编写过c++版本的图像处理,所以对bmp图像的导入导出使用调参修改是非常熟练的。至于有关ui的部分,在第一阶段的calculator的编写中已经有学习使用过也不算问题,最后是Junit的检测,感谢第一阶段的反复试错,这一部分也不难。不得不称赞java语言确实是一门比较全能的语言,自带的许多API可以顺利的帮助我们完成许多繁琐的任务。
public class MyImageIO implements IImageIO {
   

    private static final int TWO = 2;
    private static final int THREE = 3;
    private static final int FOUR = 4;
    private static final int ALPHA = 0xff;

    public Image myRead(String filepath) {
   
        try {
   
            byte fourBytesArr[] = new byte[FOUR];
            byte twoBytesArr[] = new byte[TWO];
            byte rgb[
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值