标签:玩家 改进 技术 tco 最大的 部分 初始化 固定 运用
1.首先在写Block类过程中,我先把Block类分成了Block.h
和Block.cpp
:
Block.h
中编写了Block类的雏形,包括私有数据成员以对应成员函数的声明;Block.cpp
中主要是对Block.h
中成员函数进行定义;github项目地址
中可查看: Block(); //初始化随机数
void RandBlock(); //随机生成方块
void TurnBlock();//旋转方块: 顺时针
int block[4][4];//存储生成方块
int getColor(); //获取当前颜色
void Block_to_block(int BlockType_form_[][4]); // 方块拷贝到block数组
void ChangeBlock(int BlockType_form_1[][4],int BlockType_form_2[][4],
int BlockType_form_3[][4],int BlockType_form_4[][4]); //配合TurnBlock(),进行方块的旋转
Block()
这个函数是与上次代码修改很大的地方,在上次代码中,我采用的是在构造函数中将存在的18种数组进行数据初始化,而考虑到如果我们多次使用Block类,就需要多次对这十几种二维数组进行初始化,会使程序内存增大,效率降低。所以,这次把所以数组都改成了static
形式,并且采用的直接赋值的方式打出数组内的值,而构造函数里面则是放了srand((int)time(0));
播下种子初始化随机数,也解决了上次留下的问题;RandBlock()
随机生成方块的函数,在测试中我们发现,按照之前定义的数组变量,因为有些方块旋转后的形态和之前一样,我就没有重新定义数组,但是这样会导致:RandBlock()
中重复赋值操作写成了一个函数Block_to_block
,在随机生成函数中调用,有效的解决了上面两点问题;TurnBlock()
主要的差别就是将原先的逆时针顺序写成了顺时针,增加了游戏体验感,并且搭配ChangeBlock
函数,使其中相同操作,通过调用函数实现,简化了代码;getColor()
这个函数主要是与interface类中的函数进行结合,我们原先是打算在随机生成方块的同时,也随机生成颜色,但是这样会显得程序不够简洁,页面也不是很舒服,最后我们就决定采用每一类型的方块固定一种颜色,通过调用此函数,interface类中的函数可以获取Block类对象中方块的color值进而赋予不同的颜色github项目地址
中可查看、阅读,当然也知道代码中可能还存在很多需要改进的地方,希望大家能多交流指教!1.在这次合作写游戏的过程中,认识了很多以前从来没有见过的头文件以及相应的函数,这是我觉得收获最大的地方。虽然其实很多地方写的都有参考网络上的代码,但是在参考中学习了很多知识。最重要的一点就是,自己开发游戏也好或者软件也好,感觉都和平常在PTA上的练习有很大的不同,特别是多文件处理方法,这一点也是我第一次使用的,也希望在今后学习中能够不断加强完善自己;
2.在合作过程中,我们采用github提交自己负责的代码,通过讨论、测试不断修改体会到了合作的重要性以及快乐,这是一种新的模式,从来没有接触过的模式,我相信在将来工作中也会有这样的情况,大家负责一部分,然后把共同组合成一个大程序,这种感觉真的无比的满足和快乐。最重要的是,在负责自己的代码同时,也可以看看别人负责部分的代码,不断学习,学习他们是怎样进行处理和调试的,这对我启发很多,也是我在他们身上学到的最重要的一点;
3.在测试修改代码中有过长期的卡壳,但是我们最终都做出来了,真的非常满足和自豪,还发给朋友们看了我们制作的游戏。没有想到,我们平常只会玩游戏而第一次学着做游戏,过程虽然很艰辛,但是最终成果却让我满足和自豪;
4.学习了C++面向对象的知识,再结合此次作业,我对比了c与c++方面的不同,也看到了c++在编写大程序中的好处以及方便性,希望能够在今后学习中,或者在以后自己开发过程中,能继续运用这个思想!
最后写写在这次开发过程中还存在着一些问题以及不满意的地方:
1.首先是代码不够简洁,由于ddl很快就到了,所以就没有再进一步进行优化,可能程序效率就没有那么的高,我想再之后可以将比如在类中定义的私有数据如Type、Form等能整合到方块数组中,使他们封装性更强,代码也更加简洁。因为如果改动的话,在Play类中碰撞部分就会有很大改动,这点这次就没有进行调整;
2.因为初始化随机数我们是采用time.h
中的srand((int)time(0));
语句进行的,所以双人模式下玩家在刚刚开始的前两个方块会相同,因为时间相同,所以需要进一步优化调整。原本上次想去试试助教给的建议,但是搜索完之后还是没怎么弄明白,所以就此作罢;
3.由于学习完继承相关的知识,一直想在方块中得到实现,但是由于我们采用列举出所有28种方块,因此无法用到继承方面的知识,这是感觉很遗憾的地方,也看到了其他组有的同学运用继承的知识写,想在今后学习中也能使用继承,而不仅仅限于做题。
标签:玩家 改进 技术 tco 最大的 部分 初始化 固定 运用
原文地址:https://www.cnblogs.com/lvhang/p/13092348.html