20162302 实验五《数据结构综合应用》实验报告

本文介绍了如何通过修改代码实现游戏功能增强,包括按键效果优化及新增游戏关卡。详细展示了从点击事件处理到游戏关卡设计的具体实现过程。

实 验 报 告

课程:程序设计与数据结构

姓名:杨京典

班级:1623

学号:20162302

实验名称:数据结构综合应用

实验器材:装有IdeaU的联想拯救者15ISK


实验目的与要求:

1.编译运行测试
2.代码修改
3.代码分析

实验内容、步骤与体会:

实验内容:


编译运行测试

  • 点击红色圈出来的地方
    1062717-20171217114604249-1017799076.png
  • 选择虚拟机也可以选择连在usb上的物理机,在这里就选择虚拟机
    1062717-20171217115923577-966589032.png
  • 运行成功
    1062717-20171217120213936-1789785325.png
    1062717-20171217120224780-2070026229.png
  • 测试按下方向键会向不同方向移动,并记录按键步数
    1062717-20171217121026077-1017851342.png
  • 把箱子推到指定位置会出现过关画面并播放一小段音乐
    1062717-20171217121107999-1125342699.png

代码修改

  • 增加按键效果
    原来的代码是
        choose.setOnClickListener(new View.OnTouchListener() {
            @Override
            public void onTouch(View v) {
                    Intent intent = new Intent(MainActivity.this, GameOption.class);
                    startActivity(intent);
            }
        })

setOnClickListener改为setOnTouchListener以获取点击抬起来的事件。在按下的时候更换图片,在抬起来后更换新的图片。

        choose.setOnTouchListener(new View.OnTouchListener() {
            @Override
            //设置监听事件
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    //更改为按下时的背景图片
                    v.setBackgroundResource(R.mipmap.chooes1);
                } else if (event.getAction() == MotionEvent.ACTION_UP) {
                    //改为抬起时的图片
                    v.setBackgroundResource(R.mipmap.chooes);
                    //新建一个本活动到排行榜界面的intent
                    Intent intent = new Intent(MainActivity.this, GameOption.class);
                    //启动这个intent
                    startActivity(intent);
                }
                return false;
            }
        });
  • 增加新的关卡
    这一更改相对来说要简单得多,关卡以二维数组的形式存储在GameLevels里面,增加关卡首先要增加一个二维数组。
    public static final int [][] LEVEL_11 = {
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0,0 ,0 ,0 ,0, 0, 0,  0, 0, 0, 0},
            {0, 0, 0, 0, 0 ,0, 0, 0, 0, 0, 0, 0 ,0, 0, 0, 0},
            {0, 0, 0, 0, 0 ,5 ,1 ,4 ,1 ,1 ,1, 2, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0, 0, 0, 0},
            {0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0 ,0, 0 ,0 ,0 ,0 ,0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
    };

然后把这一关卡加到list里面

OriginalLevels.add(LEVEL_11);

运行结果
1062717-20171217224118218-1157596642.png

代码分析

  • 主界面是MainActivity上面有四个按键是到各个界面的枢纽。
  • SysApplication类实现了对活动的管理,把所有的活动都放到list里面,在结束活动的时候可以逐一结束所有活动。
  • 选项按钮连接到GameOption活动,可以实现对于音乐的打开和关闭。
  • 开始按钮连接到GameLevelActivity界面,这个按钮是选关按钮,这个界面使用ArrayAdapter自动生成相应关卡数目的按钮。
  • 这一方法调用GameLevels类,这个类是用来储存关卡的,可以获取所点击到的相应的关卡数。
  • 然后将获取的二维数组传递到下一活动GameActivity,这一活动是负责关卡的核心,调用GameState进行矩阵运算实时生成新的矩阵。
  • GameBitmaps类负责将矩阵实时转换成图像界面。

转载于:https://www.cnblogs.com/yangjingdian/p/8051711.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值