Java从基础到进阶学习之路----数独小游戏制作(一)

前言

数独这个游戏大多数人都玩过,所以具体的游戏本身就不描述了。

详见百度百科:http://baike.baidu.com/subview/961/10842669.htm

规则和目标

数独的规则很简单,就是在每一行,每一列,每个小宫格区(3X3)内不可以出现重复的数字。

先贴一下大概的游戏界面样子:

需求功能分析

站在学习者的角度来说

练下手,学习一下MVC框架模式

这个项目涉及的Java的主要内容有:

1.Java基础语法,特别是Java集合的部分。

2.Java内置的Observer模式。

3.Java的AWT和Swing组件

4.Java组件布局和事件模型编程

站在游戏者的角度来说

目前仅仅是实现最基础的功能

1)可以产生新的游戏地图,点击new按钮。

2)判错:即是当前游戏进度内,是否不符合规则的数字填入

如下:

3)游戏辅助

即是开启help功能,点击相应的数字,就会在地图上提示该数字可以填入的地方。

如下:

4)游戏结束,提示是否继续游戏

5)退出

概要设计分析

既然说了要学习一下 wiki MVC,所以,采用MVC框架来进行这个项目。

所以,就要把数独这个游戏分割成model,view,controller三部分。

首先简要说下MVC各部分的功能:(内容来自WIKI,具体参见上wiki链接)

  • 模型(Model) 用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。(比较:观察者模式软件设计模式))
  • 视图(View)能够实现数据有目的的显示(理论上,这不是必需的)。在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。
  • 控制器(Controller)起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。

框架图如下

model部分

1)游戏地图存储数据结构

2)游戏的新地图生成算法

3)check,help等功能算法

Controller部分

1)选项按钮和数字选择的响应动作

2)填数字的动作相应

View部分

1)选项按钮、Help单选框、数字组按钮

2)数字填入显示

4)监听器

其中使用Observer模式辅助实现数独的更新检查等操作。

ok,这一节内容就这些了。

NEXT

详细设计,包含类图,方法,算法等实现。

时间: 2024-10-10 14:47:28

Java从基础到进阶学习之路----数独小游戏制作(一)的相关文章

Java从基础到进阶学习之路----数独小游戏制作(二)

详细设计 游戏数据结构设计 显然,需要存储数据的地方只有九宫格地图部分. 对于地图,很明显我们可以采用二维数组int [] [] game;来存储地图中的数据.但是int的二维数组虽然直接简单,但是还是有一定不便之处,比如没有集合的内置处理方法丰富.所以,显然,在游戏地图的生成过程中,一些辅助数据我们可以采用Java的集合. 地图生成算法 对于数独而言,游戏的成功的最根本的保证就是当前的地图有一个存在的解.这就像是解方程,如果不存在解,那么这个游戏本身就是失败的. 所以,重点在于如何产生一个存在

Java 从基础到进阶学习之路---类编写以及文档凝视.

Java之前在学习过,基础知识还没有忘光,并且这些高级语言实在是太像,所以那些数据类型,或者循环控制流,以及标准设备等等就直接略过不说了. 只是一些重大概念会穿插在文章的介绍中. So,这些文章适合于那些有一定高级面向对象语言基础的人阅读. 我们首先编写一个学生类.其主要要求要熟悉的内容是: 关于类构造器(构造方法)的认识和理解. 关于方法的编写. 关于成员变量 & this 的使用, 熟悉了这些内容后,我们就能够依照以下的类图编写这个类了. 构造器的參数有姓名,性别,学号. 类图例如以下: w

Java 从基础到进阶学习之路---类编写以及文档注释.

Java之前在学习过,基础知识还没有忘光,而且这些高级语言实在是太像,所以那些数据类型,或者循环控制流,以及标准设备等等就直接略过不说了. 不过一些重大概念会穿插在文章的介绍中. So,这些文章适合于那些有一定高级面向对象语言基础的人阅读. 我们首先编写一个学生类.其主要要求要熟悉的内容是: 关于类构造器(构造方法)的认识和理解. 关于方法的编写. 关于成员变量 & this 的使用, 熟悉了这些内容后,我们就可以按照下面的类图编写这个类了. 构造器的参数有姓名,性别,学号. 类图如下: 我写的

android开发学习之路——连连看之游戏逻辑(五)

GameService组件则是整个游戏逻辑实现的核心,而且GameService是一个可以复用的业务逻辑类. (一)定义GameService组件接口 根据前面程序对GameService组件的依赖,程序需要GameService组件包含如下方法.   ·start():初始化游戏状态,开始游戏的方法.     ·Piece[][] getPieces():返回表示游戏状态的Piece[][]数组.     ·boolean hasPieces():判断Pieces[][]数组中是否还剩Piec

突发奇想想学习做一个HTML5小游戏

前言: 最近一期文化馆轮到我分享了,分享了两个,一个是关于童年教科书的回忆,一个是关于免费电子书的.最后我觉得应该会不敌web,只能说是自己在这中间回忆了一下那个只是会学习的年代,那个充满梦想的年代.有人说如果一个人开始回忆童年的时候,那么他开始变老了,不知道是不是这样一个原因,我突然想起了很多以前的老朋友,开始想起了一些童年时期的玩伴.也就想做这样一款简单的游戏,也只是单纯的想回忆一下童年. 计划: 游戏其实很简单,我们把它叫着裤裆棋,又叫什么狗卵坨还是什么的,有些记忆模糊了,反正大致是这样子

java面试基础题整理学习

最近投了一些java岗位,面试和笔试的问题更关注基础的掌握,因为基础知识是安身立命以及决定自己上限的东西.结合了网上一些优秀文章,做了如下整理: 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境. 具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源

Java开发基础知识之学习篇——Object类

JDK中所有类的基类——java.lang.Object 1.类构造器 创建java对象的途径之一,通过new关键字调用构造器完成对象的实例化,或通过构造器对象进行相应的初始化.在JDK的objec类源码中,系统会自动添加一个无参构造器. public object(){ Object obj = new Object(); //构造一个Object类的对象 } 2.registerNatives方法 静态代码块是一个类子啊初始化过程中必定会执行的内容,所以在类加载时会执行该方法,通过该方法来注

Java开发基础知识之学习篇——双亲委派机制

Java自带的类加载器: 启动类加载器(Bootstrap ClassLoader):这是由C++语言实现的一个加载器,是虚拟机的一部分,随虚拟机启动运行.负责将存放在/lib目录下面或者被-Xbootclasspath参数所指定的路径中的类. 扩展类加载器(Extension ClassLoader):负责加载/lib/ext目录中的,或者被java.ext.dir系统变量指定路径中的所有类库.如果把自己的jar包放到此位置,会首先用这个加载器加载. 应用程序类加载器(Application

Java开发基础知识之学习篇——String

String .StringBuffer 和StringBuilder 的区别是什么?从几个方面来解释. 1.可变性 String类中使用final关键字字符数组保存字符串,它的长度是不可变的. StringBuffer 和 StringBuilder 都继承自AbstractStringBuilder类,而在AbstractStringBuilder中也是使用字符数组保存字符串,但是没有用final关键字修饰,所以这两种对象都是可变的. 2.线程安全性 String中的对象是不可变的,就是常量