极客硬解-机器码修改重写

极客硬解
机器码修改重写

代码编写阶段

更新时间:2020-04-04 21:49点击:


代码编写阶段
 
    3月29日会议之后,后端进入了代码实现的阶段,而前端也开始也具体的界面设计。
 
    此后小组集中讨论了三次,会议的主要内容即是编写代码并且解决技术问题,每次内容不多,因此集中发布。
 
 
 
讨论时板书图    
 
    主要解决的技术问题如下:
 
后端
 
    1、Map的数据结构
 
    MapChecker方面,地图的具体存储结构为有向图,用以下存储结构实现:
 
 
 
    地图节点存储每个节点拥有的各项属性以及一个弧节点数组。
 
    而弧节点则存放弧尾和权值。
 
    上图的数据结构产生的地图示意图如下:
 
    
 
    数据结构定义代码:
 
 
class MapUnit{
    int mark;     //The sign ofh a unit
    MapEdge[] edg;   //The  connect edg
    int height;    //The height of the unit
    int is_factor;  //Judge the map status
    Factor  key;    //Store the important thing
}
class MapEdge{
    int adjedg;   //The other unit sign
    int distance;  //The length of the edg
}
 
2、序列化和反序列化
 
某些静态的对象(比如地图、人物)可以通过文件的方式存储,需要用到时再在程序中读取。要达到这样的效果,需要写入文件和读取文件的格式完全相同,且要将文件中的内容转化成在代码中有意义的量。
 
我们使用了序列化的方式进行存储,读取时,对文件进行反序列化。
 
java本身提供了序列化和反序列化的方法,详见:http://www.runoob.com/java/java-serialization.html。
 
 
3、位图/位向量
 
位图不同于计算机图形学中的位图,此处的位图指的是用于存储多个布尔型变量的数据结构。
 
这种数据结构可以充分利用小空间存储大量数据,当有大量的布尔型变量要处理时,可以申请一个int数组,每一个元素代表一个布尔型的值,通过位运算来获取或修改布尔型的值。
 
 
4、单元测试
 
每个人对自己编码的部分编写单元测试,建立对应的test类,并为单元测试单独编写main函数运行测试获取结果。
 
 
前端
 
前端主要问题在于设计,技术方面,主要有两个问题。
 
1、javascript
 
JS描述了网页的行为,因此前端在学习HTML5、CSS的同时需要学习JS的运用。
 
 
2、Ajax
 
前端与服务器的交流,使用Ajax(Asynchronous JavaScript and XML),
 
 
目前后端代码量在400-500行,前端设计进度为登陆、注册界面。
 
进度略有些慢,我们将加快进度。
 
官方微信公众号