当前位置:文档之家› 基于Android的数独游戏设计

基于Android的数独游戏设计

基于Android的数独游戏设计
基于Android的数独游戏设计

课程设计任务书

移动互联网时代的到来极大的改变了我们的生活,而Android是一种以Linux为基础的开放源码操作系统迅速占领了智能机操作系统,所以在android 环境下开发显得尤为必要。Android是开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。因此,对于软件从业人员来说,Android平台具有无限的吸引力。

本文就在分析讨论Android手机软件开发技术原理的基础上,为用户开发出基于Android平台的数独游戏的软件。通过对Android系统架构和应用开发进行初步研究,设计一款数独游戏。在对系统进行详细需求分析的基础上,确定了系统的功能和性能要求,对游戏的开机动画,菜单界面、屏幕绘制、时间控制、布局算法等进行了设计。

本文详细介绍了在Android平台上以Java为语言编写游戏的过程,最终实现了一个界面友好、操作简单的手机益智游戏。

关键词:Android 数独智能机

1、开发工具与环境 (5)

2、系统分析与设计 (9)

2.1数独游戏背景 (9)

2.2游戏功能简介 (9)

3、系统详细设计 (12)

3.1 欢迎界面的设计和实现 (12)

3.2 游戏界面相关类的实现 (17)

3.3 数独算法类的实现 (19)

3.4 游戏的测试和运行 (23)

4、总结 (28)

参考文献 (29)

1、开发工具与环境

Android 是谷歌公司发布的手机操作系统,它是基于Linux 平台的开源手机操作系统,谷歌公司将要把其打造为基于移动终端的真正开放的移动软件平台,不仅拥有移动电话所需要的工作软件,,而且在专利权方面能够不侵犯他人权利去推动移动互联网的创新。

谷歌公司为了开发Android,与开放手机联盟进行了合作,手机开放联盟由全球30 多家移动开发和手机应用的领先企业组成。谷歌公司不仅仅和运营商达成了合作关系、而且与设备制造商以及开发商保持长期合作,目的就在于利用其优势建立移动软件平台,其特点是标准化、开放式的。Android是谷歌公司未来企业战略的一部分,其目的是为了在任何时候任何地点能够提供信息。

Android应用程序与其他很多计算机平台的应用程序不同,他们没有唯一的启动入口,一个Android应用程序是由多个不同组件组合而成,组件间通过Intent 实现通信。Android系统的基本组件包括Activity、Service、Broadcast Receiver 和Content Provider等,要实现组件间通信,还需要Intent消息组件。并不是每个Android应用程序都必须具备这四个组件,很多时候只需要这四种中的某几种就可以了。除此之外,应用程序的所有组件还都必须在AndroidManifest.xml中声明[8]。这是一个XML配置文件,这个配置文件用于定义应用程序的组件、组件的功能及必要条件等。这个配置文件是任何一个Android应用程序所必需的。

1.1 Activity

Activity 可以说是开发人员最常用的组件,同时也属于Android 最基本的组成部分之一。Android 程序中,一般一个Activity 代表手机屏幕上的一屏。举例来说,如果将手机比作一个浏览器,那么一个Activity 就相当于一个网页。在Activity 中,可以添加多个视图,然后为这些视图添加一些事件处理。这些视图可以是按钮、文本框、列表等。可以看到,Activity 的概念和网页的概念相当类似。一般一个Android 应用是由多个Activity 组成,同时这些Activity 相互之间可以进行跳转,例如,按下某个Activity 中的Button 按钮后,可能会

跳转到一个其他的Activity。不过和网页跳转稍有不同,Activity之间的跳转可以有返回值,例如,在Activity A 跳转到Activity B 后,那么当Activity B 运行结束时,可能会返回给Activity A 一个值。在多个Activity 交流的过程中,这种返回机制是相当实用的。当用户进入一个新的屏幕时,之前的屏幕会转入暂停状态,并且保存在历史堆栈中。正是由于历史堆栈的存在,用户可以通过返回操作,返回到之前打开过的所有屏幕。Android默认的是将应用程序从开始到当前的每一个屏幕都保存到堆栈中,不过与此同时,Android还提供了很方便的机制,让开发人员自定义某个屏幕是否需要保存到历史堆栈。Activity 的跳转实现,必须借助于Intent 类。因此Intent 在Android 应用中占据的地位是极其重要的。简单来说,一个Intent 就是对一个将要执行的操作请求的抽象描述。

Intent 的描述,主要包含有两个数据结构:动作(action)和动作对应的数据(data)。动作有很多种,系统中最常见的动作类型有:MAIN(表明该Activity 是应用程序的入口)、VIEW、PICK、EDIT 等等;而动作对应的数据一般以URI 的形式表示,例如:要查看某一个网页,则需要创建Intent,它的动作类型为VIEW,对应的数据应该是该网页的网址。值得一提的是,有一个类叫IntentFilter,它是Intent的相关类。如果说Intent是一个有效的操作请求,那么一个IntentFiler 则用于描述一个Activity(或者Intent Receiver等)能够接收哪些Intent的请求。比如系统浏览器的Activity用于查看某一个网页,那么它用于接收Intent 的IntentFilter,要定义类型为VIEW的动作并且能够过滤表示一个网页网址的URI。通常IntentFilter要被注册在AndroidManifest.xml文件中。Activity 之间的跳转正是通过解析各种Intent 来实现的。例如一个Activity 调用startActivity(intent)方法,希望跳转到其他的Activity 时,会触发系统的Intent 解析过程,在所有安装的应用程序中已注册的IntentFilter 中查找,并最终挑选出能够匹配Intent 的Activity。然后这个新的Activity 因为接收到Intent 的请求而开始运行,完成Activity 的跳转。这种跳转机制提供了两个关键好处:

(1)操作请求被Intent 封装起来,方便Activity 重复利用。

(2)相互跳转的多个Activity 之间实现了松耦合。只要IntentFilier 保持不变,一个ctivity 可以随意修改,而不用担心其他Activity 找不到它。

1.2 Broadcast Receiver

应用程序可以通过Broadcast Receiver 监听一个外部的事件,并做出响应。例如,当应用程序需要对电话呼入这个外部事件做出反应时,可以利用Broadcast Receiver 进行处理。再如,当一个后台下载任务成功的事件发生时,需要提示用户下载完成,仍然可以利用Broadcast Receiver 来进行处理。

Broadcast Receiver不能生成UI,也就是说对于用户来说是透明的,用户是看不到的。Broadcast Receiver只能通过NotificationManager来通知用户这些事件发生了。Broadcast Receiver既可以在AndroidManifest.xml中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。注册完成之后,当事件来临的时候,即使程序没有启动,系统依然可以根据定义,自动启动程序。各种应用也可以通过使用Context.sendBroadcast()将它们自己的Intent Broadcast广播给其他应用程序。

1.3 Service

Service是一种程序,它可以运行很长时间,但是它却没有用户界面,不可交互,而且不能自己运行。它需要通过某一个Activity或者其他的Context对象来调用[12]。最常见的例子,比如说用户正在运行一个音乐播放器的程序,此时如果想浏览网页,那么,在用户导航到Android的浏览器以后,虽然进入了浏览器屏幕,但是歌曲的播放并没有停止,而是在后台继续播放着。其实播放的动作正是由播放音乐的Service执行着。当然,如果需要的话,Service也是可以停止。通过startService(Intent service)可以启动一个Service,通过

Context.bindService()可以绑定一个Service。

1.4 Content Provider

对于数据存储,Android与其他的操作系统有一点不太一样,即数据在Android程序中都是私有的,这些数据包括文件类型和数据库类型以及其他类型的数据。这样系统和应用程序的数据就各自独立起来,以避免受到某些不正常程序或是病毒的影响。不过这并不代表各应用程序之间就因此而无法进行数据交换

了。当某个应用程序希望与其它的应用共享其数据时,Android提供的Content Provider就可以发挥作用了。在实现Content Provider的抽象接口以后,程序便可以将自己的数据暴露出去,其他程序只要有权限,就可以通过这一套标准而统一的接口,读取或是删除该程序的数据[13]。

2、系统分析与设计

2.1数独游戏背景

数独的前身为“九宫格”,最早起源于中国。但当时的算法比现在的更为复杂,要求纵向、横向、斜向上的三个数字之和等于15,而不是数字不能重复。儒家典籍《易经》中的“九宫图”也是来源于此。

到了18世纪末,瑞士数学家莱昂哈德·欧文又发明了一种叫做“拉丁方块”的游戏,之后不久,美国的一家数字逻辑游戏杂志开始刊登这类游戏,使此类游戏得到良好发展,之后又在日本得到了广泛的传播。2004年,第一个“数独”游戏被刊登上了英国《泰晤士报》的封面,此时开始数独游戏才真正为世界所知晓。

数独游戏的规则很简单,只需要在空格处填写1~9的数字,并保证每个数字在每个九宫格内只出现一次,而一般的游戏过程是系统随机生成一个棋局,然后玩家需要在空白处填上相应的数字使其满足游戏规则。由于此类游戏操作简单,不需要特定的语言基础,也不需要进行数字运算且可玩性高、锻炼思维、开发大脑,所以很快风靡全球。

2.2游戏功能简介

数独游戏的规则很简单,只需在空格处填入 1~9 的数字,并保证每个数字在每个九宫格内只能出现一次,且每个数字在每一行、每一列也只能出现一次,而一般的游戏过程是系统随机生成一个棋局,然后玩家需要在空白处填上相应的数字使其满足游戏规则。游戏框架如下图所示:

图3.1 游戏框架图

该游戏的运行步骤如下。

1.启动游戏后首先进入的便是欢迎界面的动画,在欢迎界面中,“点击屏幕继续……”闪动,达到提示的效果。

2.在游戏界面点击屏幕,便进入菜单界面。

3.在菜单界面单击“关于游戏”菜单可进入“关于”界面,在“关于”界面中介绍了该游戏的目标平台及开发日期。

4.在菜单界面单击“帮助游戏”菜单可进入“帮助”界面,在“帮助”界面介绍了游戏的基本规则。

5.在菜单界面单击“开始游戏”菜单可进入游戏界面。

6.当在游戏过程中单击“暂停”按钮时,便进入暂停状态。

7.在游戏过程中随时可以通过“换题”按钮来更换题目。

8.当玩家单击“放弃”按钮时,会提示玩家是否真的需要退出游戏,然后根据玩家的选择进行操作。

9.当玩家单击“提示”按钮时,界面上会出现一个红心表示当前可以提示玩家输入数字,此时再单击空白处,便会自动填上正确答案。

10.当玩家将界面中所有的空白全部填满数字时,系统会自动判断所填写的

数字正确与否,当有错误时,会出现游戏失败界面;当全部填写正确时,会出现游戏胜利界面。

11.在胜利或者失败状态时,玩家可以通过点击屏幕任意位置返回欢迎界面。

12.在菜单界面单击“退出游戏”便可退出该游戏。

3、系统详细设计

3.1 欢迎界面的设计和实现

3.1.1 主类KLSDActivity实现

在本游戏设计中,控制调度模块主要是由KLSDActivity 类来实现的KLSDActivity 继承自Activity 类,它提供了整个游戏的入口。并且在游戏运行过程中也随时需要KLSDActivity 的管理。组成该类的成员变量如下所示:WelcomeView welcomeView;

GameView gameView;

AboutView aboutView;

HelpView helpView;

Handler myHandler

以上类都是对View的继承,其中WelcomeView是对欢迎动画界面的引用,GameView是对游戏界面的引用,AboutView是对目录界面的引用,HelpView是对帮助界面的引用,Handler Handler主要负责线程之间的通信,通过接受消息来更新UI线程中的控件。这里使用Handler类主要实现的是根据接收到的消息做出相应的切换视图操作,从而控制调度各个视图的显示。Handler机制使得线程间的通信通过Message和Runnable对象来传递和处理。在此模块的实现中,Handler 传递的消息内容被封装到一个Message对象中,Message中包含了消息的描述和任何形式的可以被Handler发送的数据对象,其最主要的字段是what,此字段由用户自己定义,为消息类型码,接收方可以根据该字段的值来确定收到的消息是关于什么的。这里重点实现了Handler类中的handleMessage()方法,此方法用来接收并处理消息,接收的参数为一个Message对象。在这里定义了Message的what 字段,根据接收到的what字段的值来切换到不同的界面,从而实现对整个游戏运行的管理。

下面介绍KLSDActivity的成员函数:

onCreat():此函数是Activity 类的入口函数,在此函数中先将手机设置成

全屏模式,然后切换到加载界面并在后台初始化欢迎动画界面。

initWelcomeView():此函数实现欢迎界面的切换。

initGameView():此函数实现游戏界面的切换。

initHelpView():此函数初始化帮助界面。

initAboutView():此函数初试化关于界面。

上面介绍了实现控制调度模块的KLSDActivity 类,可以看出这里主要通过Android中的Handler 机制来控制当前屏幕显示哪一个界面,从而完成控制调度功能。

3.1.2 欢迎界面WelcomeView类的实现

欢迎界面WelcomeView类实现的是开机动画的功能,简要流程图如下:

图4.1 WelcomeView类功能流程图

欢迎界面是通过 WelcomeView 类实现的。该类继承自SurfaceView 类,采用双缓冲机制进行绘图。它可以控制表面的格式,比如大小,显示在屏幕中的位置,最关键是的提供了SurfaceHolder 类,使用getHolder 方法获取。在用WelcomeView 绘制之前必须使用lockCanvas()方法锁定画布,并得到画布,然后在画布上绘制;当绘制完成后,需要使用unlockCanvasAndPost 方法来解锁画布,于是才能显示在屏幕上。

BitmapID[]创建了存放动画帧图片ID 的数组,将其存放到数组中方便管理,在之后进行系统维护时,如需新增动画帧,只需在此数组中添加新的ID 即可。

在 WelcomeView 类中,public WelcomeView(KLSDActivity activity) { }是此类的构造器,主要用来初始化刷帧线程、动画线程、以及初始化图片,onDraw()方法主要用来绘制屏幕,按次序分别欢迎动画以及菜单界面。onTouchEvent()方法为屏幕的监听方法,该方法通过玩家单击位置的坐标判断出玩家单击的是菜单界面的哪些区域,并根据单击的按钮向Activity 的Handler 发送消息。

3.1.3 WelcomeViewDrawThread类和WelcomeViewGoThread类的实现

为了实现欢迎界面的动画效果,这里设计了WelcomeViewDrawThread 类,这个类主要负责界面的定时刷新,而WelcomeViewGoThread类负责动画的生成。WelcomeViewDrawThread类和WelcomeViewGoThread类的生成都继承自Thread 类,重写了Thread 类里的run()方法,都是通过run()方法实现功能。

WelcomeViewDrawThread其run()方法的代码如下:

public void run() {//重写的run方法

Canvas c;//声明画布

while (this.flag) {//循环

c = null;

try {//锁定整个画布

c = this.surfaceHolder.lockCanvas(null);

synchronized (this.surfaceHolder) {//同步

welcomeView.onDraw(c);//调用绘制方法

}

} finally {//用finally保证一定被执行

if (c != null) {//更新屏幕显示内容

this.surfaceHolder.unlockCanvasAndPost(c);

}

}

try{

Thread.sleep(sleepSpan);//睡眠指定毫秒数

}catch(Exception e){//捕获异常

e.printStackTrace();//打印异常信息

}

}

}

分析其代码,这里主要控制c 值的变化,当其值为null 时,结合WelcomeView

类里的onDraw()方法,绘制背景图片,绘制完成后,c 值不为null,解锁屏幕,将画布置空,c值又为null,释放和更新屏幕显示的内容,从而实现刷帧作用。

WelcomeViewGoThread类中run()方法代码如下所示:

public void run() {//重写的run方法法

while (flag) {//循环

welcomeView.drawIndex++;//自加

if(welcomeView.drawIndex>welcomeView.bitmapsID.length-1){

welcomeView.drawIndex = welcomeView.bitmapsID.length-10;

}

if(welcomeView.drawIndex%5 == 0){

welcomeView.drawString = !welcomeView.drawString;

}

try{

Thread.sleep(sleepSpan);//睡眠

}catch(Exception e){

e.printStackTrace();//打印异常信息

}

}

}

分析该类的run()方法,控制drawIndex的值,每次循环将欢迎界面的drawIndex 加1,然后判断是否到达数组的最后,当到达最后时,将其减10,然后继续进行循环。同时,判断drawIndex是否为5,这样每循环5次改变drawString 的值,从而实现文字的闪动效果。

3.1.4 HelpView类和AboutView类的实现

游戏中关于游戏帮助和游戏说明,我们分别通过HelpView类和AboutView类的实现。HelpView类和AboutView类都是通过onDraw()方法来绘制界面。由于这两个类在很大程度上是相似的,所以下面只分析HelpView类,代码如下所示:public HelpView(KLSDActivity activity) {

super(activity);

this.activity = activity;//得到activity的引用

surfaceHolder = this.getHolder();//获得surfaceHolder

getHolder().addCallback(this);//添加Callback接口的实现

helpBitmap = BitmapFactory.decodeResource(getResources(),

R.drawable.help);

}

public void onDraw(Canvas canvas) {//绘制方法

canvas.drawColor(Color.WHITE);//背景色

canvas.drawBitmap(helpBitmap, 0, 0, null);//绘制图片

}

public boolean onTouchEvent(MotionEvent event) {//键盘监听方法

if(event.getAction() == MotionEvent.ACTION_DOWN){//屏幕被按下

double x = event.getX();

double y = event.getY();//得到坐标

if(x>270 && x<310 && y>440 && y<480){//点击确定按钮

activity.myHandler.sendEmptyMessage(2);

}

}

return super.onTouchEvent(event);

}

public HelpView(KLSDActivity activity) 为“帮助”界面的构造器,在构造器中先得到activity 以及surfaceHolder的引用,然后添加Callback 接口的实现并对图片资源进行初始化。

onDraw()为重写的绘制方法,在该方法中,首先绘制白色背景,然后将帮助界面的背景图片绘制到指定位置。

onTouchEvent()为重写的键盘监听方法,当玩家点击屏幕时,会调用该方法来处理玩家的屏幕事件,在“帮助”界面中该方法实现比较简单,只是判断玩家点击的是否为返回按钮即可。当玩家点击返回按钮时,需要向activity 发送Handler 消息通知控制器切换屏幕。

3.2 游戏界面相关类的实现

游戏界面实现游戏展示,计时界面展示,以及功能按键。流程图如下图所示:

图4.2游戏界面流程图

3.2.1 游戏界面GameView的实现

首先理解下GameView的运行思路,GameView在初始化时候读取相关图片信息,包括背景图片,数独背景框图片等等,在初始化同时,启动GameViewDrawThread线程进行刷帧,TimeThread 线程来更新界面中的时间。当玩家点击背景框空白位置,需要绘制数字键盘时,会启动DrawKeyThread 线程绘制数字键盘。当玩家点击按钮时候,相关方法会被调用。以上的过程都需要KLSDActivity的参与管理。

GameView 同样继承自SurfaceView 类,其关键也是实现onDraw()方法。onDraw()方法分别绘制游戏界面背景图片,数字背景框,选题提示等等按钮,时间显示区域等。DrawKey()方法实现了数字键盘的绘制,保证在点击空白框时候

有圆盘数字选框出现。通过surfaceCreated()和surfaceDestroyed()两个方法负责相关线程的启动和调用工作。

3.2.2 时间线程TimeThread的实现

TimeThread线程主要用来更新界面中的时间,作为数独游戏玩家计时功能,代码如下:

public class TimeThread extends Thread{

GameView gameView;//声明GameView的引用

boolean flag=true;//循环标志位

public TimeThread(GameView gameView){//构造器

this.gameView=gameView;//得到GameView的引用

}

public void run(){//重写的run方法

while(flag){

gameView.time++;//时间自加

try{

Thread.sleep(1000);//睡眠一秒种

}catch(Exception e){//捕获异常

e.printStackTrace();//打印异常信息

}

}

}

}

TimeThread 类的实现比较简单,只需每隔一秒钟通过gameView.time自加更改一下GameView 中表示时间的属性即可。

public TimeThread(GameView gameView) 为时间线程的构造器,在构造器中先得到GameView的引用。然后重写run()方法,通过时间的自加,实现一秒钟功能。

3.3 数独算法类的实现

数独算法类主要实现数独的生成以及填入数字的检测功能,流程图如下:

图4.3 WelcomeView类功能流程图

3.3.1数独算法基本逻辑

本节将对数独算法类ShuDuSuanFa.java 进行解释,该类基本上是数学计算,通过一定的算法产生所需要的数独数组,通过特定的接口供其他类使用。

该类的目的是创建一个二维数组来表示数独矩阵。使矩阵的每行、每列、每块都没有重复的数字。算法的简单思路是先随机取出一个0~9 的数字,然后检查其所在的行、列、块是否都符合要求。当符合要求时继续填充下一个,而当不符合要求时,再次随机取出一个没有取出过的数字,再判断。当9 个数字都取出过后还没有找到符合要求的数字时,进行回退处理,即将最后一个取出的符合要求的数字进行重新取值,直到所有数字全部填充完毕。

在求解数独时候,运用到回溯法,将所有的解(问题的解空间)按照一定结构排列,再进行搜索。一般解空间构造成为为树状结构,用深度优先的策略搜索,一般有两种方式:

1.只需要一个解的话,找到解即停止。

2.需要求出所有解,则需做“树的遍历”找到所有解。

回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。

回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。

回溯法是一种搜索算法,其基本思路是:在一个问题中,根据题意给出的边界条件划定出所有可能解的范围(称为可能解),根据题意确定出约束条件。利用程序顺次在所有可能解中搜索时按照深度搜索的方式进行。即在第一层选定一个满足约束条件的解,然后以该可能解为出发点,搜索第二层的一个可能解(试探)。如果搜索到第二层的一个可能解,则继续搜索第三层得一个可能解。依次类推,直到所有层得可能解都被找到,则得到了该问题的一个完整解。如果第二层所有的肯可能解都不满足约束条件,则返回第一层,放弃原有的可能解,使用第一层的下一个可能解(回溯)。一次类推,寻找第二层的一个可能解。

回溯法相对于其他穷举的特点在于,不必把问题的每一层的所有可能解都遍历一遍,只要当前的可能解不满足约束条件就抛弃该解,寻求下一个可能解,而不必求解其余的下层解。当当前层得所有可能解都不满足约束条件,则回溯到上一层,抛弃上一层的当前可能解。

从以上分析中结合数独问题的规则,得出数独问题的约束条件为:

每一格的数值范围仅限1-9

每一格内的数字在当前行不允许重复

每一格内的数字在当前列不允许重复

每一格内的数字在当前小宫格内不允许重复

由此,回溯法通过约束条件的筛选,在所有解中除掉不可能的解,从而获得问题的一个或者全部解。

3.3.2 检测填充结果

根据数独游戏的规则,玩家填充81个宫格之后,要满足所有行,所有列和所有小九宫格内不能出现重复的数字,并以此为条件进行检测。

android课程设计报告(数独游戏)讲解

河南科技学院 《物联网移动应用开发》课程设计报告 设计题目:基于android的数独游戏设计 班级:物联网131 学号:2013156555 姓名:胡建刚 指导教师:许睿 成绩:

信息工程学院 课程设计报告说明 一、写报告前,请认真阅读《课程设计报告说明》。 二、打印装订要求 1、一律用A4纸,双面打印,并左侧装订。报告正文部分均 采用宋体小四。《课程设计报告说明》页也打印。 2、课程设计概述部分占一页;课程设计内容长度根据实际需要填写;结论和指导教师评语及成绩单独占一页。保证打印格式工整。 3、指导教师评语及成绩部分由指导教师填写。 三、报告内容要求 1、课程设计目的结合实际自己写,不要雷同。 2、课程设计原理简要说明所完成课程设计项目所涉及的理论 知识。 3、课程设计内容这是课程设计报告极其重要的内容。概括整个课程设计过程。(最好在上述内容基础上画出相应的流图、 设计思路和设计方法,再配以相应的文字进行说明。)

一、课程设计概述 1、课程设计目的 通过对android的学习,编写除了这个数独游戏,掌握android的控件知识的使用,和界面的制作。对java知识的应用。这样不仅对自身android的学习可以更上一层楼,而且这个游戏可以锻炼智力,游戏简单,适合多人群游戏,健康,益智的 游戏。 2、课程设计要求 1. 熟悉eclipse开发软件,熟练使用java和xml。 2. 学习和掌握android的四大组件的使用。 3. 熟练掌握Android 游戏开发多线程技术、Android 游戏开发的图形处理技术等。 4. 完成程序的编写工作。 5. 完成程序在模拟器上的实现,以及在安卓手机上的功能实现,并完成优化。 3、课程设计原理 基于数独游戏规则,通过java建立一系列的算法。然后利用android的控件知识建立一系列的界面。包括背景的制作。

基于android的游戏开发开题报告总结.doc

开题报告 (1)研究的目的和意义 Android 操作系统最初是由 Andy Rubin 制作,最初主要支持手机,在2005 年被搜索巨头 Google 收购注资,并组建开放手机联盟开发改良随后,逐渐扩展到平板电脑及 其他领域上,2008年全球第一步安卓智能手机问世,标志着安卓的重生。而在2011 年 11 月份的调查, android 智能机一跃超过苹果,以全球市场占有率76%,中国 90% 遥遥领先。在安卓手机中以三星的GALAXY III系列为领头羊,领跑安卓手机最新科技。 当人类步入 21 世纪,随着科技的日趋发展,智能手机 ,平板电脑等高端电子产品进 入了我们的日常生活,随着 3G 时代已经慢慢的融入了我们的日常生活,随着社会的进 步和科技的发展手机已经从单纯的通讯工具转变为集娱乐,学习,通讯为一体的高端电子 产品,随着诺基亚塞班系统的没落,安卓系统迎来了春天。据市场调查,智能手 机市场已经形成了二足鼎力的态势,安卓和苹果的 IOS作为领军者遥遥领先于 windows phone 系统。同时各种 android 应用程序已经有了比较明朗的发展前景,尤其以手机游 戏这个亮点受到广泛的关注和喜爱,正是由于android 拥有广大的用户群, android 手 机游戏拥有巨大的潜力,它也主宰者手机游戏的未来,此次毕业设计顺应时代发展潮 流,依托现在硬件上的优势,以 android 为平台,旨在玩家打造一款优秀的安卓小游戏, 使玩家身临其境,爱不释手。在安卓游戏的市场上,使得 android 手机游戏种类更加丰 富多彩,为安卓手机游戏的发展做出贡献。 (2)国外同类研究的概况 手机游戏种类和资源日益丰富,游戏界面越来越华丽,游戏规则日益复杂,已经 具备了很强的娱乐性和交互性的复杂形态。 2003 年 10 月,Andy Rubin 等人创建了 Android 公司,google 公司于 2005 年 8 月 17 日低调收购 android 以及其团队,Andy Rubin 成为 Google 公司 android 项目工程部

android课程设计报告(数独游戏)

河南科技学院《物联网移动应用开发》课程设计报告 设计题目:基于android的数独游戏设计 班级:物联网131 学号:2013156555 姓名:胡建刚 指导教师:许睿 成绩:

信息工程学院 课程设计报告说明 一、写报告前,请认真阅读《课程设计报告说明》。 二、打印装订要求 1、一律用A4纸,双面打印,并左侧装订。报告正文部分均采用宋体小四。《课程设计报告说明》页也打印。 2、课程设计概述部分占一页;课程设计内容长度根据实际需要填写;结论和指导教师评语及成绩单独占一页。保证打印格式工整。 3、指导教师评语及成绩部分由指导教师填写。 三、报告内容要求 1、课程设计目的结合实际自己写,不要雷同。 2、课程设计原理简要说明所完成课程设计项目所涉及的理论知识。 3、课程设计内容这是课程设计报告极其重要的内容。概括整个课程设计过程。(最好在上述内容基础上画出相应的流图、设计思路和设计方法,再配以相应的文字进行说明。)

一、课程设计概述 1、课程设计目的 通过对android的学习,编写除了这个数独游戏,掌握android的控件知识的使用,和界面的制作。对java知识的应用。这样不仅对自身android的学习可以更上一层楼,而且这个游戏可以锻炼智力,游戏简单,适合多人群游戏,健康,益智的游戏。 2、课程设计要求 1. 熟悉eclipse开发软件,熟练使用java和xml。 2. 学习和掌握android的四大组件的使用。 3. 熟练掌握Android 游戏开发多线程技术、Android 游戏开发的图形处理技术等。 4. 完成程序的编写工作。 5. 完成程序在模拟器上的实现,以及在安卓手机上的功能实现,并完成优化。3、课程设计原理 基于数独游戏规则,通过java建立一系列的算法。然后利用android的控件知识建立一系列的界面。包括背景的制作。

基于Android系统的游戏APP设计

本科毕业设计(论文)题目:基于Android系统的游戏APP设计 院系:工学院电气与电子工程系 专业:自动化 班级:自动化1202 姓名:王学松 学号:201202022007 指导教师:张俊超杨鹏 烟台南山学院教务处 二〇一六年六月

烟台南山学院毕业设计(论文)原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在论文中作了明确的说明并表示了谢意。本声明的法律结果由本人承担。 论文作者签名: 年月日 烟台南山学院关于毕业设计(论文)使用授权的说明 本人完全了解烟台南山学院有关保留、使用学士学位论文的规定,即:学校有权保留、送交论文的复印件,允许论文被查阅,学校可以公布论文的全部或部分内容,可以采用影印或其他复制手段保存论文。 指导教师签名:论文作者签名: 年月日年月

烟台南山学院本科毕业设计(论文)第 I 页基于Android系统的游戏APP设计 摘要 随着移动互联网的不断发展,我们的生活发生了巨大的改变,智能手机已经成为我们日常生活所必不可少的一个工具,而在整个手机操作系统中,Android以一种开放源码操作系统为基础的系统迅速霸占了手机操作系统市场,因而在Android系统的环境下开发极其重要。Android系统是完全开放性的系统构架,不仅开发和调试环境方便快捷,而且对于用户来说,具有极强的扩展性,用户可体验各种丰富的组件、多媒体功能和各类浏览器。对于从事软件开发工作的人,在Android平台下开发软件非常有吸引力。 Android是以Java为基础的一种语言,本文详细介绍了如何在Android平台上开发编写程序,在分析软件开发技术原理的基础上,在Android平台上为用户开发了一款数独游戏。而在对Android系统进行进一步需求分析时,明确了系统的各项性能要求,而且对于数独游戏的启动动画、主界面设计、屏幕的绘制、时间的控制以及如何布局等进行了一系列的设计,最终为用户实现了一个操作简单、内容丰富的益智休闲游戏。 关键词Android数独游戏智能机

Java课程设计——拼图游戏

拼图游戏 1.游戏规则介绍 (1)本游戏中有一个格子是空的,其他格子内随机放置由要拿来拼图切割成的8个小图片。在开始游戏之前,会出现一张完整的图片,点击“菜单”里面的“开始”, 进行拼图游戏,通过将空格旁边的小图片与空格交换位置(不断的移动方块), 来实线拼图,直到方块一行一行的按图片的原始样子拼好即可完成该游戏。在 移动过程中,窗口右边会显示移动的步数。 (2)游戏拼完后,会弹出一个信息框,询问是否再玩一局,点击“Yes”将再打开一个游戏开始的界面,可以继续新的一局游戏,点击“No”将结束游戏,关闭所有窗 口。 2.游戏实现的功能 (1)点击运行程序,将弹出一个窗口,显示一张完整的图片。 (2)菜单栏的菜单,会出现3个菜单项:“开始”、“重新开始”、“结束”。 点击“开始”,即开始一局游戏;“在游戏的任何时候点击”重新开始“,即结束 当前游戏,重新开始一局新的游戏;点击“退出“,立即退出游戏,关闭窗口。 (3)在游戏过程中,游戏界面右边会同步显示当前的步数。 游戏的一些界面: (1)主界面: (2)菜单项:

(3)帮助--->关于 (4)点击开始 (5)游戏过程 (6)游戏成功

(7)破纪录 3.程序实现 Pt类: (1)建立一个类Pt,public class Pt extends JFrame implements KeyListener{}。该类继承父类JFrame,实现KeyListener接口。 (2)Pt类的构造函数Pt()。定义窗口参数,添加菜单栏和多个标签;调用读文件函数read (),读取该游戏的最高记录,并将该记录输出到标签上;为各个菜单添加事件,鼠标点击“开

《游戏美术》课程大纲教学设计

《游戏美术》课程教学设计 一、课程基本情况 1、课程名称:《游戏美术》 2、开课系:影视艺术系 3、课程类别:专业素质教育 4、授课学时:72学时(理论32学时+实践40学时) 二、学习领域设计依据 课程领域名称:《游戏美术》 课程基本信息:本课程是影视动画专业的核心课之一,总学时72课时。通过本课程的学习,对场景、道具、角色、以及角色动画等制作的原理、技巧、程序与具体运作应有全面而深刻的了解,是基于数字平台融合视听语言、画面编辑及影视多媒体设计的课程。 三、学习领域的教学目标 1、知识目标 《游戏美术》课程的学习主要使培养学生了解整个游戏美术制作流程,并掌握游戏美术的基本方法和制作手段;培养学生的观察和分析力,掌握对产品的综合分析能力;培养学生对数字媒体语言的艺术分析力。掌握场景、道具、角色、的模型、UV、贴图、法线、AO 的烘焙、绑定、等几大功能,运用软件熟练地进行游戏美术制作。在实践中激发学生的创造力和想象力,使学生能胜任游戏美工的工作。本课程需要多媒体教室、机房等硬件环境,必须准备与课程要求相关的辅助图书资料,经典短片案例,经典影视广告,实验课题,学生单独作业、集体作业。要求学生对MAYA、UNFOLD3D、PS、MUDBOX有初步理解,能将多种软件综合运用。 2、能力培养目标 通过《游戏美术》课程的教学,应注意培养学生以下能力: (1)实践操作能力——通过学习,培养学生对工作流程及游戏美术操作能力。 (2)创新审美能力——通过学习,让学生掌握数字特效的内部构成、外部结构语言的掌握并提高审美能力。 (3)组织协作能力——通过学习,培养学生对软件、硬件组织协调能力,以及对内容及形式的策划整合能力。 3、素质培养目标 (1)团队精神——通过团队的协作,完成大的项目制作,从而培养学生合作意识。 (2)不断学习的理念——通过教学,引导学生培养深入思考的习惯,不断学习的意识。培养学生观察、思考、分析、解决问题和具备再学习的工作能力。

JAVA数独(九宫格)游戏软件设计报告(推荐文档)

佛山科学技术学院 《可视化编程技术》课程设计报告数独(九宫格)游戏软件设计 学生姓名:卫泶媚 学号: 2012914201 年级专业:12级教育技术学2班 指导老师:容汝佳 学院:教育科学学院 广东★佛山 提交日期:2014年6月

目录 1. 前言______________________________2 2.概要设计____________________________3 2.1 数独游戏分析_________________________3 2.2 数独游戏界面设计_______________________5 2.3 数独游戏程序功能_______________________5 3. 详细设计___________________________7 3.1类设计___________________________7 3.2 数独算法设计_________________________9 4.程序代码____________________________10 5.参考资料____________________________19 6.心得体会____________________________20

摘要:本程序是个简单的数独游戏界面,在9×9的大九宫格中有9个3×3的小九宫格,游戏根据玩家选择的难易程度提供不同数量的数字。根据已给出的数字,利用逻辑和推理,在其余空格上填入1至9的数字。每个数字在每个小九宫格内每行、每列只能出现一次。虽然玩法简单,但数字排列方式却千变万化,是锻炼逻辑推理能力的好方法。另外,设有“答案”和“玩法说明”窗口为玩家提供参考和帮助。玩家完成所有数字的填写后,可进行提交,游戏系统会根据所填写的结果弹出相应的对话框。 关键字:java游戏软件,数独(九宫格),界面布局 1 前言 经济在发展,科学在发展,人也在发展。在学习JAVA语言后,我决定使用Java语言编写一个简单的数独游戏,来锻炼人们的逻辑推理能力和思维活跃度,同时,也能满足人们日常空余时间的娱乐需要。数独热潮已经在全球蔓延已久,随着数独游戏不断地发展完善,数独也越来越受到家长和孩子的青睐,认为数独不仅仅只是游戏,而是开发智力的一种方法。在孩子游戏娱乐的同时还能得到逻辑思维的锻炼,又何乐而不为呢? JAVA语言是一种纯面向对象的编程语言,自1995年诞生至今,已经得到飞速的发展,涉及计算机应用的方方面面,如浏览器应用、桌面应用、个人数字代理等等,Java语言面向对象、跨平台、安全性、多线程等特性,奠定了其作为网络应用开发首选工具的基础。 另外,本数独游戏程序框架结构清晰明朗,便于读者理解以及为以后增添新功能打下良好的基础;同时,虽然这是一个较为普通的数独游戏程序,但是具有较强的实用性,而且对程序的配置要求不高,能够广泛应用。

基于Android操作系统的中国象棋手机游戏

基于Android操作系统的中国象棋手机游戏

石家庄科技信息职业学院 毕业论文 题目:基于Android操作系统的中国象棋手机游戏 学号:090124012 姓名:王麒 专业班级:软件技术(游戏方向)09-24 班 指导教师:刘永伟 完成日期:2011-12-18

摘要:Chess是运行在Android平台上的一款支持双人联网对局、即时聊天、对弈记录的休闲棋牌类手机游戏。 系统采用面向对象的编程思想进行构思与分析设计;使用UML构建软件模型;使用MVC架构模式实现系统的整体架构及各模块之间的接口设计;在系统的实践过程中还采用了部分GoF的设计模式进行编码与开发。 本文详细系统地阐述了在Android平台上,面向对象的软件开发思想对Chess游戏系统的分析、设计及实现过程。在项目的实践过程中,主要用到了以下技术:手机布局主要使用了XML设计,程序及其子模块的生命周期管理用到了Activity流程控制,数据储存方面使用的是轻量级数据库SQLite、网络通讯部分使用的是XMPP即时通讯协议进行数据的传输、对弈的画面更新使用的是手机的2D 图形编程。本论文的前半部分将简要介绍系统相关的行业信息及基础的技术知识,后半部分将对本人在系统各模块中所使用的关键技术的实现进行了全面的介绍。 关键词:联网对弈;中国象棋;手机游戏;Android平台

ABSTRACT:CnChess is a Chinese Chess game that running on the Android platform.It support many of the features such as playing games through the network, real-time chat, and play chess records of casual mobile games. The CnChess game is object-oriented programming design and analysis of the idea of thinking; build software models using UML; use of MVC architecture patterns to achieve the overall system and the interface between the module designs; in practice the system also uses some of the GoF's design patterns to coding and development. This paper systematically expounded in the Android platform, the application of MVC pattern and hierarchical structure of object-oriented software development thoughts cnChess game system analysis, design and implementation process. Practice in the course of the project, mainly used in the following technologies: cell phones primarily use XML layout design, process and life cycle management sub-module uses the Activity process control, data storage areas using a lightweight database SQLite, netwrok communication Some use the XMPP instant messaging protocol for data transmission, public debate of the frame using a mobile phone 2D graphics programming. The first part of this paper will briefly introduce the system based on relevant industry information and technical knowledge, the latter part of each module in the system; I will be in the key technology used in the realization of a comprehensive introduction. Keywords: Network of games; Chinese chess; Mobile Games; Android platform

java拼图游戏面向对象课程设计报告

姓名Name 学号 Student No. 20137045 班级 Class 代码总行数Code Lines 222 项目名称 Item 1.实验目的 本次课程设计旨在通过一个完整项目的开发,巩固面向对象程序设计、软件工程、数据库技术等课程的相关知识,加深学生对Java语言的理解,尤其是对面向对象思想、Java编码规范、JDBC访问数据库的理解,使学生进一步掌握环境构建、代码编写、文档阅读与理解、文档编写、软件测试、发行与部署等技能,进一步提高学生的学习能力、理解能力、表达能力及沟通能力。 2.实验内容 本次课程设计选定的实验项目是使用JAVA语言编写一个拼图游戏并实现其基本功能。不用自己手动切割图片,再进行加载。而是应用类方法在内存中进行图片切割和加载,方便了用户的使用。 利用了Graphics中的public abstract boolean drawImage()方法把img 中由(sx1, sy1)(sx2, sy2)指定的矩形区域画到observer 中由(dx1, dy1)(dx2, dy2)指定的矩形区域内进行构思拼图游戏的具体实现。 导入了一个可播放背景音乐的jar包,在玩游戏时可以欣赏背景音乐。 3.类图

4.运行界面

图1、游戏初始界面 图2、游戏运行界面

图3、拼图成功界面 5.关键代码(要求在类的定义以及方法定义的前面给出相关描述信息)//定义一个Pintu类 public class Jpgsaw extends JFrame{

private Image image, buff; //原始图片,缓存图片 private int[][] map = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8} }; //定义数组map,给分割后的图片标号 private Point point = new Point(2, 2); //记录第九块图片位置 private int sx; //分割后每一个图片的宽度 private int sy; //分割后每一个图片的高度 private Canvas canvas; //加载图片容器,定义可以显式定位子元素使用坐标是相对 Canvas 区域的区域,绘制图形 private Graphics gs; //gs画出Canvas图片坐标 private Graphics gb; //gb画出buff图像 private boolean isRunning = false; //游戏是否正在进行 private JButton start = new JButton("开始新的游戏"); // 按钮1 private JButton show = new JButton("显示正确图片"); //按钮2 private JTextArea showStep = new JTextArea("显示步骤");//设置步骤显示 private JPanel panel = new JPanel(); //一般轻量级面板容器,装在上面2个按钮 private int steps = 0; // 记录移动的步骤 public Jpgsaw(String title) { //构造方法,初始化变量 super(title);//调用了当前类Jpgsaw的父类JFrame的构造方法 try { //异常抛出 image = ImageIO.read(new File("gg.jpg")); //装载图片 } catch (IOException e) {//捕获自定义的异常 e.printStackTrace(); } initScreen(); //用此方法来初始化canvas,由于canvas 初始化较复杂,所以单独写一个方法 buff = new BufferedImage(715, 381, BufferedImage.TYPE_INT_BGR);//Image的一个子类,BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片 gb = buff.getGraphics();//存在于Image类中,存在于缓冲器中的图片,设置坐标 sx = image.getWidth(this) / 3;//图片分割后每一个图片的宽度 sy = image.getHeight(this) / 3;//图片分割后每一个图片的高度 setLayout(new BorderLayout());//设置此布局方法,加入控件 add(panel, BorderLayout.SOUTH);//布置容器的边框布局,它可以对容器组件进行安排,并调整其大小 add(canvas, BorderLayout.CENTER); panel.setLayout(new GridLayout(1, 4));//把组件按指定的几行几列分开,添加其他组件时,会按添加的顺序挨个添加到该组件上 panel.add(start); panel.add(show); panel.add(showStep); showStep.setEditable(false);//步骤默认false,使调用这个函数的控件不能被编辑 showStep.setFont(new Font("黑体", Font.PLAIN, 16));//设置字体

Matlab解数独游戏解析

Matlab解数独游戏解析 课程设计说明书 学生姓名: 燕飞宇学号: 1405054217 信息与通信工程学院学院: 专业: 信息对抗技术专业题目: Matlab专用周 (随数字信号处理课) 指导教师: 李凯、刘宾、杨志良、李沅 2016年 11月 30 日 中北大学 课程设计任务书 2016/2017 学年第一学期 学院: 信息与通信工程学院 专业: 信息对抗技术学生姓名: 燕飞宇学号:1405054217 学生姓名: 毕广宇学号:1405054235 课程设计题目: Matlab课程设计 起迄日期: 2016年12月5日,2016年12月9日 课程设计地点: 信息对抗技术专业综合实验室 指导教师: 李凯、刘宾、杨志良、李沅学科部主任: 张丕状 下达任务书日期: 2016 年11 月30日 课程设计任务书 1(设计目的: (1)通过本课程设计的学习,学生将复习所学的数字信号处理知识,使课堂学 习的理论 知识应用于实践,通过本课程设计的实践使学生具有一定的实践操作能力; (2)掌握Matlab语言的编程方法,能熟练运用;

(3)通过Matlab实践的课程设计,掌握设Matlab数字信号处理系统的思维方法和基本 开发过程。 2(设计内容和要求(包括原始数据、技术参数、条件、设计要求等): 一、学习Matlab编程及仿真 1、熟悉Matlab的运行环境; 2、学会并掌握Matlab图形编程; 3、根据所设计系统的需要会合理设定需完成系统的各项参数; 4、根据所设计系统的需要,优化程序设计最优系统。二、实践设计要求: 1、根据所选题目,设计实现系统的原理框图。 2、编写Matlab程序,给出系统不同节点输出波形。 3、每人写出设计报告。 三、参考题目 题目1:语音信号分析 通过计算机录制一段语音信号,分析该语音信号。 1、分析该信号的频谱特性; 2、采用IIR进行降噪; 3、根据FIR进行降噪; 4、对信号进行断句分割。 5、求信号的均值、方差; 6、求信号的自相关系数; 7、求信号的窗(1秒、2秒)能量; 8、求信号的窗(1秒、2秒)自相关分析 9、采用平均幅度差函数(AMDF法)提取求信号的基音周期、谱估计;

计算机动漫与游戏制作教案2

计算机动漫与游戏制作专业实施性教学计划教案 一、专业名称 计算机动漫与游戏制作 二、招生对象 毕业或同等学力者 三、学制 基本学制:三年 四、培养目标 本专业培养与我国社会主义现代化建设要求相适应,德、智、体、美全面发展,具有必须的文化知识和良好的心理素质,掌握本专业的基础知识和基本技能,具备较强的实际工作能力,熟悉动漫相关软件的使用方法和工作流程,能适应能独立或协作完成具体的动漫项目,同时能适应平面排版、特效美术、游戏美术设计师、Flash动画制作、动画编导、动漫设计师等职位的需求,并具有职业生涯发展基础的高素质劳动者和技能型人才。 五、职业范围和职业资格 六、人才规格 本专业所培养的人才应具有以下知识、技能与态度: (1)掌握本专业必须的文化基础知识。 (2)掌握计算机的基本组成、原理,美术方面的基本知识。 (3)掌握二维、三维的图像和动画设计软件。 (4)掌握文案创意和广告学的基本技术。 (5)具有团队合作、交流沟通及协调能力。

(6)具有简单的绘画能力。 (7)具有广告及文案设计能力。 (8)具有二维、三维的图形图像和动画软件的创作和操作能力。 (9)具有平面媒体设计与制作能力。 (10)具有专业化的摄影的能力。 (11)具有自我学习和自我管理能力,并具有再深造的能力。 (12)能理论联系实际,树立正确的世界观和人生观。 (13)具备一定的实际工作经验,具有较强的安全生产环境保护,节约资源和创新的意识。 七、教学内容与教学要求 (一)公共基础课程 1.生活经济与就业创业(30学时) 本课程是中等职业学校学生必修的一门德育课程,使用省规教材。本课程着眼于学生职业生涯的发展,旨在引导学生认识生活中的经济现象、把握生活中的经济规律、选择生活中的经济行为,提高学生的生活能力和职业素养,培养学生最基本的生存能力和创富能力,帮助学生创造美好生活、成就职业理想、享受幸福人生。 2.职业道德与法律 (34学时) 本课程是中等职业学校学生必修的一门德育课程,使用国标教材。帮助学生了解文明礼仪的基本要求、职业道德的作用和基本规范,陶冶道德情操,增强职业道德意识,养成职业道德行为习惯;指导学生掌握与日常生活和职业活动密切相关的法律常识,树立法制观念,增强法制意识,称为懂法、守法、用法的公民。 3.经济政治与社会(30学时) 本课程是中等职业学校学生必修的一门德育课程,使用国标教材。引导学生掌握马克思主义的相关基本观点和我国社会主义经济建设、政治建设、文化建设、社会建设的有关知识;提高思想政治素质,坚定走中国特色社会主义道路的信念;提高辨析社会现象、主动参与社会生活的能力。 4.哲学与人生 (34学时) 本课程是中等职业学校学生必修的一门德育课程,使用国标教材。使学生了解马克思主义哲学中与人生发展关系密切的基础知识,提高学生用马克思主义哲学的基本观点、方法分析和解决人生发展重要问题的能力,引导学生进行正确的价值判断和行为选择,形成积极向上的人生态度,为人生的健康发展奠定思想基

java拼图游戏代码

Puzzle类: package com.eavan; public class Puzzle { public static void main(String[] args) { // TODO Auto-generated method stub new PuzzleWin(); } } PuzzleWin类: /** * 可以为游戏添加一个计时的功能,让时间成为一个判定标准* 可以分析一下为什么图片不清楚 * 可以向怎么能够让选择图片和选择难度没有顺序性(较容易)* */ package com.eavan; import java.awt.Color; import java.awt.FileDialog; import java.awt.Graphics; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.GridLayout; import java.awt.HeadlessException; import java.awt.Image; import java.awt.Transparency; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.Random; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel;

数独游戏实验报告doc

数独游戏实验报告 篇一:Sudoku 数独实验报告 Project2:Sudoku实验报告 一、算法描述 求解Sudoku让人最容易想到的方法是穷举每个方格可能的值,如果符合条件,则得到解,不符合条件则进行回溯。通过递归的方法,显然可以得到数独的解。 我想到的简单的递归方法,是每一行从左到右,试验每一个方格可能的数字,进行递归。这种方法看似非常麻烦,实际上对于一般的数独题,速度是非常快的,思想比较简单,写出来的代码也非常简单、易懂。 算法1:简单递归方法 从第一个格开始,从1到9试验,是否满足行、列、九宫格互不相同的条件。若满足条件,则填入该数字,再试验下一个格。当一个格子出现没有数字能填的情况时,说明已经填的数字有误,回溯,再进行递归。 算法2:优化的递归算法 先遍历所有格子,统计每种格子可能出现数字的个数。每次挑选可能出现数字个数最少的格子来进行递归。 设置三维数组poss[i][j][k]来存储可能出现数字的信息。poss[i][j][0]记录i行j列的格子可能出现数字的个

数,poss[i][j][k](1 算法3:生成数独棋盘的算法我最开始的想法是穷举法,随机生成满足行各不相同的 9行,再判断9宫格、每列是否符合要求,符合条件时,随机生成停止。然而,这种算法的当然时间复杂度显然是过高。第 99 一步的随机生成的次数是9*9/P9=9608。随机生成一组棋盘耗时就非常大。 后来,我从求解的个数的程序获得启发。算法二对于1000多组解的数独棋盘,解起来也很快。随机生成填9个方格,再用算法一的方法解出来,取第一组正确的解作为棋盘即可生成填好的棋盘。再把一定数量的格子的数字随机删除,计算解的个数。如果解唯一,就得到了棋盘。 二、 数据结构 这两种算法的数据结构不是非常复杂,只是普通的数组。算法一:数组a[i][j] 算法二:数组a[i][j]和poss[i][j][k] 算法三:数组 a[i][j]和poss[i][j][k] 三、 时间效率分析 算法1:这种算法在tsinsen系统上只用了15ms得到全

基于android平台连连看游戏设计与实现本科毕业设计论文

毕业论文 题目:基于Android平台的连连 看游戏设计与实现

毕业论文(设计)原创性声明 本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。 据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。 作者签名:日期: 毕业论文(设计)授权使用说明 本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。学校可以公布论文(设计)的全部或部分内容。保密的论文(设计)在解密后适用本规定。 作者签名:指导教师签名: 日期:日期:

注意事项 1.设计(论文)的内容包括: 1)封面(按教务处制定的标准封面格式制作) 2)原创性声明 3)中文摘要(300字左右)、关键词 4)外文摘要、关键词 5)目次页(附件不统一编入) 6)论文主体部分:引言(或绪论)、正文、结论 7)参考文献 8)致谢 9)附录(对论文支持必要时) 2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。 3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。 4.文字、图表要求: 1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写 2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画 3)毕业论文须用A4单面打印,论文50页以上的双面打印 4)图表应绘制于无格子的页面上 5)软件工程类课题应有程序清单,并提供电子文档 5.装订顺序 1)设计(论文) 2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订 3)其它

java拼图游戏设计报告

《Web程序开发》课程 大作业 拼图游戏 3011212046 张杰 2014.11

一、题目说明 拼图游戏不仅可以帮助人们打发时间,还可以用于锻炼儿童脑力,帮助少儿开发大脑思维,拼图游戏结合了许多元素,可以图片切割,游戏拼图,游戏成功时和打破记录时的判断,同时还有游戏时间和步数的记录,并以文档形式进行保存。在拼图时首先把图片添加到background目录下,程序会自动获取该目录下的所有文件,并加载到游戏中,进行切割后,显示在拼图按钮上。 本游戏使用Java语言设计,开发平台为JDK。开发工具Eclipse。JDK是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。 二、题意分析 因为要制作拼图游戏,所以首先要实现图片的导入。这是通过getImage()函数来实现的,该函数有两个参数,第一个参数指明图片的路径,第二个参数指明图片的名称。然后,因为要实现图片摆放的随意性,所以要通过initgame()函数来实现。Initgame()函数是自写函数,在函数体内,通过调用Math.random()函数产生随机数,用来达到图片位置摆放的随意性和随机性。最后,因为要实现人机交互.,所以首先要通过一系列函数来实现对鼠标事件的监听和响应,这是通过函数addMouseListener(this) 和addMouseMotionListener(this)来完成的。这样程序会区分用户对鼠标不同的操作,正确执行相应的功能。 游戏操作流程: 开始游戏 操作游戏 游戏完成

数独游戏课程设计报告

数独游戏课程设计报告 将“数独”智力游戏的难度划分与创建问题分解为建立终盘和初盘、难度评分、游戏创建。首先采用行列变换的方法建立终盘,然后隐去部分数字并检验解唯一性,得到初盘。在已得到初盘的基础上,根据求解时初级方法和高级方法使用的次数确定难度评分,从而依据分数对题目的难度进行划分,以此创建不同等级难度的“数独”游戏。最后通过实验验证了模型的实用性。下面是小编整理的数独游戏课程设计报告,欢迎来参考! “数独”是18世纪瑞士数学家欧拉发明。该游戏是在9×9的单元网格中进行,这些网格被分9行、9列和3×3个九宫格。单元网格中已有若干数字,其余均为空格。玩家需要推理出所有剩余空格的数字,并满足每一行、每一列、每一个小九宫格内的数字均含1-9且不重复。每一道合格的“数独”谜题都有且仅有唯一答案。 目前,“数独”作为一种智力游戏已经风靡世界,国内外许多学者已对数独的求解算法做了深入研究,例如递归法、回溯候选数法、枚举算法等,但在数独的难度划分与创建方面的研究还很少。由于影响“数独”难度的因素有很多,就问题本身而言,难度因素包括最高难度的技巧、各种技巧所用次数、是否有隐藏及隐藏的深度和广度的技巧组合、当前盘面可逻辑推导出的个数等等;就玩家而言,了解的技巧数

量、熟练程度、观察力等也属于难度划分应考虑的因素。因此,单单利用空格数或求解时间对题目难度进行划分是不全面的,其难度指标定义过于主观,讨论也不够细致,无法真正划分难度的级别。 本文首先创建符合要求的“数独”终盘,然后在终盘的基础上生成具有数独特性的初盘,根据求解时初级方法和高级方法使用的次数确定难度评分,从而依据分数对题目的难度进行划分,以此创建不同等级难度的“数独”游戏。 首先运用初等行、列变换,构造一个新的简单明了的终盘生成算法,具体步骤如下: Step1:从行的角度出发,在第一行随机输入1-9的数字。以一个小九宫为单位,将相邻三个数字作为一个集体进行交替,由此获得第二行的数字,再由第二行的数字根据前述方法变换得到第三行的数字。由此我们得到一个前三行,共有三个小九宫的全部数字。 Step2:从列的角度出发,仍然以小九宫为单位,把第一个小九宫的第一列的相邻三个数字为一个集体进行交替,由此获得第四个小九宫的一列数字,第一小九宫的第二、三列也通过这个相同的方法而得到第四个小九宫的其他两列数字。剩余的其他小九宫也根据前述相同的方法可以得到,将已得到的一个终盘,恰当隐去某些格子内的值,使之成为合乎数独规则的空格,由此便生成一个数独谜题,即初

基于Android平台的手机游戏开发【开题报告】

毕业设计开题报告 计算机科学与技术 基于Android平台的手机游戏开发 一、选题的背景、意义 手机游戏是相对于传统计算机游戏而提出。通俗来说,手机游戏就是在手机上进行游戏应用。 最早手机游戏是1997年Nokia 推出手机内置游戏贪吃蛇(Snake)。随着手机终端和移动通信网络不断发展,手机游戏也正在经历由简单到复杂进化过程。 2003年9月,随着移动百宝箱正式收费,国内手机游戏产业正式启动,用户增长十分迅速。短短几个月时间里,手机游戏用户就增长到200万。此后时间里,手机游戏用户规模一路高歌猛进,在2005年时即突破1500万。 近年来,因特网在国内迅速普及,导致了网络游戏的高速发展。同样手机的普及,导致了手机游戏市场呈现爆炸式的发展。尤其是国内外巨大的手机拥有量,更是让商家看到了商机,手机游戏市场利润将会十分丰厚。面对潜力如此巨大的手机游戏市场,各游戏开发商,运营商,服务商以及手机终端厂商等都纷纷开始了各自的应战准备,以便抢占商机。 诺基亚,索爱,摩托罗拉等各大手机厂商开始不断的提升手机在游戏方面的性能,同时还在手机操作系统方面采用开放式的平台,方便用户享受不同的手机游戏业务。而国内游戏开发商,如盛大,网易等公司,纷纷跻身手机游戏开发商行列.新浪,搜狐等著名的门户网站,也纷纷涉足手机游戏领域,相继开辟了各自的手机游戏频道和栏目,其他一些游戏网站也都全面加快了手机游戏开发的步伐。目前Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统Android在智能手机领域这块虽然不是做的最早的,但是现在确实做的最好的,市场满意度和市场份额也是整个智能机市场里较大的一个。 据了解,最早进入Android市场的台湾宏达电陆续在一年内推出了G1、Magic、Hero、Tattoo等手机,三星也在近期推出Galaxyi7500,摩托罗拉在早前推出新款Android手机Droid,中国移动也以Android 为基础开发了OPhone平台。这些都证明Android已经成为了智能手机市场的重要发展趋势。

相关主题
文本预览
相关文档 最新文档