什么是数组?

数组的定义:是用统一的名字代表这批数据,用序号来区分各个数据。数组是无序的数据元素按有序的下标组成的集合,分配固定空间大小的一种容器。

如何理解:其实就是一个同时放很多数据的变量。

a=1;

a=2;

a=3;

这成了反复赋值,最后a=3;

a怎么能同时放下1,2,3......?

如 int a0;int a1; int a2; 同时具备3个变量才能存储。

一定让a存下3个或更多数据呢?

如果是同样的数据类型,这时用一个变量名 a 来放这些数据,这就是数组。

如下:

a0=1;

a1=2;

a2=3;

a3=4;

a4=5;

a5=6;

这样变量名字还是变了,我们用 a[下标] 来表示数组中的某个元素

归纳一下:如何赋值一个数组呢? 确定数组的数据类型 int a[20] 下标从0开始。//for(int i=0;// orc guai[100];

a[0]=1;

a[1]=2;

a[2]=3;

.........a[19];

存储固定大小同类元素的容器。

两种定义方法:

一种:

dataType[] arrayName = new dataType[arraySize];

int [] arr=new int[10];

arr[0]=22;

arr[1]=18;

........

arr[9]=321;

另一种:

dataType[] arrayName = {value0, value1, ..., valuek};

int [] arr={238,23,21,34,87,2,3,19,198,28};


使用一位数组解决 1 1 2 3 5 8 13 数列问题 斐波纳契数列 Fibonacci

//一维数组 输出30个Fibonacci数列
#include <iostream>
using namespace std;int main(){//定义一个一维数组int arr[30]={1,1};//造fabonacci数组for(int i=2;i<30;i++) {arr[i]=arr[i-1]+arr[i-2];}//遍历一下for(int i=0;i<30;i++){cout<<arr[i]<<endl;} return 0;
}

分析?

1 1 2 3 5 8 13 这个数列的下一个是什么?得到什么规律?如何用一维数组实现?

把C++的程序编程Java的。


一维数组的排序,把数组中的元素按照从小到大的顺序输出?

两种方法选择法与冒泡法

选择法的思路?

思路:用一个数组元素和所有其他的所有元素PK,谁小谁放第一个,确定一个位置再确定下一个位置,一次类推

把下边c++的代码换成Java的

#include <iostream>
using namespace std;int main(){//声明一维数组?整型的一维数组,就是数组中所有的元素都是int int arr[10]={23,234,3,1,19,21,231,88,90,11};for(int i=0;i<10;i++){cout<<"一维数组的第 "<<i<<" 个值是 "<<arr[i]<<endl;}//请你给刚才的数组的进行排序,要求从小到大输出 (选择法)
//    for(int i=0;i<10-1;i++){
//        for(int j=i+1;i<10;j++){
//            if(array[i]>array[j]){
//                int temp;
//                temp=array[i];
//                array[i]=array[j];
//                array[j]=temp;
//            }
//        }
//    }for(int i=0;i<10-1;i++) {for(int j=i+1;j<10;j++) {if(arr[i]>arr[j]) {int temp;temp=arr[i];arr[i]=arr[j];arr[j]=temp;}}}//排序后再遍历字符一下数组for(int i=0;i<10;i++){cout<<"遍历后一维数组的第 "<<i<<" 个值是 "<<arr[i]<<endl;}return 0;
}

选择法的思路?

思路:

数组中相邻的两个元素两两比较,逐步把小的放在前面,一轮过后最大的数值如石头一样沉入水底,而相对较小的数值如气泡逐渐在水中上浮,经过n轮的两两比较冒泡排序

把下边c++的代码换成Java的

#include <iostream>
using namespace std;int main(){//声明一维数组?整型的一维数组,就是数组中所有的元素都是int int arr[10]={23,234,3,1,19,21,231,88,90,11};for(int i=0;i<10;i++){cout<<"一维数组的第 "<<i<<" 个值是 "<<arr[i]<<endl;}for(int i=0;i<10;i++) {for(int j=0;j<10-1-i;j++) {if(arr[j]>arr[j+1]) {int temp;temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}//排序后再遍历字符一下数组for(int i=0;i<10;i++){cout<<"遍历后一维数组的第 "<<i<<" 个值是 "<<arr[i]<<endl;}return 0;
}


什么是对象数组?

人类对象数组——一堆人,实例如下:

package com.swift;public class PersonArray
{public static void main(String args[]){person per[]=new person[3];per[0]=new person("张三",20);per[1]=new person("李四",22);per[2]=new person("王五",23);for (int x=0;x<per.length;x++){per[x].getinfo();}}
}
class person
{private String name;private int age;public person(String name,int age){this.name=name;this.age=age;}public void getinfo(){System.out.println("姓名: "+this.name+" 年龄: "+this.age);}
}

最后使用一维数组来完成吃金币游戏中,成堆的金币,很多炸弹的布置。

实现游戏中生成8个金币精灵和3个炸弹精灵,每个精灵有自己的精灵序号,和在游戏窗口中的横纵坐标

游戏代码如下:

package com.swift;import java.awt.Color;
import java.awt.Point;
import java.awt.event.KeyEvent;import com.rupeng.game.GameCore;
/*** @author swift* @version 2.0* @category 新增炸弹功能,精灵如果吃到炸弹立即死亡,游戏结束;* @category 新增游戏倒计时功能,倒计时60秒* @category 新增游戏胜利失败功能,吃完金币则胜利,吃到炸弹失败*/
public class Coin2 implements Runnable {public static void main(String[] args) {GameCore.start(new Coin2());}@Overridepublic void run() {//设置窗体大小、标题、背景GameCore.setGameSize(800, 345);GameCore.setGameTitle("用键盘操控精灵移动的小游戏");GameCore.loadBgView("bg.jpg");// 设置女精灵出现及出场位置int spriteGirl = 0;GameCore.createSprite(spriteGirl, "guizi");GameCore.playSpriteAnimate(spriteGirl, "run", true);GameCore.setSpritePosition(spriteGirl, 140, 190);// 使用数组放置8个金币的数量、横坐标、纵坐标int[] coinNum = { 1, 2, 3, 4, 5, 6, 7, 8 };int[] coinXDate = { 100, 200, 300, 400, 500, 600, 700, 730 };int[] coinYDate = { 140, 180, 150, 190, 140, 170, 160, 140 };// 使用数组放置3个炸弹的数量、横坐标、纵坐标int[] bombNum = { 9, 10, 11 };int[] bombXDate = { 250, 450, 650 };int[] bombYDate = { 160, 160, 190 };//boolean[] coinIsDead = new boolean[8];//设置右上角显示的金币图片和吃到的金币数量GameCore.createImage(0);GameCore.setImageSource(0, "bigCoin.png");GameCore.setImagePosition(0, 710, 20);GameCore.createText(0, "NUM");GameCore.setTextColor(0, Color.WHITE);GameCore.setTextPosition(0, 650, 25);GameCore.createText(1, "0");GameCore.setTextPosition(1, 760, 25);GameCore.setTextColor(1, Color.WHITE);//设置左上角显示的时间倒计时GameCore.createText(3, "Time-Left");GameCore.setTextColor(3, Color.WHITE);GameCore.setTextFontSize(3, 20);GameCore.setTextPosition(3, 25, 5);GameCore.createText(4, "60");GameCore.setTextPosition(4,60, 25);GameCore.setTextColor(4, Color.WHITE);GameCore.setTextFontSize(4, 28);//设置游戏倒计时的时间开始点long timeBegin=System.currentTimeMillis();//设置吃掉金币前金币依然活着 另一种初始化数组方法 boolean[]boolean[] coinIsDead={false,false,false,false,false,false,false,false};//金币精灵死亡数int textNum = 0;//根据横纵坐标设置金币精灵在游戏中的出现for (int i = 0; i < coinNum.length; i++) {GameCore.createSprite(coinNum[i], "coin");GameCore.setSpritePosition(coinNum[i], coinXDate[i], coinYDate[i]);GameCore.playSpriteAnimate(coinNum[i], "rotate", true);}//根据横纵坐标设置炸弹精灵在游戏中的出现for (int i = 0; i < bombNum.length; i++) {GameCore.createSprite(bombNum[i], "bomb");GameCore.playSpriteAnimate(bombNum[i], "laser", true);GameCore.setSpritePosition(bombNum[i], bombXDate[i], bombYDate[i]);}//创建新的爆炸精灵,等待触发int newBombNum=12;GameCore.createSprite(newBombNum, "bomb");//创建获胜或失败时的文本,等待触发int newTextNum=2;//无限循环获取时时键盘信息,改变女精灵的位置for (;;) {int codeNum = GameCore.getPressedKeyCode();Point position = GameCore.getSpritePosition(spriteGirl);//如果按向上或W键则向上移动 并且设置上边界为135if (codeNum == KeyEvent.VK_UP || codeNum == KeyEvent.VK_W) {if (position.y > 135) {GameCore.setSpritePosition(spriteGirl, position.x, --position.y);GameCore.pause(1);}}//如果按向下或S键则向下移动 并且设置下边界为190if (codeNum == KeyEvent.VK_DOWN || codeNum == KeyEvent.VK_S) {if (position.y < 190) {GameCore.setSpritePosition(spriteGirl, position.x, ++position.y);GameCore.pause(1);}}//如果按向左或A键则向左移动 并且设置左边界为0if (codeNum == KeyEvent.VK_LEFT || codeNum == KeyEvent.VK_A) {if (position.x > 0) {GameCore.setSpriteFlipX(spriteGirl, true);GameCore.setSpritePosition(spriteGirl, --position.x, position.y);GameCore.pause(2);}}//如果按向右或D键则向右移动 并且设置右边界为730if (codeNum == KeyEvent.VK_RIGHT || codeNum == KeyEvent.VK_D) {if (position.x < 730) {GameCore.setSpriteFlipX(spriteGirl, false);GameCore.setSpritePosition(spriteGirl, ++position.x, position.y);GameCore.pause(1);}}//得到当前女精灵的位置Point pGirl = GameCore.getSpritePosition(spriteGirl);//判断女精灵和任意金币的距离,足够接近金币就消失,并设置该金币已死for (int i = 0; i < coinNum.length; i++) {if(coinIsDead[i]) {continue;}Point pCoin = GameCore.getSpritePosition(coinNum[i]);double distance = Math.sqrt((Math.pow((pCoin.x - pGirl.x), 2) + Math.pow((pCoin.y - pGirl.y), 2)));if (distance < 30) {GameCore.hideSprite(coinNum[i]);coinIsDead[i] = true;textNum = 0;//这句含义很大,无限循环每次到这清零,不然数字无限疯长for(int j=0;j<coinNum.length;j++) {if(coinIsDead[j]==true){//我把这写成了i,所以只要吃掉一个,就是8了,应该是jtextNum++;}}GameCore.setText(1, Integer.toString(textNum));//这句放在循环外边,不然
                }if(textNum==8) {//输出文本GameCore.createText(newTextNum, "You Win");GameCore.setTextPosition(newTextNum, 300, 150);GameCore.setTextColor(newTextNum, Color.RED);GameCore.setTextFontSize(newTextNum, 88);GameCore.pause(3000);GameCore.exit();}}//判断女精灵和任意炸弹的距离,足够接近炸弹就爆炸,游戏失败for (int i = 0; i < bombNum.length; i++) {Point pBomb = GameCore.getSpritePosition(bombNum[i]);double distance = Math.sqrt((Math.pow((pBomb.x - pGirl.x), 2) + Math.pow((pBomb.y - pGirl.y), 2)));if (distance < 20) {//隐藏原炸弹精灵
                    GameCore.hideSprite(bombNum[i]);//出现新爆炸精灵GameCore.playSpriteAnimate(newBombNum, "fire", true);//在原来炸弹的位置出现新炸弹
                    GameCore.setSpritePosition(newBombNum, pBomb.x, pBomb.y);GameCore.pause(3000);//输出文本GameCore.createText(newTextNum, "You Lose");GameCore.setTextPosition(newTextNum, 300, 150);GameCore.setTextColor(newTextNum, Color.RED);GameCore.setTextFontSize(newTextNum, 88);GameCore.pause(2500);GameCore.exit();}}//设置游戏倒计时的时间结束点long timeEnd=System.currentTimeMillis();int timeText=(int)(60-(timeEnd-timeBegin)/1000);GameCore.setText(4, Integer.toString(timeText));if(timeText==0) {GameCore.alert("游戏通关时间已到,即将结束。");GameCore.exit();}}}
}

(1)新增炸弹功能,精灵如果吃到炸弹立即死亡,游戏结束;
(2)新增游戏倒计时功能,倒计时60秒
(3)新增游戏胜利失败功能,吃完金币则胜利,吃到炸弹失败

游戏包及素材下载地址:https://pan.baidu.com/s/1jHI54Po

转载于:https://www.cnblogs.com/qingyundian/p/7771222.html

Java第十二次作业:什么是一维数组?什么是对象数组?吃金币游戏2.0版 新增炸弹功能 新增游戏倒计时功能 新增胜利失败检测功能 使用如鹏游戏引擎制作窗体 一维数组设置金币...相关推荐

  1. 20189200余超 2018-2019-2 移动平台应用开发实践第十二周作业

    20189200余超 2018-2019-2 移动平台应用开发实践第十二周作业 服务 Service的声明 Service是Android中的四大组件,使用它一定要在AndroidManifest.x ...

  2. 2021年春季学期-信号与系统-第十二次作业参考答案-第四小题

    ▓ 本文是 2021年春季学期-信号与系统-第十二次作业参考答案中的小题答案 §04 第四小题 4. 画出X(z)X\left( z \right)X(z) 的零极点图,在下列三种收敛域下,求各对应的 ...

  3. 2021年春季学期-信号与系统-第十二次作业参考答案-第三小题

    ▓ 本文是 2021年春季学期-信号与系统-第十二次作业参考答案中的小题答案 §03 第三小题 3. 设激励x(t)=e−tx\left( t \right) = e^{ - t}x(t)=e−t 时 ...

  4. 2021年春季学期-信号与系统-第十二次作业参考答案-第二小题

    ▓ 本文是 2021年春季学期-信号与系统-第十二次作业参考答案中的小题答案 §02 第二小题 2. 用单边 zzz 变换求解下列差分方程,并求出零输入响应和零状态状态响应. (1) y[n]+3y[ ...

  5. 2021年春季学期-信号与系统-第十二次作业参考答案-第一小题

    ▓ 本文是2021年春季学期-信号与系统-第十二次作业参考答案中的小题答案 §01 第一小题 1. 用拉普拉斯变换解下列微分方程: (1) d2dt2y(t)+2ddty(t)+y(t)=δ(t)+2 ...

  6. 2021年春季学期-信号与系统-第十二次作业参考答案-第五小题

    ▓ 本文是 2021年春季学期-信号与系统-第十二次作业参考答案中的小题答案 §05 第五小题 5. 给定实数序列 x[n]x\left[ n \right]x[n]及其Z变换表达式 X(z)X\le ...

  7. 2021年春季学期-信号与系统-第十二次作业参考答案-第六小题

    ▓ 本文是 2021年春季学期-信号与系统-第十二次作业参考答案中的小题答案 §06 第六小题 6. 已知: X(z)=ln⁡(1+az),(∣z∣>∣a∣)X\left( z \right) ...

  8. 2021年春季学期-信号与系统-第十二次作业参考答案-第七小题

    ▓ 本文是 2021年春季学期-信号与系统-第十二次作业参考答案中的小题答案 §07 第七小题 1.应用MATLAB中的系统辨识工具,完成下面系统出风机输入功率与输出热风温度之间的传递函数. y(t) ...

  9. 2021年春季学期-信号与系统-第十二次作业参考答案

    ▓ 第十二次作业各个小题参考答案: 2021年春季学期-信号与系统-第十二次作业参考答案-第一小题 2021年春季学期-信号与系统-第十二次作业参考答案-第二小题 2021年春季学期-信号与系统-第十 ...

  10. 2020年春季学期信号与系统课程作业参考答案-第十二次作业

    信号与系统第十二次作业参考答案 ※ 第一题 利用Laplace变换求解下列微分方程: (1)d2dt2y(t)+2ddty(t)+y(t)=δ(t)+2δ′(t){{d^2 } \over {dt^2 ...

最新文章

  1. 结构光|一文详解相移步长的选择问题
  2. Xamarin XAML语言教程使用Visual Studio创建XAML
  3. JVM内存GC的骗局
  4. 网络流24题 飞行员配对方案问题
  5. Java中wait和sleep方法的区别
  6. 自动利用webshell执行系统命令py脚本
  7. tf.name_scope tf.variable_scope学习
  8. 2011 MVP大奖礼品包,那是相当的给力啊!!
  9. ARMs3c2440开发板挂接NFS服务
  10. 美的集团:收购KUKA总价款为15亿欧元
  11. 关于4A系统(我对4A系统的维护的理解)
  12. php 删除数字索引元素,PHP重置数组为连续数字索引的几种方式
  13. css 查看更多_Cirrus(原型制作CSS框架)下载-Cirrus(原型制作CSS框架)v0.6.0免费版下载...
  14. python愿意_我的第一个Python程序!有人愿意复习一下帮助我改进吗?
  15. 5分钟学会马尔科夫模型
  16. linux sd卡 测试软件,怎么检测SD卡内存卡是否被扩容过?
  17. 卷积神经网络(CNN)实现手写体识别
  18. Choerodon猪齿鱼实践之Webhook配置
  19. 为地图marker 设置网络图片
  20. 爬虫重试模块retry,自动重试

热门文章

  1. 【SICP练习】115 练习3.41
  2. Eclipse设置护眼背景
  3. 《程序猿的搬砖生活》九、那些伙伴和生活,既是人生也是回忆
  4. [教程] 康盛创想 Windows (server 2003) 服务器部署标准 白丁简明版
  5. LDA(线性判别分析或称Fisher线性判别),PCA(主成份分析)代码及表情识别中的应用
  6. macos big sur更新后,这些小组件原来这么好用
  7. Android属性动画初探之ObjectAnimator
  8. ubuntu server 18.04 和 20.04 安装 RabbitMQ
  9. ubuntu 18.04 使用 nvm 安装 nodejs
  10. 9款很棒的网页绘制图表JavaScript框架脚本