我罗斯方块汇报(1)

这个作业属于哪个课程 2020年面向对象程序设计 (福州大学 - 数学与计算机科学学院)
这个作业要求在哪里 我罗斯方块汇报(1)
这个作业的目标 汇报目前进度
作业正文 如下
设计者 031902231 郑霖睿 031902220 汪鸿宇 031902212 林炳灿
项目地址 https://github.com/LRlicious/wo-luo-si-fan-kuai-
其他参考文献 1.https://blog.csdn.net/qq_44220418/article/details/104745377 2.https://blog.csdn.net/to_be_better/article/details/51055813

(上篇https://www.cnblogs.com/lbc043016/p/12939867.html作废,此为dlc版本)

开发进度

目前所写的4个文件中,block类的功能已经基本实现,已经建立好了基本的模型并能通过随机数来建立方块
但其他模块进展不佳,渲染模块做了一些设计但并不知道成果如何

开发难题

一方面这些知识并不在我们之前的所学范围之内,另一方面并没有非常多的时间供我们来熟知这正确的用法。
双玩家的功能也给我们带来了不少的困难,这方面的功能还需好好琢磨如何实现
之前所设想的随机功能通过查阅资料得知了rand()而得以实现,接下来也可以把它用到之后的随机加行上面。

开发日志

我先负责的是block的设计,这里面包括了初始方块库的建立和新建方块给进行的游戏的功能的功能
首先是方块的基本组成,我是用[4][4]的数组来寄存,用0/1进行区分
之前设想的是每种方块的每种旋转方向都建立一个[4][4]的数组进行寄存,但是之后发现这样做会给之后的旋转带来影响,于是便改为[4][4][4]的数组来方便处理,并将每种方块的旋转都变为4类,只有两种或一种变化形式的方块这进行重复,以方便之后的旋转不需要分类讨论。

    Block_1[0][2][0] = 0;    //0 0 0 0
    Block_1[0][2][1] = 0;    //0 0 0 0
    Block_1[0][3][0] = 0;    //1 1 0 0
    Block_1[0][3][1] = 0;    //1 1 0 0

    Block_1[1][2][0] = 0;    //0 0 0 0
    Block_1[1][2][1] = 0;    //0 0 0 0
    Block_1[1][3][0] = 0;    //1 1 0 0
    Block_1[1][3][1] = 0;    //1 1 0 0

    Block_1[2][2][0] = 0;    //0 0 0 0
    Block_1[2][2][1] = 0;    //0 0 0 0
    Block_1[2][3][0] = 0;    //1 1 0 0
    Block_1[2][3][1] = 0;    //1 1 0 0

    Block_1[3][2][0] = 0;    //0 0 0 0
    Block_1[3][2][1] = 0;    //0 0 0 0
    Block_1[3][3][0] = 0;    //1 1 0 0
    Block_1[3][3][1] = 0;    //1 1 0 0

之前的初始化方块数组为全0然后在对相应的位置指改为1,本来是想通过两个for循环实现,但之后经过上网查找,发现了

memset(Block_1 ,0 , sizeof(Block_1[4][4][4]));

这方便的复制方式(虽然只能给数组复制0||1)

之后的创建游戏使用的方块必须要是随机的,因此也通过查找,得出

srand((unsigned)time(NULL));
switch (rand()%7)

的函数来让我们进行新的方块的建立

switch (rand()%7)
    {
    case 0:{
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                BlockNext[i][j]=Block_1[0][i][j];
            }
        }
    }
     case 1:{
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                BlockNext[i][j]=Block_2[0][i][j];
            }
        }
    }
     case 2:{
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                BlockNext[i][j]=Block_3[0][i][j];
            }
        }
    }
     case 3:{
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                BlockNext[i][j]=Block_4[0][i][j];
            }
        }
    }
     case 4:{
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                BlockNext[i][j]=Block_5[0][i][j];
            }
        }
    }
     case 5:{
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                BlockNext[i][j]=Block_6[0][i][j];
            }
        }
    }
     case 6:{
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                BlockNext[i][j]=Block_7[0][i][j];
            }
        }
    }

    }
}

(虽然总觉得这部还有简化空间)
之后是游戏开始时的方块引入和游戏过程中的方块替换函数也进行了处理,但对玩家类进行的交互还在头秃之中。

总结

这次作业的难度对我小组来说有些困难,以前也没有写过大型程序的经历,希望整合在一起的时候不要直接无响应掉

posted @ 2020-05-22 22:23  LRlicious  阅读(172)  评论(0编辑  收藏  举报