java 迷宫代码_老鼠走迷宫代码 JAVA
展开全部
//老鼠走迷宫程序
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Maze1 extends JPanel implements KeyListener
{ private int Width, Height,blockWidth, blockHeight;
//character是老鼠,floor是地板,block1是砖,block2是另一种e69da5e887aa3231313335323631343130323136353331333330343237砖
private Image character, floor, block1, block2;
//backGround是背景,offScreen是用于双缓冲用的次画面
private Image backGround, offScreen;
private Graphics drawOffScreen;
//这个类用来控制老鼠的移动
private SpriteAndMaze spriteAndMaze;
//是否进行了初始化
private boolean init = false;
//地图
private int[][] maze =
{{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,1,0,0,2,0,0,1,1,0,0,0,2,2},
{2,0,1,0,1,0,0,0,2,0,1,0,0,1,1,0,2,2},
{2,0,0,0,0,0,1,1,2,0,1,0,1,0,0,0,0,2},
{2,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,2},
{2,1,0,1,0,1,1,0,1,1,0,0,1,0,0,0,0,2},
{2,1,0,0,0,0,1,0,0,2,0,0,0,0,2,0,2,2},
{2,1,0,0,2,0,1,1,1,2,0,1,0,0,2,0,1,2},
{2,1,1,1,1,0,0,0,1,2,0,0,0,0,1,0,0,2},
{2,0,0,0,0,0,0,0,1,0,0,1,1,0,2,1,0,2},
{2,0,2,0,1,0,0,0,1,0,1,0,0,0,0,0,0,2},
{2,1,2,0,0,0,1,1,1,0,1,0,1,1,2,1,0,2},
{2,0,0,0,2,0,0,0,1,1,0,0,0,0,0,0,0,0},
{2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
//老鼠的宽和高
private int characterWidth, characterHeight;
//初始化程序
public void initial()
{
addKeyListener(this);
setBackground(Color.white);
//取得JPanel的高度,宽度
Width = this.getWidth();
Height =this.getHeight();
//mediaTracker对象是用来跟踪影像的加载情况的,
//影像加载完毕之后才可以显示出来,否则就会出错
MediaTracker mediaTracker = new MediaTracker(this);
//获得image对象
character = Toolkit.getDefaultToolkit().getImage("character.gif");
floor = Toolkit.getDefaultToolkit().getImage("floor.gif");
block1 = Toolkit.getDefaultToolkit().getImage("block1.gif");
block2 = Toolkit.getDefaultToolkit().getImage("block2.gif");
//把几个image对象都放在mediaTracker里,第二个参数是加载的优先权,目前设
//成0,即优先权都相同
mediaTracker.addImage(character,0);
mediaTracker.addImage(floor,0);
mediaTracker.addImage(block1,0);
mediaTracker.addImage(block2,0);
try
{
//等待影像加载完毕
mediaTracker.waitForAll();
}
catch(InterruptedException e)
{ e.printStackTrace(); }
//spriteAndMaze对象的构造,0,1是老鼠的初始坐标,maze是迷宫数组对象
spriteAndMaze = new SpriteAndMaze(0, 1, maze);
//砖的宽度
blockWidth = Width / maze[0].length;
//砖的高度
blockHeight = Height / maze.length;
//老鼠的宽度
characterWidth = Width / maze[0].length;
//老鼠的高度
characterHeight = Height / maze.length;
//建立次画面
offScreen = this.createImage(Width, Height);
drawOffScreen = offScreen.getGraphics();
// 建立地图
backGround = createImage(Width, Height);
Graphics g = backGround.getGraphics();
// 画地板
for(int i = 0; i < maze.length; i++)
{
for(int j = 0; j < maze[0].length; j++)
{
g.drawImage(floor, j*blockWidth,i*blockHeight, blockWidth,blockHeight, this);
}
}
// 画障碍物
for(int i = 0; i < maze.length; i++)
{
for(int j = 0; j < maze[0].length; j++)
{
switch(maze[i][j])
{
case 1:
g.drawImage(block1, j*blockWidth,i*blockHeight, blockWidth,blockHeight, this);
break;
case 2:
g.drawImage(block2, j*blockWidth,i*blockHeight, blockWidth,blockHeight, this);
break;
default:
g.drawImage(floor,j*blockWidth, i*blockHeight,blockWidth, blockHeight, this);
}
}
}
this.grabFocus();
init = true;
repaint();
}
public void paintComponent(Graphics g)
{
if(init == false)
{
return;
}
// 在次画面上贴地图
drawOffScreen.drawImage(backGround, 0, 0, this);
//在次画面上贴老鼠
drawOffScreen.drawImage(
character,
spriteAndMaze.getLocationX()*blockWidth,
spriteAndMaze.getLocationY()*blockHeight,
characterWidth,
characterHeight,
this);
//将次画面贴到主画面中
g.drawImage(offScreen, 0, 0,this);
}
public void update(Graphics g)
{
paint(g);
}
//=====实现KeyListener接口=====
public void keyTyped(KeyEvent e) { }
public void keyPressed(KeyEvent e)
{
int key = e.getKeyCode();
switch(key)
{
case KeyEvent.VK_RIGHT:
spriteAndMaze.moveRight();
break;
case KeyEvent.VK_LEFT:
spriteAndMaze.moveLeft();
break;
case KeyEvent.VK_UP:
spriteAndMaze.moveUp();
break;
case KeyEvent.VK_DOWN:
spriteAndMaze.moveDown();
break;
}
repaint();
}
public void keyReleased(KeyEvent e) {}
public static void main(String args[])
{
JFrame f = new JFrame();
Container c = f.getContentPane();
f.setSize(600,600);
Maze1 m = new Maze1();
c.add(m);
f.show();
//调用初始化程序
m.initial();
}
}
class SpriteAndMaze
{
private int x, y;//老鼠的x,y坐标
private int maze[][];//迷宫数组
public SpriteAndMaze() {}
//构造函数
public SpriteAndMaze(int x, int y)
{
this.x = x;
this.y = y;
}
public SpriteAndMaze(int x, int y, int[][] maze)
{
this(x, y);
this.maze = maze;
}
//老鼠向上移
public void moveUp()
{
if(isMovable(x, y-1))
{
y--;
}
}
//老鼠向下移
public void moveDown()
{
if(isMovable(x, y+1))
{
y++;
}
}
//老鼠向右移
public void moveRight()
{
if(isMovable(x+1, y))
{
x++;
}
}
//老鼠向左移
public void moveLeft()
{
if(isMovable(x-1, y))
{
x--;
}
}
//是否能移动,如果前方有障碍物,返回假
private boolean isMovable(int x, int y)
{
if(y < 0 || x < 0 || x >= maze[0].length || y >=maze.length)
return false;
if(maze[y][x] == 0)
return true;
else
return false;
}
public int getLocationX()
{ return x;
}
public int getLocationY()
{
return y;
}
public void setLocationX(int locationX)
{ this.x = locationX;
}
public void setLocationY(int locationY)
{
this.y= locationY;
}
public int[][] getMaze()
{
return maze;
}
public void setMaze(int[][] maze)
{
this.maze = maze;
}
}
追问
这个我也有不过没有修改迷宫和计时功能,也不能找出最短路径
已赞过
已踩过<
你对这个回答的评价是?
评论
收起
java 迷宫代码_老鼠走迷宫代码 JAVA相关推荐
- Java老鼠走迷宫流程图_老鼠走迷宫(队列实现)
1.[文件] Game.cpp ~ 2KB 下载(134) // Game.cpp: implementation of the Game class. // // #include "Ga ...
- java老鼠走迷宫算法_老鼠走迷宫java算法
说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下.右四个方向,在每前进一格之后就选一个 ...
- java递归老鼠走迷宫_老鼠走迷宫----------递归问题
老鼠走迷宫是一个典型的递归的问题,写几个这样的题才可以充分理解递归的过程. 写递归的过程有几点需要注意: (1)递归结束的条件 (2)递归过程的脉络,即逻辑要清晰. / // // 在迷宫中显示老鼠能 ...
- Java算法六:老鼠走迷宫
老鼠走迷宫(Mouse) 问题说明: 老鼠走迷宫是循环求解的基本类型,我们在二维数组中用2来表示迷宫的墙壁,使用1来表示老鼠的行走路径,并用程序求出从入口到出口的距离. 问题解答: 实际上是使用回溯算 ...
- java迷宫队列实现_老鼠走迷宫(队列实现)
1.[文件] Game.cpp ~ 2KB 下载(133) // Game.cpp: implementation of the Game class. // // #include &quo ...
- java代码老鼠走迷宫案例
java代码老鼠走迷宫案例 public class MiGong{//编写一个main方法public static void main(String[] args) {//思路// 1. 先创建迷 ...
- 米奇小老鼠走迷宫问题代码以及注释
代码浅析已在代码注释里,代码如下: /**@author 旧梦吖*@version 1.0* 走迷宫问题*/ public class Maze {public static void main(St ...
- java递归老鼠走迷宫_递归算法求老鼠走迷宫(C语言)
/*说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁, 使用1来表示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下.右四个方向,在每前进一格之后就选 ...
- 老鼠走迷宫-java
推荐韩老师课程:https://www.bilibili.com/video/BV1fh411y7R8?t=260&p=225 老鼠走迷宫-Maze.java package lbxx.day ...
最新文章
- 关于R和Python的安全机制
- Redis-参数说明
- 使用NPOI——C#和WEB API导出到Excel
- docker export/import到docker容器迁移的思考
- 用户增长 - BG/NBD概率模型预测用户生命周期LTV(二)
- 使用JSON和Jersey的Java RESTful Web服务
- html书签展示(带搜索)
- Java IO流(精简版)
- js 翻转数组 倒序排列
- 图像识别没你想的那么难!看完这篇你也能成专家
- 情有独钟,迷情电子三五年(七)
- Zotero实现双电脑+云端同步—Zotfile、坚果云
- 《女神异闻录5》那套酷炫界面的背后,是18年来的始终如一
- MFC基本图形的绘制(一)设备环境类CDC、画笔和画刷
- 自然语言处理数据集收集
- Compilation failed while executing : strip 问题解决
- html投影电脑,投影仪怎么连接笔记本电脑
- Centos 7安装Quagga
- php学生管理系统视频教程,学生管理系统——PHP
- Deep Gait Recognition: A Survey
热门文章
- 程序员开发常用英语词汇汇总,满满的干货!
- Building fresh packages...
- (转)国企,私企与外企利弊通观--关键时刻给应届毕业生及时点拨5
- C#:实现gnome sort 侏儒排序算法(附完整源码)
- 微信小程序中用户登录和登录态维护
- 服务器日志文件已被清除恢复,Linux服务器入侵后日志文件删除/恢复方法
- 计算机win7卡顿如何解决方法,电脑win7系统出现卡顿怎么处理
- 纯CSS实现三角形图标
- 【JS】跨域问题读写cookie的解决办法
- mplayer undefined reference to `av_lzo1x_decode''render_one_glyph'