Android 数独游戏实验报告.pdf

上传人:小** 文档编号:93317287 上传时间:2019-07-19 格式:PDF 页数:18 大小:2.90MB
返回 下载 相关 举报
Android 数独游戏实验报告.pdf_第1页
第1页 / 共18页
Android 数独游戏实验报告.pdf_第2页
第2页 / 共18页
Android 数独游戏实验报告.pdf_第3页
第3页 / 共18页
Android 数独游戏实验报告.pdf_第4页
第4页 / 共18页
Android 数独游戏实验报告.pdf_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《Android 数独游戏实验报告.pdf》由会员分享,可在线阅读,更多相关《Android 数独游戏实验报告.pdf(18页珍藏版)》请在金锄头文库上搜索。

1、本 科 生 实 验 报 告本 科 生 实 验 报 告 实验课程Android 课程设计数独游戏实验课程Android 课程设计数独游戏 学院名称信息科学与技术学院学院名称信息科学与技术学院 专业名称物联网工程专业名称物联网工程 学生姓名学生姓名 学生学号学生学号 指导教师指导教师 实验地点实验地点 实验成绩实验成绩 二一五 年 十 月二一五 年 十二 月二一五 年 十 月二一五 年 十二 月 Android 数独游戏数独游戏 一、数独游戏简介 1.数独游戏 “数独 Sudoku” 来自日文(), 但概念源自 “拉丁方块” , 是十八世纪瑞士数学家欧拉发明的,是一种运用纸、笔进行演算的逻辑游戏。

2、数 独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字 和解题条件,利用逻辑和推理,在其他的空格上填入 1-9 的数字。使 1-9 每个数 字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格” 。谜题中会 预先填入 若干数字,它宫位则留白,玩家得依谜题中的数字分布状况,逻辑推 敲出剩下的空格里是什么数字 2.该数独游戏是基于 Android 系统,通过过程性设计声明性两种方式来设 计用户界面,采用 Android 2D 绘图来实现数独的游戏界面中的九宫格和数字的 绘制,以及田填充页面的提示等。该数独游戏同时还涉及到活动的创建,游戏框 架的构建,多媒体功能的实现,主要

3、用到了 Android 开发的入门基础知识,同时 设计到开发环境的配置和真机模拟和模拟器两方模拟 二、数独游戏设计 1. 游戏框架设计游戏框架设计(以下图片都是通过 Android 真机所得) figure-1 系统框图figure-2 进入页面 figure -3 新建游戏figure-4 游戏界面 figure-5 关于游戏figure-6 设置游戏 2. 游戏程序设计游戏程序设计 figure-7 程序设计 figure-8 程序控制程序结构figure-9 程序样式设置结构 Sudoku.java:程序的主控活动类,初始化游戏,控制其他的 java 类。 PuzzleView.java

4、:2D 绘图的主控类,用来绘制游戏的主界面,包括九宫格、 数字、提示、虚拟键盘等。 Game.java:游戏的算法和难度的控制类。用来初始化游戏界面,控制 PuzzleView 类绘制数字;对当前九宫格的数字输入状态来提供数字的提示功 能,保存当前的状态;并根据首选项的有判断的初始化数独游戏开始界面的 难度。 About.java:主要用于关于游戏的页面的初始化和返回菜单页面。 Keypad.java:主要用于游戏提示键盘的初始化控制,获取输入的当前的数独 的输入数字和判断输入是否有效。 Prefs.java:负责对游戏设置选项的控制处理。 Music.java:多媒体的类,用来控制背景音乐的

5、播放和暂停。 三、数独游戏实现三、数独游戏实现 1. 游戏的界面设计1. 游戏的界面设计 1)布局方式1)布局方式 LinearLayout(线性布局) :以相对于当行或当列的形式显示子对象,在 本数独游戏设计的开始页面采用该中布局和接下来的布局方式,通过嵌 套来实现。 RelativeLayout(相对布局) :以相对于其他子对象显示子对象。 main.xml: (伪代码) figure-10 LinearLayout 布局 Button Continue:默认继续进入 easy 的初始化页面,如果新建游戏后,点击 “continue”按钮则进入所进行的页面。 Button Newgame:

6、新建游戏,点击“new game”会出现游戏难易程度的选择。 Button About:数独游戏的介绍 Button Exit:推出数独游戏 TableLayout(表格布局) :类似于 HTML 表格多行多列显示布局。 Keypad.mxl ./模拟键盘输入 数字 4、5、6 2)游戏界面2)游戏界面 游戏界面有 PuzzleView.java 来实现, 通过 2D 绘图来显示游戏的棋盘的九宫格、 数字、模拟键盘。 package com.example.sudoku; /引入包文件 public class PuzzleView extends View /布局棋盘 private sta

7、tic final String TAG = “Sudoku“; private final Game game; public PuzzleView(Context context) super(context); this.game = (Game) context; setFocusable(true); setFocusableInTouchMode(true); 1/模拟绘制网格,通过绘制线条和数字来实现单元格、显示区域、显示 处理键盘 Override protected void onSizeChanged(int w, int h, int oldw, int oldh) ./

8、九宫格的尺寸设置 private void getRect(int x,int y, Rect rect) rect.set(int)(x*width), (int)(y*height), (int)(x*width+width), (int)(y*height+height);/注意此 处的强制转换的地方 2/绘制游戏盘面 Override protected void onDraw(Canvas canvas) Paint background = new Paint(); /定义游戏盘面的绘制颜色、线条 . /画布局线 ./横向和纵向绘制线条 /画小的单元格 ./横纵方向 /画数字 .

9、/摆放数字 . 3/画提示 /定形 . /获取光标的区域 /* * 重写 onKeyDown 方法,来获取改变选中区域 * 通过 select 获取十子方向键来表示光标的移动 */ Override public boolean onKeyDown(int keyCode, KeyEvent event) . /* * 1. 首先获取选中区域的位置 * 2. 通过 getRect 计算新的矩形区域 * 3. 通过 invalidate 将矩形标记已过期 * param x * param y */ private void select(int x,int y) . /* * 获取触模板输入

10、*/ Override public boolean onTouchEvent(MotionEvent event) . 2. 游戏主控程序2. 游戏主控程序 1)Sudoku.java figure -11 Sudoku 类图 Sudoku 类作为数独游戏的主控类,监听菜单页面的按钮触发的事件,其主要方 法及其功能如下: onCreate(): 设置数独菜单页面的显示布局, 监听 “newGame” 、“continue” 、 “About” 、 “exit”事件。 openNewGameDialog():显示开始游戏的难易程度。 startGame(int level): 根据选择的游戏的

11、难易程度进行开始游戏的初始化。 onCreateOptionsMenu():设置 ActionBar 中 setting 的点击事件。 onResume()和 onPause():控制背景音乐的播放和暂停。 2)PuzzleView.java figure-12 PuzzleView 类图 1PuzzleView.java 作为绘制视图的主要控制类,主要绘制数独游戏的开 始页面的九宫格和数字,以及填充数字的提示,其主要方法及其功能如下: onDraw(Canvas canvas):绘制网格、画数字、话提示、画单元 格。 onKeyDown(int keyCode, KeyEvent event

12、):获取选中区域,其中 通过 select(int x,int y)来获得十字方向来表示光标的移动。 select(int x,int y):获取选中的区域、通过 getRect()方法计算 矩形区域,通过 invalidate 将矩形标记已过期。 2PuzzleView.java 类中所用的 2D 绘图的几个重要类: Color 类: Android 中的颜色类, 用透明度、 红色、 绿色和蓝色 (ARGB) 的数字组合来表示颜色。 /xml 中定义颜色 #3500ffff #ADD8E6 #ffffffff #64c6d4ef #6456648f #ff000000 #64ff0000 #

13、6400ff80 #2000ff80 #64ff8000 PuzzleView 类中调用颜色对象 figure-13 Color 对象 Paint 类:包含了 Android 的样式、颜色、绘制的位图、文本、几何 图形。 Canvas 类:绘图的画布,通过该类可以绘制线条、矩形、圆等洽谈 任何图形。在数独游戏中,Android 的显示屏是由 Activity 类的对 象支配,Activity 类的对象引用 View 对象,View 对象引用 Canvas 类的对象,通过 View.onDraw()方法来绘图,该过程及就是 2D 绘图 的关键,以下是绘制 2D 图形的关键代码: 绘制布局线: f

14、igure-14 2D 绘制布线图 绘制单元格: figure-15 2D 绘制单元格 绘制数字: figure-16 2D 绘制数字 绘制提示: figure-17 2D 绘制提示 Path 类:矢量绘图,命令,绘制线条、矩形和曲线等。 3)Game.java figure-18 Game 类图 Game.java 主要是实现游戏的逻辑,根据游戏规则确定哪些数字有效,哪些数字 填入无效,其实现的关键是 setTileValid()方法。 /* * 判断输入的数字是否有效 * param x * param y * param value * return */ protected boole

15、an setTileIfValid(int x,int y,int value) int tiles = getUsedTiles(x,y); if(value != 0) for(int tile:tiles) if(tile = value) return false; setTile(x,y,value);/设置单元格的方法 caculateUsedTiles();/计算单元的数字填充的关键方法 return true; 4)Keypad.java Figure-19 keypad 类图 Keypad.java 类继承了 Dialog 类,主要是定义和实现数字的输入的软键盘 onCrea

16、te(Bundle savedInstanceState):初始化和创建软键盘 Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setTitle(R.string.keypad_title); setContentView(R.layout.keypad); findViews();/选择对应的键盘数字 for(int elements:useds) if(elements != 0) keyselements-1.setVisibility(View.INVISIBLE); setListeners(); isValid():判断对应的选中的数字是否可用 returnResult():将选

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号