小组第四周总结

小组项目第四周总结

游戏界面


操作方式

方向键←:模块左移
方向键↓:模块加速向下移
方向键↑:调整模块


部分代码注释

private int aa=0;
    private int ic=0;
    private final int sp_width=10;                               //游戏界面宽格10格
    private final int sp_height=20;                              //游戏界面高格20格
    private final int types[][][]={                              //游戏模块
            {{-1,0},{0,0},{1,0},{2,0}},                          //长条(一共两种形态)
            {{0,-1},{0,0},{0,1},{0,2}},
            {{-1,0},{0,0},{1,0},{1,1}},                          //直角(右)(一共四种形态)
            {{0,1},{0,0},{0,-1},{1,-1}},
            {{1,0},{0,0},{-1,0},{-1,-1}},
            {{0,-1},{0,0},{0,1},{-1,1}},
            {{-1,0},{0,0},{0,1},{1,0}},                          //直角(中)(一共四种形态)
            {{0,1},{0,0},{1,0},{0,-1}},
            {{1,0},{0,0},{0,-1},{-1,0}},
            {{0,-1},{0,0},{-1,0},{0,1}},
            {{-1,1},{-1,0},{0,0},{1,0}},                         //直接(左)(一共八种形态)
            {{1,1},{0,1},{0,0},{0,-1}},
            {{1,-1},{1,0},{0,0},{-1,0}},
            {{-1,-1},{0,-1},{0,0},{0,1}},
            {{0,-1},{0,0},{1,0},{1,1}},
            {{-1,0},{0,0},{0,-1},{1,-1}},
            {{0,1},{0,0},{1,0},{1,-1}},
            {{1,0},{0,0},{0,-1},{-1,-1}},
            {{0,0},{0,1},{1,0},{1,1}}                            //正方形(一共就一种形态)
    };

    private int[][] block_box=new int[4][2];                     //四个方块坐标
    private int[][] block_box_tt=new int[4][2];
    private int block_x=0,block_y=0;                             //游戏方块在游戏界面中的坐标
    private int block_type=0;                                    //方块类别
    private int[][] game_space=new int[20][10];                  //空间数据
    private int movetype=0;
    private int scroe=0;
    private int speed=5;

    public RussionBlockGame()
    {
        clearspace();
        makenewblock();
    }

    public void clearspace()                                     //初始化空间数据
    {
        for(int i=0;i<sp_height;i++)
            for(int j=0;j<sp_width;j++)
                game_space[i][j]=0;
    }

    public void makenewblock()                                   //随机出现模块,利用随机生成数,在switch语句产生对应的模块
    {
        aa=(int)(Math.random()*100%7+1);
        ic=aa*10+1;
        switch(aa)
        {
            case 1:
                block_type=0;
                break;
            case 2:
                block_type=2;
                break;
            case 3:
                block_type=6;
                break;
            case 4:
                block_type=10;
                break;
            case 5:
                block_type=14;
                break;
            case 6:
                block_type=16;
                break;
            case 7:
                block_type=18;
                break;
        }
        block_x=1;                                               //产生模块时,从最上面第一个出现,即x=1;
        block_y=sp_width/2;                                      //产生模块时,从界面中间出现,即y=5;
        for(int i=0;i<4;i++)                                     //一共五种类型的模块,有一个点生成对应的模块
        {
            block_box[i][0]=block_x-types[block_type][i][1];
            block_box[i][1]=block_y+types[block_type][i][0];
        }
    }

部分BUG

1.游戏在暂停后,点击开始会无法重新开始。
2.游戏过程中会偶尔会发生模块凭空出现的情况。
3.在模块超出游戏设置的空间时,游戏无法主动结束。
4.无法主动更替背景颜色与难度等级


小组感想

之前实验也设计过成绩管理系统等程序,课程设计思想大致相似,变化范围有限,没有太多可发挥的空间。大家作品结果离不开一个模式。相比一些数据库软件,游戏的设计有很多人情色彩和艺术思想的发挥。然而“心比天高,身为下贱”。设计游戏的困难远超想象。在设计初期,为了解决模块的运动,游戏界面的建立,我们花费了数天时间查询相关的技术,如需要使用的线程、Game包的功能、高级,低级图形界面的使用、贴图等,每一项都需要一定的时间去熟悉额掌握。这款游戏作为小组的项目设计,其模块间的联系十分紧密,代码重复执行率高,小组项目进度曾一度停滞不前。所幸,网上有很多热情的人,贴吧大神除了授业解惑外,还提供了他设计的代码以供参考,这是开源精神的体现。我们小组曾含泪播种,进行过无数次调试,修改,能最终看到成品也算是含笑收获了。


小组成员分工

祁玮:负责博客编写
韩昊辰:调试游戏,寻找BUG
史婧瑶、荆玉茗:寻找相关资料,对部分源代码设计测试代码

原文地址:https://www.cnblogs.com/dky201452/p/5562153.html