推箱子游戏
一、功能描述:
可以通过面板上的按钮或是键盘上的pageup,pagedown键选择上下关
可以通过面板上按钮或是键盘上的Backspace键后退,一直后退自己想要的位置,知道游戏开始时的位置。
可以通过面板上的按钮或是键盘上的字母r重新开始当前关卡游戏。
可以在复选框内选择想要玩的关卡。
二、界面及运行截图
三、源代码(三部分)
1、地图类
package box;libor
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;//读取字符文件类FileReader
import java.io.IOException;
public class map {
int[][] map=new int[20][20];
int manX,manY;
public map(int level){
String filepath="mapc/"+level+".txt";
File file = new File(filepath);
FileReader fr = null;//利用FileReader流来读取一个文件中的数据
BufferedReader br = null;//字符读到缓存里
try {
fr = new FileReader(file);
br = new BufferedReader(fr);
for (int i = 0; i < 15; i++){
String line = br.readLine();//以行为单位,一次读一行 利用BufferedReader的readLine,读取分行文本
byte[] point = Bytes();//将字符串转换为字节数组
for (int j = 0; j < 15; j++) {
map[i][j] = point[j] - 48;// 根据ASCall码表要减掉30H(十进制的48)
if (map[i][j] == 5 || map[i][j] == 6 || map[i][j] == 7|| map[i][j] == 8){
manX = i;
manY = j;
}
}
}
}
catch (FileNotFoundException e){
e.printStackTrace();//深层次的输出异常调用的流程
}
catch (IOException e){
e.printStackTrace();//深层次的输出异常调用的流程
}
catch(NullPointerException e){
e.printStackTrace();//深层次的输出异常调用的流程
}
finally {
if (br == null){
try{
br.clo();
}
coaster catch (IOException e){
e.printStackTrace();
}
br = null;
}
if (fr == null){
try {
fr.clo();
} catch (IOException e){
e.printStackTrace();
}
fr = null;
}
}
}
public int[][] getMap() {
return map;
}
public int getManX() {
return manX;
}
public int getManY() {perfumes
return manY;
legacy是什么意思 }
}
2、游戏运行类
package box;
缓解工作压力的方法import java.awt.*;
import java.awt.event.ActionEvent;护士节快乐英文
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.*;
import javax.swing.*;
public class pushbox extends JFrame implements KeyListener,ActionListener{
map map_level=new map(1); //首次获取地图
int[][] map=new int[15][15]; //地图上每个位置所对应的图片
int[][] map_restart=new int[15][15]; //备用图片
static int manX,manY; //人所处的位置
static int level=1; //所处关卡
static int step=0;
Image[] picture; //地图上的所有图片
ImageIcon[] image=new ImageIcon[10];
Stack<Integer> back_stack = new Stack<Integer>(); //存储所前行的路径
JButton next,previous,back,restart,exit; //按钮:下一关,上一关,重新开始,退出
String current_level="第"+level+"关"; //当前所处关卡(右上角显示文本)
String[] level_button=new String[13]; //复选框的内容
韦伯英语 JComboBox lectBox; //选关复选框
final int Up = 0;
final int Down = 1;
final int Left = 2;
final int Right = 3;
int[] dir_x = {-1, 1, 0, 0};
int[] dir_y = {0, 0, -1, 1};
record是什么意思
public pushbox(){
super("推箱子");
getmap(map);
ironing
previous=new JButton("上一关");
next=new JButton("下一关");
restart=new JButton("重新开始");
back=new JButton("后退");
exit=new JButton("退出游戏");
for(int i=0;i<13;i++)
level_button[i]="第"+String(i+1)+"关";
典雅是什么意思
lectBox=new JComboBox(level_button);
FlowLayout layout=new FlowLayout(); //布局模式
Container c=getContentPane();
c.tLayout(layout);
layout.tAlignment(FlowLayout.CENTER); //控件在布局中的位置
c.tBackground(Color.CYAN); //背景色
c.add(previous);
c.add(next);
c.add(back);
c.add(restart);
c.add(lectBox);
c.add(exit);
previous.addActionListener((ActionListener) this);
previous.addKeyListener(this);
next.addActionListener((ActionListener) this);