Java项目案例开发入门PPT1第4章 数组-迷宫游戏_第1页
Java项目案例开发入门PPT1第4章 数组-迷宫游戏_第2页
Java项目案例开发入门PPT1第4章 数组-迷宫游戏_第3页
Java项目案例开发入门PPT1第4章 数组-迷宫游戏_第4页
Java项目案例开发入门PPT1第4章 数组-迷宫游戏_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4.1. 迷宫游戏介绍1. 在字符界面下随机生成迷宫地图。

其中:1表示障碍物,0表示通路,2表示奖励,8表示当前位置。游戏默认迷宫四周由障碍物围绕,入口点位于地图的左上角点,出口点位于地图右下角点。4.1. 迷宫游戏介绍2. 用户在控制台输入“awsd”字符,分别代表方向键“←↑↓→”;输入“x”字符,表示提前退出游戏。3. 在有限步数下,判断游戏输赢,输出用户得分。4. 鼓励用户以较短路径、获得较多奖励来完成游戏。设定如下的积分原则:(1) 玩家遇到奖励,积分增加奖励分值;(2) 游戏结束时,积分增加游戏限定步长与当前游戏步长的差值。如限定步长为30,玩家本次到达终点用了20步,则积分增加10。4.2. 程序设计思路1. 随机生成迷宫地图游戏中需要随机生成迷宫地图,引入java.util.Random类,利用Random类提供的生成随机数方法,随机生成障碍物、通路或者奖励等状态。迷宫地图采用二维数组进行表示与存储。2. 判断玩家闯关是否成功根据玩家的当前位置是否位于地图的出口点来判断玩家闯关是否成功。如果成功则根据游戏步数修改本次游戏积分。4.2. 程序设计思路3. 游戏主控模块游戏的主控模块是一个基于用户输入的循环控制模块。循环控制的条件是判断游戏是否结束。若游戏结束,则退出游戏主控模块,输出玩家的输赢状态及游戏积分;否则,主控模块根据用户输入的方向键,不断修改地图状态及更新玩家积分。4.3. 关键技术4.3.1. 什么是数组4.3.2. 数组的定义及初始化4.3.3. 数组使用4.3.4. 数组的遍历4.3.5. 在方法中使用数组4.3.6. 多维数组4.3.7. Arrays类4.3.1. 什么是数组数组是Java语言中常见的一种数据结构,用于存储相同类型的若干个变量。数组中存储的变量又称为数组元素,数组元素可以通过数组索引来访问。数组中能够保存的变量最大个数,称为数组的长度。Java语言中,数组的长度是固定的,在初始化时被确定下来。值得注意的是,数组也是一种数据类型,与Java基本数据类型不同的是,数组是一种引用类型。4.3.2. 数组的定义及初始化1. 定义定义一维数组有下列两种格式:

注意:定义数组时,不能指定数组的长度。数组是一种引用数据类型,当定义一个数组时,实际上是定义了一个引用变量,但是该引用变量还没有确切的内存地址与之相对应,下一步需要对数组完成初始化,才能真正地使用数组。数据类型[]数组变量;数据类型数组变量[];

4.3.2. 数组的定义及初始化2. 初始化Java数组可以采用以下两种方式,实现初始化。方式1

指定数组的长度,并且为每个数组元素指定初始值。初始化时的数据类型必须与定义的数据类型相同,或者是其子类类型。数组变量=new数据类型[数组长度];4.3.2. 数组的定义及初始化系统按照如表4-1所示原则,为数组元素分配初始值方式2:或者将数组的定义与初始化合并为:数据类型byte、short、int、longfloat、doublecharboolean类、接口等引用类型初始化值00.0‘\u0000’falsenull数组变量=new数据类型[]{值1,值2,值3,...};数据类型[]数组变量={值1,值2,值3,...};4.3.3. 数组使用1. 访问数组元素:数组变量[元素的索引值],Java语言中数组元素的索引值从0开始。2. 数组的length属性:获取数组中数组元素的个数。4.3.3. 数组使用(e)修改数组元素的值(e)修改数组元素的值public

classDefArray{

publicstaticvoidmain(String[]args){

int[]arr1=new

int[3]; arr1[0]=11; arr1[1]=22; arr1[2]=33;

int[]arr2=new

int[5]; arr2=arr1; arr2[1]=44; System.out.println("arr2数组的长度为:"+arr2.length);//输出3 }}(d)数组的引用赋值

(e)修改数组元素的值(a)数组arr1的定义与初始化

(b)对数组arr1元素赋值

(c)数组arr2的定义与初始化4.3.4. 数组的遍历1. 方法1:利用循环结构通过数组索引值的迭代实现数组的遍历。for(循环变量=0;循环变量<数组变量.length;循环变量++){

通过循环变量的迭代,遍历数组元素:数组变量[循环变量]}4.3.4. 数组的遍历2. 方法2:Java5之后,Java提供foreach循环语句,定义如下:注意:在foreach语句中,通常不要对循环变量进行赋值。for(数据类型变量:数组变量|集合){

变量迭代访问每一个数组元素;}4.3.5. 在方法中使用数组java的方法是指一段完成特定功能的代码块,方法被封装为一个过程体,可以被重复调用,类似于c语言中函数的定义。方法的定义格式如下方法的参数与返回值都可以定义为数组变量。修饰符返回值类型方法名(参数列表){

函数体; return返回值;}4.3.5. 在方法中使用数组1. 数组作为方法的参数与普通变量作为方法参数不同,数组作为方法参数,传递的是数组的引用。所以,如果在方法中修改数组的元素值,则方法调用结束后,主调方法将得到修改之后的数组。2. 数组作为方法的返回值与数组作为方法参数相同,数组变量作为方法的返回值同样也返回数组的引用。4.3.5. 在方法中使用数组public

classArrayMethod{

public

static

voidmain(String[]args){

int

a[]={1,2,3,4,5,6,7,8,9,10};

reverse(a);

for(int

i:a)

System.out.println(i);

int

b[]=copyArray(a,2,5);

for(int

i:b) System.out.println(i);

}

4.3.5. 在方法中使用数组

public

static

voidreverse(int[]arr){

for(int

i=0,j=arr.length-1;i<j;i++,j--){

int

temp;

temp=arr[i];

arr[i]=arr[j];

arr[j]=temp; } }

public

static

int[]copyArray(int[]arr,int

start,int

length){

int[]result=new

int[length];

for(int

i=start,j=0;j<length;i++,j++){

result[j]=arr[i]; }

return

result; }}4.3.5. 在方法中使用数组3. 可变长度参数列表:Java5之后,Java支持方法的可变长度参数列表。方法定义如下:在方法体中,对可变长度参数变量的使用,等同于数组的操作。例如下面定义的方法可以输出所有的参数值。修饰符返回值类型方法名(数据类型...参数变量){ ...}

public

static

voidprintParams(int...args){

for(int

var:args){ System.out.println(var); }}4.3.5. 在方法中使用数组注意:如方法具有多个参数,则可变长度参数必须是方法的最后一个参数。printParams();printParams(1);printParams(1,2);printParams(newint[]{1,2,3,4,5});4.3.6. 多维数组1. 二维数组定义:2. 二维数组初始化:方式1(等长二维数组):同时指定两维的长度。方式2(不等长二维数组):先指定一维的长度,然后可以分别定义不同的二维长度。例如:int[][]arr=int[2][];arr[0]=newint[3];arr[1]=newint[4]数据类型[][]数组变量;数组变量=new数据类型[数组长度1][数组长度2];4.3.7. Arrays类1. voidsort(数据类型[]数组变量)对数组元素根据其自然顺序的升序进行排序。2. intBinarySearch(数据类型数组变量,数据类型关键字)使用二分法在数组中查找指定关键字,如果查找成功,则返回关键字所在的索引,否则返回负数。注意:调用该方法之前要保证,数组按升序排列。4.3.7. Arrays类3. 数据类型[]copyOf(数据类型[]原数组,int长度)拷贝原数组返回新数组。其中,参数长度是新数组的长度。如果参数长度大于原数组的长度,则拷贝原数组所有元素,后面元素以0(数组类型为数值型)或者false(布尔类型)或者null(引用类型)进行填充;如果参数长度小于原数组的长度,则截取原数组前面的部分元素。4.3.7. Arrays类4. booleanequals(数据类型数组变量1,数据类型数组变量2)判别两个数组是否相等。只有当两个数组包含相同数量的元素,并且所有对应位置的数组元素也相等,才判定两个数组相等,方法返回true,否则,返回false。5. voidfill(数据类型[]数组变量,数据类型变量)用参数变量的值来填充整个数组。4.4. 迷宫游戏设计步骤1. 定义符号常量2. 随机生成地图游戏默认迷宫四周由障碍物围绕,入口点位于地图的左上角点,出口点位于地图右下角点。利用Java随机数类java.util.Random提供的nextInt(intbound)方法,实现区间[0,bound)内伪随机数的生成。3. 绘制地图遍历并打印二维迷宫数组。4.4. 迷宫游戏设计步骤4. 获取用户输入根据游戏要求,单字符输入可以使用Sys

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论