什么是二维数组?二维遍历?Java二维数组制作图片迷宫 使用如鹏游戏引擎制作窗口界面 附带压缩包下载,解压后双击start.bat启动
什么是二维数组?
数组当中放的还是数组
int [][] arr=new int[3][2];
有3个小箱子,每个箱子2个格子。
看结果?
int [][] arr=new int[3][2];
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[0][0]);
System.out.println(arr.length]);
System.out.println(arr[1].length);
再看结果?
int [][] arr=new int[3][];
System.out.println(arr);
System.out.println(arr[0]);//什么结果?还是哈希值吗?
System.out.println(arr[0][0]);//这个是什么结果?
二维数组的遍历?
程序源码如下:
package com.swift; import java.awt.Point;
import java.awt.event.KeyEvent; import com.rupeng.game.GameCore; public class GameOfShuzu implements Runnable{ public static void main(String[] args) {
GameCore.start(new GameOfShuzu());
} @Override
public void run() {
GameCore.setGameSize(760, 570);
GameCore.setGameTitle("图片迷宫游戏—二维数组制作");
GameCore.loadBgView("bg.png");
//二维数组赋值15行15列,每张图片宽度50*36
int[][] arr = {{3,0,0,0,1,1,0,0,2,2,3,0,0,0,1},
{0,0,0,0,4,1,0,0,0,2,0,0,0,0,1},
{0,3,0,0,0,0,0,0,0,0,0,3,3,0,1},
{0,3,0,0,0,0,0,0,0,2,0,0,3,0,0},
{0,0,0,0,0,1,0,0,0,2,0,0,0,0,1},
{4,4,0,0,1,1,0,0,0,0,4,4,0,0,1},
{0,0,0,0,0,4,4,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,2,0,0,1},
{0,0,0,0,1,0,0,0,0,2,2,0,0,0,1},
{0,4,4,0,1,0,0,0,0,0,4,4,0,0,1},
{0,0,0,0,0,4,4,0,0,3,0,0,0,0,0},
{1,1,2,0,0,0,0,1,0,0,0,4,0,0,0},
{0,4,0,0,0,1,0,0,0,0,0,2,0,0,1},
{0,0,3,0,1,0,0,0,2,2,0,0,0,2,0}};
//二维数组遍历查看每个元素的值
for(int i=0;i<arr.length;i++) {
for(int j=0;j<arr[i].length;j++) {
System.out.print(i+"行"+j+"列 "+arr[i][j]+" | ");
}
System.out.println();
}
//计数器
int num=0;
//根据元素的值在游戏窗口中生成图片墙
for(int i=0;i<arr.length;i++) {
for(int j=0;j<arr[i].length;j++) {
if(arr[i][j]==1) {
GameCore.createImage(num);
GameCore.setImageSource(num, "1.png");
GameCore.setImagePosition(num, j*50, i*36);
num++;
}
if(arr[i][j]==2) {
GameCore.createImage(num);
GameCore.setImageSource(num, "2.png");
GameCore.setImagePosition(num, j*50, i*36);
num++;
}
if(arr[i][j]==3) {
GameCore.createImage(num);
GameCore.setImageSource(num, "3.png");
GameCore.setImagePosition(num, j*50, i*36);
num++;
}
if(arr[i][j]==4) {
GameCore.createImage(num);
GameCore.setImageSource(num, "4.png");
GameCore.setImagePosition(num, j*50, i*36);
num++;
}
}
System.out.println();
} // 女精灵
int spriteGirl = 0;
GameCore.createSprite(spriteGirl, "butterfly");
GameCore.playSpriteAnimate(spriteGirl, "fly", true);
GameCore.setSpritePosition(spriteGirl, 100, 20); for (;;) { int codeNum = GameCore.getPressedKeyCode();
Point position = GameCore.getSpritePosition(spriteGirl); if (codeNum == KeyEvent.VK_UP || codeNum == KeyEvent.VK_W) {
if (position.y > 30) {
System.out.println("up");
GameCore.setSpritePosition(spriteGirl, position.x, --position.y);
GameCore.pause(11);
}
} if (codeNum == KeyEvent.VK_DOWN || codeNum == KeyEvent.VK_S) {
if (position.y < 550) {
System.out.println("down");
GameCore.setSpritePosition(spriteGirl, position.x, ++position.y);
GameCore.pause(11);
}
}
if (codeNum == KeyEvent.VK_LEFT || codeNum == KeyEvent.VK_A) {
if (position.x > 0) {
System.out.println("left");
GameCore.setSpriteFlipX(spriteGirl, true);
GameCore.setSpritePosition(spriteGirl, --position.x, position.y);
GameCore.pause(2);
}
}
if (codeNum == KeyEvent.VK_RIGHT || codeNum == KeyEvent.VK_D) {
if (position.x < 730) {
System.out.println("right");
GameCore.setSpriteFlipX(spriteGirl, false);
GameCore.setSpritePosition(spriteGirl, ++position.x, position.y);
GameCore.pause(1);
}
}
} } }
画面效果如图:

压缩包及相关素材下载地址:
https://pan.baidu.com/s/1hrC3TtU
什么是二维数组?二维遍历?Java二维数组制作图片迷宫 使用如鹏游戏引擎制作窗口界面 附带压缩包下载,解压后双击start.bat启动的更多相关文章
- Java第十二次作业:什么是一维数组?什么是对象数组?吃金币游戏2.0版 新增炸弹功能 新增游戏倒计时功能 新增胜利失败检测功能 使用如鹏游戏引擎制作窗体 一维数组设置金币
什么是数组? 数组的定义:是用统一的名字代表这批数据,用序号来区分各个数据.数组是无序的数据元素按有序的下标组成的集合,分配固定空间大小的一种容器. 如何理解:其实就是一个同时放很多数据的变量. a= ...
- ramdisk配置、解压、创建rootfs、启动简单分析
关键词:ramdisk.rdint..init.ramfs.__initramfs_start.__initramfs_size.rootfs.ramfs.populate_rootfs().gzip ...
- tomcat双击startup.bat启动时闪退
tomcat之前用的好好地没有问题,今天重启一下就发现双击startup.bat一闪而过,接着就没有任何动静了,tomcat无法启动啦? 于是网上搜了一堆tomcat闪退的解决办法,其中有说是没有读取 ...
- 双击startup.bat启动tomcat时闪退原因及解决方案
在启动免安装tomcat时,很容易遇到双击startup.bat,启动窗口闪退而tomcat服务未启动的状况. 具体原因:tomcat在启动时,需要读取环境变量和配置信息,如果缺少Java环境,即缺少 ...
- tomcat的war由于损坏不能解压导致的服务不能启动
问题描述: Tomcat启动,提示异常,服务自动释放! INFO: Starting Servlet Engine: Apache Tomcat/ Sep , :: PM org.apache.cat ...
- MySQL Server 5.7解压版缺少文件无法启动
如题: 一般认为5.7中mysql目录下 缺少data/mysql/目录,导致无法启动: 解决方案: 重新安装5.6即可: 1.删除5.7中安装的服务: 到mysql\bin目录下运行:mysqld ...
- jmeter解压后启动jmeter.bat报错:Not able to find java executable or version
错误详情: 错误解决方法: 修改环境变量配置将%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;移动到%SystemRoot%\system32;%SystemRoot%;%Sy ...
- 免解压版的Mysql的启动脚本,并且执行导入(windows)
@echo off rem ################### set MYSQL_VERSION=mysql-5.5.32-win32 set LOCK=wot.lock rem ####### ...
- linux运维中的命令梳理(二)
回想起来,从事linux运维工作已近5年之久了,日常工作中会用到很多常规命令,之前简单罗列了一些命令:http://www.cnblogs.com/kevingrace/p/5985486.html今 ...
随机推荐
- hdu1158【DP】
题意: 第一行项目数: 第二行每个工人的Hire Salary Fire money 第三行每个项目需要的人的数量: 工人在hire/fire的时候要付出额外的钱,如果已经hire了还没有fire就一 ...
- laravel之null替换空字符串中间件
在laravel写接口的时候免不了数据库中保存null,可用诸如设置ORM的访问器或以下方法处理 $goods->name?$goods->name:''; 其实可以利用路由中间件,在需要 ...
- 使用Hexo 搭建自己的博客
使用Hexo 搭建自己的博客 最近一直都想着如何去搭建属于自己的博客,有空的时候就写写文章什么的. 本人对该博客系统的要求是: 博文的编写要采用现在流行的MarkDown来进行编写. 本人还不想去注册 ...
- python入门之json与pickle数据序列化
前提实例: 将一个字典存放在文件里 #存入数据info = { 'name':'chy', 'age':18 } f = open("test.txt","w" ...
- 由Reference展开的学习
在阅读Thinking in Java的Containers in depth一章中的Holding references时,提到了一个工具包java.lang.ref,说这是个为Java垃圾回收提供 ...
- C8051F_CAN
CAN总线特点:基于报文编码而非对节点编码,增删节点对系统没有影响,靠干扰稳定性好,速率高. 小工具:CANtool 收发器:CAN总线收发器CTM1050,通信速率1Mbps,至少可连接110个节点 ...
- 74HC14D(6反向施密特触发器)
74HC14D:6反向施密特触发器:延迟特性,反向特性,整形特点. 施密特触发器是具有特殊功能的非门,当加在它的输入端A的电压逐渐上升到某个值时(正阈值电压),输出端Y会突然从高电平跳到低电平,而当输 ...
- ruby字符串处理
1. str="abc123"puts str[0].chr => a puts str[0] =>a的ascii码 2.中文字符串的正则 ...
- LVDT
什么是 LVDT? LVDT 是线性可变差动变压器的缩写. 它是一种常见类型的机电传感器,可将其以机械方式耦合的物体的直线运动转换为对应的电气信号.LVDT 线性位移传感器随时可用,可以测量各种移动, ...
- DockerSwarm 集群环境搭建
一.简介 1. 什么是docker swarm? Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 ...