实 验 报 告
课程:程序设计与数据结构
姓名:杨京典
班级:1623
学号:20162302
实验名称:数据结构综合应用
实验器材:装有IdeaU的联想拯救者15ISK
实验目的与要求:
1.编译运行测试
2.代码修改
3.代码分析
实验内容、步骤与体会:
实验内容:
编译运行测试
- 点击红色圈出来的地方
- 选择虚拟机也可以选择连在usb上的物理机,在这里就选择虚拟机
- 运行成功
- 测试按下方向键会向不同方向移动,并记录按键步数
- 把箱子推到指定位置会出现过关画面并播放一小段音乐
代码修改
- 增加按键效果
原来的代码是
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);
运行结果
代码分析
- 主界面是
MainActivity
上面有四个按键是到各个界面的枢纽。 SysApplication
类实现了对活动的管理,把所有的活动都放到list
里面,在结束活动的时候可以逐一结束所有活动。- 选项按钮连接到
GameOption
活动,可以实现对于音乐的打开和关闭。 - 开始按钮连接到
GameLevelActivity
界面,这个按钮是选关按钮,这个界面使用ArrayAdapter
自动生成相应关卡数目的按钮。 - 这一方法调用
GameLevels
类,这个类是用来储存关卡的,可以获取所点击到的相应的关卡数。 - 然后将获取的二维数组传递到下一活动
GameActivity
,这一活动是负责关卡的核心,调用GameState
进行矩阵运算实时生成新的矩阵。 GameBitmaps
类负责将矩阵实时转换成图像界面。
时间: 2024-10-10 09:18:26