android课程设计报告(数独游戏)讲解
- 格式:pdf
- 大小:799.25 KB
- 文档页数:15
安卓数独课程设计一、课程目标知识目标:1. 学生能理解数独游戏的规则,掌握基本的数独解题技巧;2. 学生能运用安卓编程知识,设计并实现一个简易的数独游戏;3. 学生了解数独游戏的历史背景和数学原理。
技能目标:1. 学生能运用安卓开发环境进行编程,实现数独游戏的界面设计和功能实现;2. 学生通过数独游戏的设计与开发,提高逻辑思维和问题解决能力;3. 学生学会合作与沟通,通过团队协作完成项目。
情感态度价值观目标:1. 学生培养对编程的兴趣,激发创新精神和动手实践能力;2. 学生在数独游戏设计与开发过程中,培养耐心、细心和专注的品质;3. 学生通过团队协作,学会尊重他人意见,培养团队精神和沟通能力。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为信息技术课程,结合数学知识,以项目式教学方式进行;2. 学生特点:八年级学生对编程有一定了解,对数独游戏感兴趣,具备一定的逻辑思维能力;3. 教学要求:课程要求学生在掌握数独解题技巧的基础上,运用安卓编程知识,实现一个具有实际操作意义的数独游戏。
1. 数独游戏规则及基本解题技巧:介绍数独游戏的起源、规则,分析常见的解题技巧,如唯一数字法、排除法等。
教材章节:数学课程中的逻辑思维与数独部分。
2. 安卓编程基础知识:回顾安卓编程的基本概念,如活动、布局、控件等,为学生设计数独游戏界面打下基础。
教材章节:信息技术课程中的安卓编程基础部分。
3. 数独游戏界面设计:指导学生运用安卓编程知识,设计数独游戏的界面,包括游戏棋盘、数字输入框等。
教材章节:信息技术课程中的安卓界面设计与实现部分。
4. 数独游戏功能实现:教授学生如何编写代码实现数独游戏的核心功能,如数字输入、合法性校验、解题提示等。
教材章节:信息技术课程中的安卓编程进阶部分。
5. 项目实践与团队协作:组织学生分组进行项目实践,培养学生团队协作能力和沟通能力,共同完成数独游戏的设计与开发。
教材章节:信息技术课程中的项目实践与团队协作部分。
基于Android平台的数独手机游戏的设计与研究引言:随着信息技术和电子设备业的迅猛发展,Android智能手机已走进每个人的生活。
人们的物质生活越来越优越,使得人们的精神生活需求越来越多,人们需要更多的游戏软件来打发自己的空闲时间,丰富自己的精神生活。
为了满足广大手机用户的需求,顺应市场形势,满足人们对Android手机游戏开发的好奇心,本文在此借助于Android平台上的数独手机游戏设计开发,讲解基于Android平台的手机游戏开发的基本过程。
1 游戏规则与操作步骤1.1 游戏规则数独是一种逻辑性的数字填充游戏。
玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(即3x3的大格)内的数字均含1-9,不重复。
1.2 游戏的操作步骤(1)点击数独游戏的APP图标,直接进入游戏;(2)点击主界面的空格,将出现对应的数字提示对话框;(3)点击提示框中的数字,填入空格中;(3)当空格中的数字都填写正确时,出现恭喜界面。
2 游戏设计原理及实现游戏主界面设计中,需要解决的关键技术如下:2.1 原始数据的随机生成设计ArrayRandom类,主要负责生成九宫格中的初始化数据,判断每行、每列以及每个宫格内的数字不重复等功能。
宫格内产生1-9之间随机数字运用的规则是:生成的随机数字放置在数组8-time下标的位置,随着time的增加,已经尝试过的数字将不会再取到。
2.2 九宫格及数字的绘制设计MyView类,继承自View类,主要完成九宫格及数字的绘制工作。
绘制九宫格采用分步绘制的方法。
第一步,绘制小网格线,添加背景色;第二步,绘制大网格线(宫格线)。
九宫格中有关数字的逻辑运算交由Game类完成。
2.3 单点触摸事件处理当用户按下九宫格中空格时,给用户提示对话框,提示用户可选的数字。
用户按下空格发生单点触摸事件,需要处理的关键问题有:计算某个单元格中已经不可用的数据;对话框显示可用数据;将选定数据显示到单元格中。
”的开发实验报告数独游戏”“数独游戏一、实验目的通过“数独游戏”Android应用程序的开发,掌握一个实际应用项目的开发流程和知识。
二、开发步骤(一)设计用户界面1、创建启动界面(1) 使用Eclipse插件创建一个Android应用程序(2) 修改res/layout/main.xml文件,使用不同的文本和几个按钮替换原标签(3) 在res/values/strings.xml中定义要用到的字符串(4)2、模式切换为使横向模式下人能正常显示,可为横向模式创建一个不同的布局。
创建名为res/layout-land/main.xml文件,该文件采用TableLayout布局方式创建两列按钮。
3、实现About对话框(1) 为About按钮活动创建一个布局文件res/layout/about.xml(2) 在About,java中定义About活动,重写onCreate()方法和并调用setContentView()方法(3) 将About对话框的标题及对话框中包含的文本内容添加到res/values/strings.xml中(4)(5)4、应用主题可以在res/values/styles.xml中定义自定义主题,但在此只需利用一个预定义主题,在Android.Manifest.xml中修改About的定义,使其具有主题特性(property)。
5、添加菜单实现在按下Mune按钮时弹出菜单(1) 在res/values/strings.xml中定义要用到的字符串(2) 在res/menu/menu.xml中定义菜单(3) 将上面定义的菜单加到Sudoku类中,并导入以下包:import android.view.Menu;import android.view.MenuInflater;import android.MenuItem;(4) 重写Sudoku类中的onCreateOptionsMenu()方法6、添加设置在Sudoku程序中添加两个设置,一个用于播放背景音乐,一个用于显示提示信息。
河南科技学院《物联网移动应用开发》课程设计报告设计题目:基于android的数独游戏设计班级:物联网131学号:2013156555姓名:胡建刚指导教师:许睿成绩:信息工程学院课程设计报告说明一、写报告前,请认真阅读《课程设计报告说明》。
二、打印装订要求1、一律用A4纸,双面打印,并左侧装订。
报告正文部分均采用宋体小四。
《课程设计报告说明》页也打印。
2、课程设计概述部分占一页;课程设计内容长度根据实际需要填写;结论和指导教师评语及成绩单独占一页。
保证打印格式工整。
3、指导教师评语及成绩部分由指导教师填写。
三、报告内容要求1、课程设计目的结合实际自己写,不要雷同。
2、课程设计原理简要说明所完成课程设计项目所涉及的理论知识。
3、课程设计内容这是课程设计报告极其重要的内容。
概括整个课程设计过程。
(最好在上述内容基础上画出相应的流图、设计思路和设计方法,再配以相应的文字进行说明。
)一、课程设计概述二、课程设计内容图1 游戏主页面4.1.2 点击开始游戏按钮出现难度选择按钮图2 游戏难度选择页面4.1.3 点击容易按钮之后的界面就能图3 游戏页面4.1.4 点击空白区域之后会出现小的界面图4 游戏小键盘选择页面4.1.5点击关于游戏之后的界面图5 相关游戏页面4.1.6 点击游戏设置之后的界面图6 游戏设置页面4.2 运用程序部分介绍4.2.1 数独游戏算法介绍图7 游戏主要算法页面4.2.2 利用画笔画出游戏的界面图8 游戏界面设计页面程序这是将界面画出来的程序。
还有一些确认坐标的程序就不在列举了五.将程序导入手机寻找到res包下面的apk图2 游戏导入手机方法图如图apk的名字就是项目的名字,将这个程序导入安卓手机进行安装就可以应用了。
三、结论四、指导教师评语及成绩。
摘要数独(Sudoku)是一种运用纸、笔进行演算的数学智力游戏。
玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个小九宫内的数字均含1~ 9,而且不重复。
每一道合格的数独谜题都有且仅有唯一答案,推理方法也以此为基础,任何无解或多解的题目都是不合格的。
随着搭载Android系统的智能手机在中国的普及,不论何时,不论何地,在智能手机端玩数独游戏成为一种方便快捷的新需求。
数独游戏出现错误时,必须回退一步或几步并擦除已经填入的大部分数字,在智能手机上玩数独游戏可以随时修改单元格中的数字。
数独游戏规则需要根据已有数字进行推理判断,不仅具有很强的趣味性,而且能锻炼我们的逻辑思维能力。
本课题研究设计一款运行在Android 平台的数独游戏软件。
该课题主要使用Java语言开发,运行于Android操作系统,实现了数独游戏的基本功能。
关键词:数独;Android;手机游戏;JavaABSTRACTSudoku is a math puzzle game played with paper and pen. Players need to be filled 9 × 9 disk with known figures, reasoning other figure out, and meet each row, each column, each small nine intrauterine figures 1 to 9 inclusive, and not repeat. Every qualified Sudoku puzzles only have one unique answer, but also as a basis for reasoning method, no solution or any solution questions are unqualified.With Android powered smart phones popular in China, no matter when, no matter where, palying sudoku game in the smart phone become a convenient new demands. Sudoku error occurs, or the steps you must take a step back and erase the figures already filled. on the smartphone sudoku can be modified in a cell number. Sudoku rules need to be based on the existing number of reasoning judgment, not only has a strong interest, but also to exercise our ability to think logically.This study is designed a Sudoku game software to run on the Android platform. Using Java language and runs on the Android operating system, to achieve the basic functions of Sudoku.Sudoku is a math puzzle game played with paper and pen.According to the filled 9 × 9 disk with known figures, players need to reason out other figures, which must meet each row, each column, each small nine intrauterine figures 1 to 9 inclusive, and not repeat. Every qualified Sudoku puzzle has and only has one unique answer. As a basis for reasoning method, no solution or any other solution questions are unqualified.With the rapid popularization of android powered smart phones in China, no matter when or where, palying sudoku game in the smart phone becomes a new fashion. When Sudoku error occurs, you must take a step back and delete the figures already filled. Playing Sudoku game on the smart phone, you can conveniently modify the numbers. Sudoku rules must base on the existing number of reasoning judgment, which not only have a strong interest, but also exercise our logical thinking ability.This paper has designed a Sudoku game with Java language running on the android platform, which has achieved the basic functions of the Sudoku game.Keywords: Sudoku; Android; mobile games; Java目录第一章引言 (1)1.1 项目背景 (1)1.2 项目目的 (2)1.3 主要内容 (2)第二章游戏开发相关技术 (4)2.1 Android (4)2.1.1 Android发展历史 (4)2.1.2 Android特点与系统架构 (5)2.1.3 Android基本组件与项目结构 (7)2.1.4 Android UI设计与其原理 (10)2.2 Java (12)2.2.1 Java简介 (12)2.2.2 Java SE (13)2.3 Eclipse (13)2.3 Android SDK (14)第三章数独游戏设计 (16)3.1 功能需求 (16)3.1.1 继续游戏模块 (16)3.1.2 开始游戏模块 (16)3.1.3 游戏设置模块 (16)3.1.4 游戏完成模块 (17)3.1.5 其他模块 (17)3.2 游戏架构设计 (17)3.3 游戏运行流程 (18)第四章数独游戏实现 (20)4.1开发环境搭建 (20)4.1.1 安装JDK和配置Java开发环境 (20)4.1.2 SDK和ADT的安装和配置 (20)4.2项目工程文件 (22)4.3游戏主界面模块 (24)4.4游戏关卡选择模块 (26)4.5游戏谜题的存储与导入 (35)4.6游戏状态存储与恢复 (37)4.7游戏界面绘制与逻辑实现 (38)4.8游戏结束检测与信息提示 (42)4.9游戏设置模块 (46)4.10游戏其他模块 (58)第五章总结 (2)参考文献 (3)致谢 (5)第一章引言1.1 项目背景2007年11月5日,距离苹果发布第一代iPhone手机仅四个月,谷歌公司正式公布Android操作系统,并且宣布与34家手机厂商、运营商成立“开放手机联盟”(OHA),自此基于Linux内核的Android系统正式登上历史舞台。
数独游戏课程设计报告将“数独”智力游戏的难度划分与创建问题分解为建立终盘和初盘、难度评分、游戏创建。
首先采用行列变换的方法建立终盘,然后隐去部分数字并检验解唯一性,得到初盘。
在已得到初盘的基础上,根据求解时初级方法和高级方法使用的次数确定难度评分,从而依据分数对题目的难度进行划分,以此创建不同等级难度的“数独”游戏。
最后通过实验验证了模型的实用性。
下面是的数独游戏课程设计报告,欢迎来参考!“数独”是18世纪瑞士数学家欧拉发明。
该游戏是在9×9的单元网格中进行,这些网格被分9行、9列和3×3个九宫格。
单元网格中已有若干数字,其余均为空格。
玩家需要推理出所有剩余空格的数字,并满足每一行、每一列、每一个小九宫格内的数字均含1-9且不重复。
每一道合格的“数独”谜题都有且仅有唯一答案。
目前,“数独”作为一种智力游戏已经风靡世界,国内外许多学者已对数独的求解算法做了深入研究,例如递归法[1]、回溯候选数法[2]、枚举算法[3]等,但在数独的难度划分与创建方面的研究还很少。
由于影响“数独”难度的因素有很多,就问题本身而言,难度因素包括最高难度的技巧、各种技巧所用次数、是否有隐藏及隐藏的深度和广度的技巧组合、当前盘面可逻辑推导出的个数等等;就玩家而言,了解的技巧数量、熟练程度、观察力等也属于难度划分应考虑的因素。
因此,单单利用空格数或求解时间对题目难度进行划分是不全面的,其难度指标定义过于主观,讨论也不够细致,无法真正划分难度的级别。
本文首先创建符合要求的“数独”终盘,然后在终盘的基础上生成具有数独特性的初盘,根据求解时初级方法和高级方法使用的次数确定难度评分,从而依据分数对题目的难度进行划分,以此创建不同等级难度的“数独”游戏。
1终盘和初盘生成首先运用初等行、列变换,构造一个新的简单明了的终盘生成算法,具体步骤如下:Step1:从行的角度出发,在第一行随机输入1-9的数字。
以一个小九宫为单位,将相邻三个数字作为一个集体进行交替,由此获得第二行的数字,再由第二行的数字根据前述方法变换得到第三行的数字。
android数独游戏一、需求分析:数独游戏是一种源自18世纪末的瑞士,后在美国发、并在日本得以发扬光大的数学智力拼图游戏。
拼图是九宫格(即3格宽×3格高)的正方形状,每一格又细分为一个九宫格。
在每一个小九宫格中,分别填上1至9的数字,让整个大九宫格每一列、每一行的数字都不重复。
数独的玩法逻辑简单,数字排列方式千变万化。
不少教育者认为数独是锻炼脑筋的好方法。
现在手机娱乐越来越普遍化,数独游戏是一个逻辑简单又很有教育意义的游戏。
单机游戏,简单而不繁琐。
在此在android平台下,开发一个简单的数独游戏。
二、环境要求:开发环境,windows7;游戏运行环境,android2.3.3以上;开发工具,eclipse三、概要设计:由一个首页游戏进入游戏,首页游戏界面有:继续游戏,新游戏,游戏简介,退出游戏。
两个主要的活动页面:首页,游戏中页面。
还有一个画图类实现绘制功能。
主要类图如下:四、详细设计1.创建第一个活动页面:页面中有4个按钮,效果图如下:2. 现在根据这4个按钮我们要一一实现其功能。
先从简单的开始,我们第一个实现游戏简介这个按钮的功能。
游戏简介就是一个游戏介绍,点击后我们要实现弹出一个活动页面或者对话框显示对这个游戏的介绍。
在这里我们弹出一个页面。
页面仅仅一个TextView布局。
但这样显示显得不是很美观,而且屏幕也很浪费。
所以我们在Activity中用主题对其做调整。
在AndroidManifest.xml文件对Activity注册的时候,对其设置:<activity android:name=".About"android:label="@string/btn_main_about"android:theme="@android:style/Theme.Dialog"></activity>这样这个页面就会是一个对话框的样式:点击活动页面以外就会返回上一个活动。
基于Android的数独库程序的设计摘要本文主要阐述以面向对象的程序开发语言eclipse为开发工具,基于智能手机Android之上设计一个数独游戏。
论文通过五个大块对android以及数独游戏进行阐述。
第一部分大致介绍了设计数独游戏的目的、起源及发展过程。
第二部分、第三部分是对android系统的概述,通过对android平台架构及特性、操作系统和开发环境的介绍对android的整体有了大致的了解,有利于下一步的游戏设计。
第四部分是对数独库整个项目的设计方法以及算法进行分析对之后的程序界面及逻辑设计打下基础。
最后一部分介绍了数独程序的启动界面设计、游戏部分2D图形设计、多媒体设计和存储本地数据设计。
通过分块介绍清晰地说明了整个数独程序设计的流程以及所用方法。
关键词 android2.1 数独库,游戏逻辑及算法,游戏界面The design and development of Sudoku based on AndroidAbstractThis article described the object oriented programming la nguage eclipse for development tools, Based on intelligent mobile phone based on Android design a Sudoku game. This pa per through the five large and elaborate on Android Sudoku game. The first part briefly introduces design Sudoku purpo se, origin and development. The second part, the third part is on the Android system, based on Android platform archit ecture and characteristics, operating system and developmen t environment are introduced to the android as a whole have a general understanding, is helpful for the next step of t he game design. The fourth part is the logarithm of the bas e of the entire project design method and algorithm analysi s on after the program interface and logic design foundatio n. The last part introduces Sudoku program interface design, graphic design, multimedia2D game part design and storing local data design. By the block introduction illustrates cl early the entire Sudoku program design process and using me thod.Key words: Android2.1Sudoku library, the game logic and alg orithm, the game interface目录1. 引言 (1)1.1 研究背景 (1)1.2 课题来源 (1)1.3 国内外研究现状 (3)2. Android系统概述 (6)2.1 Android的平台架构及特性 (6)2.1.1 Android平台特性 (6)2.1.2 Android平台架构 (8)2.2 Android应用组件 (11)2.2.1 Activity (11)2.2.2 Service (12)2.2.3 Broadcast Receiver (13)2.2.4 Content Provider (13)2.2.5 View (13)2.2.6 Intent (14)3. Android开发平台 (15)3.1 操作系统 (15)3.2 开发环境 (15)3.3 构建快 (15)3.3.1 活动 (16)3.3.2 意图 (16)3.3.3 服务 (16)3.3.4 内容提供者 (17)4. 项目需求与结构分析 (18)4.1 项目简介及设计方法分析 (18)4.1.1 项目简介 (18)4.1.2 设计方法 (19)4.1.3 算法分析 (20)4.2 创建项目及项目结构分析 (20)4.2.1 创建项目 (20)4.2.2 项目结构分析 (21)5. 数独库程序设计 (22)5.1 程序设计 (22)5.1.1 设计用户界面 (22)5.1.2 绘制数独库游戏部分2D图形 (33)5.1.3 多媒体设计 (40)5.1.4 存储本地数据设计 (42)5.2 游戏的测试与优化改进 (45)6. 结论 (47)谢辞 (48)参考文献 (49)1. 引言1.1 研究背景在生活中有许多的游戏,但是游戏不同,它也会给玩家带来不同的感受和生活理念。
android课程设计数独一、教学目标本节课的教学目标是让学生掌握数独游戏的基本规则,并能够使用Android开发环境编写简单的数独游戏。
具体来说,知识目标包括了解数独游戏的起源、规则和常用技巧;技能目标包括能够使用Android开发环境进行数独游戏的编写和调试;情感态度价值观目标包括培养学生独立思考、解决问题的能力,提高学生对编程的兴趣和热情。
二、教学内容本节课的教学内容主要包括数独游戏的基本规则、Android开发环境的搭建和数独游戏的编写。
首先,介绍数独游戏的起源和发展,讲解数独游戏的基本规则和常用技巧。
然后,引导学生搭建Android开发环境,并介绍数独游戏的编写方法和步骤。
最后,通过实例演示和练习,使学生能够独立编写和调试数独游戏。
三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用多种教学方法。
首先,采用讲授法,讲解数独游戏的基本规则和常用技巧。
然后,采用案例分析法,引导学生分析并解决数独游戏编写过程中遇到的问题。
接着,采用实验法,让学生动手实践,编写和调试数独游戏。
最后,采用讨论法,鼓励学生相互交流、分享心得,提高解决问题的能力。
四、教学资源为了支持教学内容和教学方法的实施,本节课将准备以下教学资源:教材《Android应用开发实战:数独游戏》,供学生学习和参考;参考书《Android开发指南》,为学生提供Android开发的相关知识;多媒体资料,包括数独游戏的演示视频和教学PPT,帮助学生更好地理解数独游戏的基本规则和编写方法;实验设备,包括计算机和Android手机,让学生能够进行实机调试和测试。
五、教学评估本节课的教学评估将采用多元化评价方式,全面、客观地评估学生的学习成果。
评估方式包括平时表现、作业和考试。
平时表现主要评估学生在课堂上的参与度、提问和回答问题的积极性等;作业主要评估学生的编程练习和数独游戏设计,通过检查代码质量和游戏难度来评价学生的掌握程度;考试则通过理论和实践两个部分来评估学生对数独游戏编程的掌握情况。
毕业设计(论文)原创性声明本人郑重声明:所提交的毕业设计(论文),是本人在导师指导下,独立进行研究工作所取得的成果。
除文中已注明引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写过的作品成果。
对本研究做出过重要贡献的个人和集体,均已在文中以明确方式标明并表示了谢意。
论文作者签名:日期:年月日摘要随着手机行业发展蓬勃迅速,尤其是以Android系统为例,越来越多的手机搭载了Android智能系统,该系统是以Linux为基础的开放源代码操作系统,其开放性、不受运营商限制、丰富的硬件支持、良好的扩展性,受到了外界良好评价与使用支持。
Android的系统架构分为三个部分:应用部分,核心部分,底层部分。
除了上述划分方式以外,从系统实际的架构模型来看,Android则可以分成以下几个层次:①应用层②框架层③运行时④核心类库⑤硬件抽象层⑥Linux内核。
本文主要阐述了以面向对象的程序开发语言Java,以eclipse为开发工具,基于Android系统开发一款数独游戏。
数独是一种运用纸、笔进行演算的逻辑游戏。
玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含1-9,不重复。
每一道合格的数独谜题都有且仅有一个唯一答案,推理方法也以此为基础,任何无解或者多解的题目都是不合格的。
本程序实现了难度选择功能,计时功能,成绩保存,重来功能等。
关键词:Android;手机游戏;数独ABSTRACTWith the development of mobile phone industry booming rapidly, especially in the Android system, for example, a growing number of mobile phone with Android intelligent system, this system is based on the Linux open source operating system, its openness, without being limited by the operators, rich hardware support, good expansibility, good evaluation and use the support by the outside world.Android system architecture is divided into three parts: the part, the core part, the bottom part. In addition to the classified methods, from the point of the architecture of the system model, the Android can be divided into the following several levels: (1) the application layer (2) framework layer (3) the runtime (4) core class libraries (5) hardware abstraction layer (6) Linux kernel.This article mainly elaborated in an object-oriented programming language Java, eclipse as the development tool, developed a sudoku game based on Android system. Sudoku is a kind of use paper and pencil to calculus logic game. Players need to according to 9 x 9 known figures on the disk surface, reasoning out all the rest of the space, and satisfy each row, every column, every house Numbers are thick line with 1-9, don't repeat. Every qualified sudoku puzzle has only one and only one answer, reasoning methods and on this basis, the topic of any kind of solution or solution is not qualified.This procedure realize the function of difficult choice, timing functions, performance preservation, to function, etc.Key words: Android;Mobile phone games;Sudoku目录第一章绪论 (1)1.1 游戏背景 (1)1.2游戏简介 (1)1.2.1数独题目的数量 (1)1.2.2数独题目的最少组成 (1)1.3手机游戏特征 (2)1.4 国内外研究现状 (3)本章小结 (3)第二章技术介绍 (4)2.1 Android简介 (4)2.2 Android平台架构及特征 (4)2.2.1 Android平台特征 (4)2.2.2 Android平台架构 (5)2.3 Android应用程序组件 (7)本章小结 (8)第三章系统分析与设计 (9)3.1 系统需求分析 (9)3.1.1 功能需求分析 (9)3.1.2安全性需求分析 (9)3.2 系统的结构设计 (9)本章小结 (10)第四章基于Android平台数独游戏的实现 (11)4.1 Android开发环境介绍 (11)4.2 Android开发平台搭建步骤 (11)4.3 系统的主要功能 (12)4.2 游戏中主要类的简要介绍 (14)4.2.1难易度选择界面相关类 (14)4.2.2数独列表界面相关类 (14)4.2.3游戏界面相关类 (15)4.3 游戏中主要功能详解 (15)4.3.1选择难易度界面 (15)4.3.2关卡选择界面 (17)4.3.3正式游戏界面 (22)4.4数独数据库存储 (26)4.4.1数据库代码 (26)4.4.2数据库关系E-R图 (27)4.4.3游戏的数据检测 (28)本章小结 (28)第五章游戏的测试和运行 (29)5.1游戏测试概述 (29)5.2测试环境 (30)5.3游戏运行结果 (30)本章小结 (32)第六章总结和展望 (33)6.1总结 (33)6.2展望 (33)结束语 (34)致谢 (35)参考文献 (36)附录第一章绪论1.1 游戏背景“九宫格”一词想必大家并不陌生,它作为数独的前身,最早起源于中国。
河南科技学院《物联网移动应用开发》课程设计报告设计题目:基于android的数独游戏设计班级:物联网131学号:2013156555姓名:胡建刚指导教师:许睿成绩:信息工程学院课程设计报告说明一、写报告前,请认真阅读《课程设计报告说明》。
二、打印装订要求1、一律用A4纸,双面打印,并左侧装订。
报告正文部分均采用宋体小四。
《课程设计报告说明》页也打印。
2、课程设计概述部分占一页;课程设计内容长度根据实际需要填写;结论和指导教师评语及成绩单独占一页。
保证打印格式工整。
3、指导教师评语及成绩部分由指导教师填写。
三、报告内容要求1、课程设计目的结合实际自己写,不要雷同。
2、课程设计原理简要说明所完成课程设计项目所涉及的理论知识。
3、课程设计内容这是课程设计报告极其重要的内容。
概括整个课程设计过程。
(最好在上述内容基础上画出相应的流图、设计思路和设计方法,再配以相应的文字进行说明。
)一、课程设计概述二、课程设计内容图1 游戏主页面4.1.2 点击开始游戏按钮出现难度选择按钮图2 游戏难度选择页面4.1.3 点击容易按钮之后的界面就能图3 游戏页面4.1.4 点击空白区域之后会出现小的界面图4 游戏小键盘选择页面4.1.5点击关于游戏之后的界面图5 相关游戏页面4.1.6 点击游戏设置之后的界面图6 游戏设置页面4.2 运用程序部分介绍4.2.1 数独游戏算法介绍图7 游戏主要算法页面4.2.2 利用画笔画出游戏的界面图8 游戏界面设计页面程序这是将界面画出来的程序。
还有一些确认坐标的程序就不在列举了五.将程序导入手机寻找到res包下面的apk图2 游戏导入手机方法图如图apk的名字就是项目的名字,将这个程序导入安卓手机进行安装就可以应用了。
三、结论四、指导教师评语及成绩。
基于Android实现数独游戏本⽂实例为⼤家分享了Android实现数独游戏的具体代码,供⼤家参考,具体内容如下1、在src中有4个Java类:其中代码分别是:Game.java:package com.example.test1;import android.R.integer;public class Game {public final String str="360000000004230800000004200"+"070460003820000014500013020"+"001900000007048300000000045";/*public final String str="124576893"+"967348521"+"835291674"+"259784316"+"316952748"+"748613902"+"582439160"+"493167285"+"671825430";*/static int sudoku[]=new int [9*9];private int used[][][]=new int[9][9][];int sum=0;public int[] getSudoku(){return sudoku;}public int sum(int a[]){for(int i=0;i<a.length;i++)sum+=a[i];return sum;}public Game(){sudoku=fromPuzzleString(str);calculateAllUesdTiles();}// 根据九宫格中的坐标,返回该坐标,所应该返回的数字public int getTile(int x,int y){return sudoku[y*9+x];}public String getTileString(int x,int y){int v=getTile(x,y);if(v==0){return "";}else{return String.valueOf(v);}}//根据⼀个字符串数据,⽣成⼀个整型数组,作为数独游戏的初始化数据protected int[] fromPuzzleString(String src){int []sudo=new int [src.length()];for(int i=0;i<sudo.length;i++){sudo[i]=src.charAt(i)-'0';}return sudo;}//⽤于计算所有单元格对应的不可⽤数据public void calculateAllUesdTiles(){for(int x=0;x<9;x++){used[x][y]=calculateUesdTiles(x,y);}}}//取出某⼀单元格当中已经不可⽤的数据public int[] getUsedTileByCoor(int x, int y){return used[x][y];}//计算某⼀单元格当中不可⽤的数据private int[] calculateUesdTiles(int x,int y) {// TODO Auto-generated method stubint c[]=new int[9];for (int i=0;i<9;i++){if(i==y)continue;int t=getTile(x,i);if(t!=0)c[t-1]=t;}for (int i=0;i<9;i++){if(i==x)continue;int t=getTile(i,y);if(t!=0)c[t-1]=t;}int startx=(x/3)*3;int starty=(y/3)*3;for(int i=startx;i<startx+3;i++){for(int j=starty;j<starty+3;j++){if(i==x&&j==y)continue;int t=getTile(i,j);if(t!=0)c[t-1]=t;}}int nused=0;for(int t:c){if(t!=0)nused++;}int c1[]=new int[nused];nused=0;for(int t:c){if(t!=0)c1[nused++]=t;}return c1;}protected boolean 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);calculateAllUesdTiles();return true;}private int[] getUsedTiles(int x, int y) {return used[x][y];}private void setTile(int x,int y,int value){sudoku[y*9+x]=value;}}KeyDialog.java:package com.example.test1;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.view.View;//该类⽤于实现Dialog,实现⾃定义的对话框功能public class KeyDialog extends Dialog{//⽤来存放代表对话框中按钮的对象private final View keys[]=new View[9];private final int used[];private ShuduView myView;//构造函数的第⼆个参数当中保存着当前单元格已经使⽤过的数字 public KeyDialog(Context context,int[] used,ShuduView myView) { super(context);ed=used;this.myView=myView;}//当⼀个Dialog第⼀次显⽰的时候,会调⽤Oncreate⽅法@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);//设置标题setTitle("KeyDialog");//⽤于为该Dialog设置布局⽂件setContentView(yout.keypad);findViews();//遍历整个used数组for(int i=0;i<used.length;i++){if(used[i]!=0){keys[used[i]-1].setVisibility(View.INVISIBLE);}}setListeners();}private void findViews(){keys[0]=findViewById(R.id.keypad_1);keys[1]=findViewById(R.id.keypad_2);keys[2]=findViewById(R.id.keypad_3);keys[3]=findViewById(R.id.keypad_4);keys[4]=findViewById(R.id.keypad_5);keys[5]=findViewById(R.id.keypad_6);keys[6]=findViewById(R.id.keypad_7);keys[7]=findViewById(R.id.keypad_8);keys[8]=findViewById(R.id.keypad_9);}//通知MyView对象,刷新整个九宫格显⽰的数据private void returnResult(int tile){myView.setSelectedTile(tile);//取消对话框显⽰dismiss();}private void setListeners(){//遍历整个keys数组for(int i=0;i<keys.length;i++){final int t=i+1;keys[i].setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubreturnResult(t);}});}}}ShuduView.java:package com.example.test1;import android.R.integer;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.app.Dialog;import android.content.Context;import android.content.DialogInterface;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.FontMetrics;import android.graphics.Paint.FontMetricsInt;import youtInflater;import android.view.MotionEvent;import android.view.View;import android.widget.TextView;public class ShuduView extends View{private float width;private float height;int selectedX;int selectedY;private Game game=new Game();public ShuduView(Context context) {super(context);// TODO Auto-generated constructor stub}@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {// TODO Auto-generated method stubthis.width=w/9f;this.height=h/9f;super.onSizeChanged(w, h, oldw, oldh);}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stub//绘制背景颜⾊Paint background_paint = new Paint();background_paint.setColor(getResources().getColor(R.color.shudu_background)); canvas.drawRect(0, 0, getWidth(), getHeight(), background_paint);Paint white=new Paint();white.setColor(getResources().getColor(R.color.shudu_hilite));Paint light=new Paint();light.setColor(getResources().getColor(R.color.shudu_light));Paint dark=new Paint();dark.setColor(getResources().getColor(R.color.shudu_dark));{//画出横向的线canvas.drawLine(0, i*height, getHeight(), i*height, light);canvas.drawLine(0, i*height+1, getHeight(), i*height+1, white);//画出纵向的线canvas.drawLine( i*width,0, i*width,getHeight(), light);canvas.drawLine( i*width+1,0, i*width+1, getHeight(), white);}for(int i=0;i<9;i++){if(i%3!=0){continue;}canvas.drawLine(0, i*height, getHeight(), i*height, dark);canvas.drawLine(0, i*height+1, getHeight(), i*height+1, white);//画出纵向的线canvas.drawLine( i*width,0, i*width,getHeight(), dark);canvas.drawLine( i*width+1,0, i*width+1, getHeight(), white);}Paint number_paint=new Paint();number_paint.setColor(Color.BLACK);//number_paint.setStyle(Paint.Style.STROKE);number_paint.setTextSize(height*0.75f);number_paint.setTextAlign(Paint.Align.CENTER);FontMetrics fm=number_paint.getFontMetrics();float x=width/2;float y=height/2-(fm.ascent+fm.descent)/2;for(int i=0;i<9;i++){for(int j=0;j<9;j++){canvas.drawText(game.getTileString(i, j), width*i+x, height*j+y, number_paint); }}super.onDraw(canvas);}@Overridepublic boolean onTouchEvent(MotionEvent event) {// TODO Auto-generated method stubif(event.getAction()!=MotionEvent.ACTION_DOWN){return super.onTouchEvent(event);}selectedX=(int)(event.getX()/width);selectedY=(int)(event.getY()/height);int used[]=game.getUsedTileByCoor(selectedX, selectedY);int sum=0;int sumNumber=0;sumNumber=game.sum(game.getSudoku());if(sumNumber==45*9){AlertDialog.Builder builder=new AlertDialog.Builder(getContext());builder.setMessage("Success!").setPositiveButton("Exit", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {arg0.cancel();}});AlertDialog alertDialog=builder.create();alertDialog.show();}else {for(int i=0;i<used.length;i++){sum+=used[i];if(sum==45){AlertDialog.Builder builder=new AlertDialog.Builder(getContext());builder.setMessage("No Number!").setNegativeButton("Exit", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {arg0.cancel();}});AlertDialog alertDialog=builder.create();alertDialog.show();}else {StringBuffer sb=new StringBuffer();for(int i=0;i<used.length;i++){sb.append(used[i]);// System.out.println(used[i]);}KeyDialog keyDialog= new KeyDialog(getContext(),used,this);keyDialog.show();}}/*StringBuffer sb=new StringBuffer();for(int i=0;i<used.length;i++){sb.append(used[i]);// System.out.println(used[i]);}*/// //⽣成⼀个LayoutInflater对象// LayoutInflater layoutInflater=LayoutInflater.from(this.getContext());// //使⽤LayoutInflater对象根据⼀个布局⽂件,⽣成⼀个View// View layoutView=layoutInflater.inflate(yout.dialog, null);// //⽣成好的TextView当中,取出响应的控件// TextView textView=(TextView)layoutView.findViewById(edTextId); // //设置Textview内容// textView.setText(sb.toString());// //⽣成⼀个对话框的Builder对象// AlertDialog.Builder builder=new AlertDialog.Builder(this.getContext());// //设置对话框的布局// builder.setView(layoutView);// //创建⼀个对话框// AlertDialog dialog=builder.create();// //显⽰对话框// dialog.show();/* KeyDialog keyDialog= new KeyDialog(getContext(),used,this);keyDialog.show();*/return true;}public void setSelectedTile(int tile) {// TODO Auto-generated method stubif(game.setTileIfValid(selectedX,selectedY,tile)){invalidate();}}}MainActivity.java:package com.example.test1;import android.os.Bundle;import android.app.Activity;import android.view.Menu;public class MainActivity extends Activity {super.onCreate(savedInstanceState);ShuduView sView=new ShuduView(this);setContentView(sView);//setContentView(yout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}2、布局Layout中的配置⽂件:其中activity_main.xml:<RelativeLayout xmlns:android="/apk/res/android" xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" /></RelativeLayout>dialog.xml:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/usedTextId"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello_world"/></LinearLayout>keypad.xml:<?xml version="1.0" encoding="utf-8"?><!-- <LinearLayout xmlns:android="/apk/res/android" android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ></LinearLayout> --><TableLayoutxmlns:android="/apk/res/android"android:id="@+id/keypad"android:orientation="vertical"android:layout_width="wrap_content"android:layout_height="wrap_content"<Button android:id="@+id/keypad_1"android:text="1"/><Button android:id="@+id/keypad_2"android:text="2"/><Button android:id="@+id/keypad_3"android:text="3"/></TableRow><TableRow><Button android:id="@+id/keypad_4"android:text="4"/><Button android:id="@+id/keypad_5"android:text="5"/><Button android:id="@+id/keypad_6"android:text="6"/></TableRow><TableRow><Button android:id="@+id/keypad_7"android:text="7"/><Button android:id="@+id/keypad_8"android:text="8"/><Button android:id="@+id/keypad_9"android:text="9"/></TableRow></TableLayout>3、values中的配置⽂件就只有color.xml是⾃⼰写的,另外三个都是⾃动⽣成color.xml<?xml version="1.0" encoding="utf-8"?><resources><color name="shudu_background">#ffe6f0ff</color><color name="shudu_dark">#64ff0000</color><color name="shudu_light">#64ffffff</color><color name="shudu_hilite">#6400ff00</color></resources>4、⼀切就绪直接运⾏就0k以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
安卓数独课程设计一、课程目标知识目标:1. 学生能理解数独游戏的规则,掌握基本的数独解题技巧。
2. 学生能运用所学的编程知识,设计并实现一个安卓数独游戏。
技能目标:1. 学生能运用逻辑推理能力解决数独问题,提高问题解决能力。
2. 学生能通过编程实践,掌握安卓开发的基本技能,提高创新意识和动手能力。
情感态度价值观目标:1. 学生在数独游戏中,培养耐心、细心和团队合作精神。
2. 学生通过编程创作,增强自信心,激发对计算机科学和编程的兴趣。
3. 学生在课程中,体验到数学与编程的乐趣,认识到知识在实际生活中的应用。
课程性质分析:本课程为选修课,旨在让学生在掌握基本数独技巧的基础上,运用编程知识创作安卓数独游戏,提高学生的逻辑思维能力和编程技能。
学生特点分析:学生为初中年级,具有一定的数学基础和逻辑推理能力,对编程有一定的好奇心和兴趣。
教学要求:1. 结合教材内容,注重数独解题技巧的讲解与实践。
2. 重视编程实践,引导学生动手编写安卓数独游戏。
3. 关注学生的个体差异,提供个性化的指导与帮助。
4. 以学生为主体,鼓励学生主动探索、合作交流,提高课堂参与度。
二、教学内容1. 数独游戏规则与基本技巧- 数独游戏的历史与规则介绍- 数独解题的基本方法:唯一数法、排除法、唯一候选数法等2. 安卓编程基础- 安卓应用开发环境搭建- 界面设计:布局管理、组件使用- 事件处理:点击事件、监听器- 数据存储:SharedPreferences、文件存储3. 数独游戏的编程实现- 游戏界面的设计与实现- 数独逻辑算法的实现- 游戏功能:生成数独题目、检查答案、计时器等4. 项目实践与展示- 学生分组进行项目实践- 编写数独游戏的代码- 汇报与展示作品,交流学习经验教学内容安排与进度:第一周:数独游戏规则与基本技巧介绍,布置学生完成数独题目。
第二周:安卓编程基础,学习界面设计与事件处理。
第三周:数独游戏的编程实现,指导学生编写代码。
基于Android移动平台数独游戏的设计与实现摘要:数独游戏是一种益智类游戏,老少皆宜;android是google 于2007年11月公布的基于linux内核的手机操作平台,随着智能手机的普及,已经成为主流的操作平台。
该文基于android sdk 2.2,以java为核心语言,设计并实现了一款数独游戏。
关键词:数独游戏;android;java中图分类号:tp311 文献标识码:a 文章编号:1009-3044(2013)05-1062-02随着信息技术和移动通信技术的飞速发展和智能手机的日益普及,android手机平台开始在全球风靡。
截止2011年,android在全球手机市场已经占据了半壁江山。
android是一个基于linux内核的开放手机平台作业系统,在linux内核的基础上,提供了各种合用的函数库,和一个完整的应用程式框架,并采用较符合商用限制的apache版权,提供google自制的应用程式运行环境,并提供sdk供应用程式开发者使用。
1 游戏规则数独游戏历史:数独游戏的前身为“九宫格”,最早起源于中国,而到了18世纪末,瑞士数学家欧拉又发明了一种叫做“拉丁方块”的游戏,之后,美国的一家数学逻辑游戏杂志开始刊登这类游戏,使此类游戏得到良好发展。
数独游戏具体规则如下:只需要在空格处填入1-9的数字,并保证每个数字在每个九宫格内只能出现一次,且每个数字在每一行、每一列也只能出现一次。
游戏过程是系统随机生成一个棋局,用户需要在空白处填入相应的数字以满足游戏规则。
2 游戏设计游戏具体的设计思路如下:用户进入欢迎界面后,提示点击屏幕,进入游戏主菜单页面。
主菜单包含:开始游戏,关于游戏,帮助游戏和退出游戏。
点击开始游戏,进入游戏界面;点击关于游戏,进入关于界面,提示游戏有关信息;点击帮助游戏,进入帮助界面,介绍游戏规则玩法;点击退出游戏,直接退出。
设计主要是使用3个类来完成上述思路:类、欢迎界面相关类以及游戏界面相关类,总体框架如图2所示。