/**
* 项目: 迷宫老鼠
* 版本: 2.0
* 日期: 03-16
* 作者: 汪海洋
* 文件: CustomMaze.java
* 功能: 迷宫的CustomMaze主界面
* 描述: 生成自定义迷宫的界面
*/
package view;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.net.URL;
import java.util.ArrayList;
import javax.swing.*;
import model.MazeModel;
import model.MazePoint;
import model.MusicController;
public class CustomMaze {
// 五个按钮
JLabel create;
JLabel solveOne;
JLabel solveAll;
JLabel exitBtn;
JLabel againBtn;
JLabel saveBtn;
// 四个调节尺寸的按钮
JLabel rowLeft;
JLabel rowRight;
JLabel colLeft;
JLabel colRight;
ImageIcon create1;
ImageIcon create2;
ImageIcon solveOne1;
ImageIcon solveOne2;
ImageIcon save1;
ImageIcon save2;
ImageIcon solveAll1;
ImageIcon solveAll2;
ImageIcon exitBtn1;
ImageIcon exitBtn2;
ImageIcon again1;
ImageIcon again2;
// 调节迷宫大小的四个按钮图标
ImageIcon leftLight;
ImageIcon leftDark;
ImageIcon rightLight;
ImageIcon rightDark;
JLabel rowNum;
JLabel colNum;
ArrayList<ImageIcon> numbers;
public static int mazeRow, mazeCol;// 迷宫的行数和列数
ImageIcon iconLuffy, iconFinal;// 按钮的图片
ImageIcon maze_back;
Image wallImage, luffyImage, finalImage;
URL luffyURL, finalURL;
final int RANDOM_DRAW = 0;// 初始随机迷宫
final int STEP_DRAW = 1; // 执行一次后迷宫的图像
final int ALL_DRAW = 2; // 执行到最后时将通路画出
final int MAZE_WIDTH = 500; // 绘制迷宫的宽度
final int MAZE_HEIGHT = 500; // 绘制迷宫的高度
final int MAZE_X = 80; // 迷宫的x坐标
final int MAZE_Y = 110; // 迷宫的y坐标
final int BTNS_OFFSET_X = 600;
final int BTNS_OFFSET_Y = 240;
// 调节迷宫大小的四个按钮的的坐标
final int SIZE_OFFSET_X = 680;
final int SIZE_OFFSET_Y = 160;
final int ROW_GAP = 80;
final int COL_GAP = 36;
final int GAP_LENGTH = 60;// 定义两个按钮之间的距离
/********************************************************/
// 总体类似DrawFrame 的自定义生成迷宫
// 0代表没路过,1代表第一次尝试的地方,3代表设置的墙,4代表走过2次的
static Thread t;
public JFrame customMaze;
public MazeModel mazeModel;
public ArrayList<MazePoint> maze;
private int realX = 0, realY = 0;// 迷宫的真实大小
private int sizeX = 0, sizeY = 0;// 对应迷宫的方格大小
final ImageIcon icon5;
ImageIcon iconapple;
ImageIcon buton1, buton2, buton3, buton4, buton5;
JPanel panel;
Image wa, app;
URL apple;
CanvasPanel mazePanel;
boolean havecreat = false, ifend, enthread = true, haveaddmouse = false;;
int screenWidth, screenHeight;
int clickx, clicky;
int runNumber = 0;
MazePoint[] path;
int choose = 0;
int width = 0;
boolean isModify = true;
private MazePoint now;
JFrame homepage;
public MusicController musicController;
public CustomMaze(JFrame temp) {// 初始化图像
musicController = new MusicController();
mazeRow = 5;
mazeCol = 5;
homepage = temp;
mazePanel = new CanvasPanel();
URL wall = this.getClass().getResource("/images/墙壁.jpg");
icon5 = new ImageIcon(wall);
wa = icon5.getImage();
apple = this.getClass().getResource("/images/final.png");
iconapple = new ImageIcon(apple);
app = iconapple.getImage();
clickx = 0;
clicky = 0;
initializeThread();
initialize();
}
private void GetMaze(int x, int y) {// 生成迷宫
mazeModel = new MazeModel(x, y);
maze = mazeModel.initializeMaze();
width = x;
now = new MazePoint(0, 0);
enthread = true;
ifend = false;
}
private void initialize() {// 初始化界面
customMaze = new JFrame();
customMaze.setResizable(false);
customMaze.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Toolkit kit = Toolkit.getDefaultToolkit(); // 定义工具包
Dimension screenSize = kit.getScreenSize(); // 获取屏幕的尺寸
screenWidth = screenSize.width / 2; // 获取屏幕的宽
screenHeight = screenSize.height / 2; // 获取屏幕的高
customMaze.setBounds(screenWidth - Maze.GAME_WIDTH / 2, screenHeight
- Maze.GAME_HEIGHT / 2, Maze.GAME_WIDTH, Maze.GAME_HEIGHT);
customMaze.setLayout(null);
customMaze.setUndecorated(true);
// 初始化图片
URL button = this.getClass().getResource("/images/生成1.png");
create1 = new ImageIcon(button);
button = this.getClass().getResource("/images/生成2.png");
create2 = new ImageIcon(button);
button = this.getClass().getResource("/images/单步1.png");
solveOne1 = new ImageIcon(button);
button = this.getClass().getResource("/images/单步2.png");
solveOne2 = new ImageIcon(button);
button = this.getClass().getResource("/images/保存1.png");
save1 = new ImageIcon(button);
button = this.getClass().getResource("/images/保存2.png");
save2 = new ImageIcon(button);
button = this.getClass().getResource("/images/多步1.png");
solveAll1 = new ImageIcon(button);
button = this.getClass().getResource("/images/多步2.png");
solveAll2 = new ImageIcon(button);
button = this.getClass().getResource("/images/退出1.png");
exitBtn1 = new ImageIcon(button);
button = this.getClass().getResource("/images/退出2.png");
exitBtn2 = new ImageIcon(button);
button = this.getClass().getResource("/images/重新1.png");
again1 = new ImageIcon(button);
button = this.getClass().getResource("/images/重新2.png");
again2 = new ImageIcon(button);
button = this.getClass().getResource("/images/left_dark.png");
leftDark = new ImageIcon(button);
button = this.getClass().getResource("/images/left_light.png");
leftLight = new ImageIcon(button);
button = this.getClass().getResource("/images/right_dark.png");
rightDark = new ImageIcon(button);
button = this.getClass().getResource("/images/right_light.png");
rightLight = new ImageIcon(button);
numbers = new ArrayList<ImageIcon>();
for (int i = 1; i <= 25; i++) {
String name = "/images/" + i + ".png";
button = this.getClass().getResource(name);
numbers.add(new ImageIcon(button));
}
rowNum = new JLabel();
rowNum.setIcon(numbers.get(mazeRow - 1));
rowNum.setMaximumSize(new Dimension(numbers.get(0).getIconWidth(),
numbers.get(0).getIconHeight()));
rowNum.setBounds(SIZE_OFFSET_X + ROW_GAP / 2, SIZE_OFFSET_Y, numbers
.get(0).getIconWidth(), numbers.get(0).getIconHeight());
colNum = new JLabel();
colNum.setIcon(numbers.get(mazeRow - 1));
colNum.setMaximumSize(new Dimension(numbers.get(0).getIconWidth(),
numbers.get(0).getIconHeight()));
colNum.setBounds(SIZE_OFFSET_X + ROW_GAP / 2, SIZE_OFFSET_Y + COL_GAP,
numbers.get(0).getIconWidth(), numbers.get(0).getIconHeight());
/************* 设置四个按钮 **********************/
rowLeft = new JLabel();
rowLeft.setIcon(leftDark);
rowLeft.setMaximumSize(new Dimension(leftDark.getIconWidth(), leftDark
.getIconHeight()));
rowLeft.setBounds(SIZE_OFFSET_X, SIZE_OFFSET_Y,
leftDark.getIconWidth(), leftDark.getIconHeight());
rowLeft.addMouseListener(new RowLeftMouseAdapter());
rowRight = new JLabel();
rowRight.setIcon(rightDark);
rowRight.setMaximumSize(new Dimension(rightDark.getIconWidth(),
rightDark.getIconHeight()));
rowRight.setBounds(SIZE_OFFSET_X + ROW_GAP, SIZE_OFFSET_Y,
rightDark.getIconWidth(), rightDark.getIconHeight());
rowRight.addMouseListener(new RowRightMouseAdapter());
colLeft = new JLabel();
colLeft.setIcon(leftDark);
colLeft.setMaximumSize(new Dimension(leftDark.getIconWidth(), leftDark
.getIconHeight()));
colLeft.setBounds(SIZE_OFFSET_X, SIZE_OFFSET_Y + COL_GAP,
leftDark.getIconWidth(), leftDark.getIconHeight());
colLeft.addMouseListener(new ColLeftMouseAdapter());
colRight = new JLabel();
colRight.setIcon(rightDark);
colRight.setMaximumSize(new Dimension(rightDark.getIconWidth(),
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
迷宫 课程设计 (230个子文件)
CustomMaze.class 11KB
RandomMaze.class 10KB
MazeModel.class 6KB
Maze.class 4KB
RandomMaze$CanvasPanel.class 4KB
CustomMaze$CanvasPanel.class 3KB
AboutMe.class 3KB
MazePoint.class 2KB
CustomMaze$CreateMouseAdapter.class 2KB
MusicController.class 2KB
RandomMaze$CreateMouseAdapter.class 2KB
CustomMaze$AgainMouseAdapter.class 2KB
CustomMaze$SolveOneMouseAdapter.class 2KB
RandomMaze$AgainMouseAdapter.class 2KB
RandomMaze$SolveOneMouseAdapter.class 2KB
RandomMaze$SolveAllMouseAdapter.class 2KB
CustomMaze$SolveAllMouseAdapter.class 2KB
RandomMaze$1.class 1KB
CustomMaze$2.class 1KB
CustomMaze$RowRightMouseAdapter.class 1KB
RandomMaze$ColRightMouseAdapter.class 1KB
CustomMaze$ColRightMouseAdapter.class 1KB
RandomMaze$RowRightMouseAdapter.class 1KB
RandomMaze$RowLeftMouseAdapter.class 1KB
CustomMaze$ColLeftMouseAdapter.class 1KB
RandomMaze$ColLeftMouseAdapter.class 1KB
CustomMaze$RowLeftMouseAdapter.class 1KB
Stack.class 1KB
Maze$RandomMouseAdapter.class 1KB
RandomMaze$ExitMouseAdapter.class 1KB
Maze$CustomMouseAdapter.class 1KB
CustomMaze$ExitMouseAdapter.class 1KB
Maze$AboutMouseAdapter.class 1KB
CustomMaze$SaveMouseAdapter.class 1KB
Maze$ExitMouseAdapter.class 1KB
AboutMe$ExitMouseAdapter.class 1KB
CustomMaze$MakeMazeAdapter.class 1KB
AboutMe$1.class 941B
RandomMaze$2.class 936B
CustomMaze$1.class 936B
Maze$1.class 892B
.classpath 299B
CustomMaze.java 20KB
RandomMaze.java 19KB
MazeModel.java 9KB
Maze.java 6KB
AboutMe.java 3KB
MazePoint.java 2KB
MusicController.java 2KB
Stack.java 2KB
about_me.jpg 520KB
about_me.jpg 520KB
background.jpg 443KB
background.jpg 443KB
迷宫.jpg 233KB
迷宫.jpg 233KB
墙壁.jpg 156KB
墙壁.jpg 156KB
乌龟4.jpg 99KB
乌龟4.jpg 99KB
乌龟1.jpg 99KB
乌龟1.jpg 99KB
苹果1.jpg 78KB
苹果1.jpg 78KB
乌龟2.jpg 60KB
乌龟2.jpg 60KB
乌龟3.jpg 45KB
乌龟3.jpg 45KB
开始2.jpg 38KB
开始2.jpg 38KB
重新演示.jpg 23KB
重新演示.jpg 23KB
一键.jpg 22KB
一键.jpg 22KB
单步.jpg 22KB
单步.jpg 22KB
生成.jpg 22KB
生成.jpg 22KB
退出.jpg 21KB
退出.jpg 21KB
background.png 813KB
background.png 813KB
about_me.png 812KB
about_me.png 812KB
custom_back.png 804KB
custom_back.png 804KB
random_maze.png 799KB
random_maze.png 799KB
random_maze_back.png 416KB
random_maze_back.png 416KB
about_back1.png 53KB
about_back1.png 53KB
about_back2.png 52KB
about_back2.png 52KB
random_maze1.png 42KB
random_maze1.png 42KB
custom_maze1.png 42KB
custom_maze1.png 42KB
random_maze2.png 42KB
random_maze2.png 42KB
共 230 条
- 1
- 2
- 3
请叫我汪海
- 粉丝: 4946
- 资源: 35
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页