用java实现推箱子(sokoban)游戏

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

推箱子游戏

一、功能描述:

➢可以通过面板上的按钮或是键盘上的pageup,pagedown键选择上下关

➢可以通过面板上按钮或是键盘上的Backspace键后退,一直后退自己想要的位置,知道游戏开始时的位置。

➢可以通过面板上的按钮或是键盘上的字母r重新开始当前关卡游戏。

➢可以在复选框内选择想要玩的关卡。

二、界面及运行截图

三、源代码(三部分)

1、地图类

package box;

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 = line.getBytes();//将字符串转换为字节数组

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.close();

}

catch (IOException e){

e.printStackTrace();

}

br = null;

}

if (fr == null){

try {

fr.close();

} catch (IOException e){

e.printStackTrace();

}

fr = null;

}

}

}

public int[][] getMap() {

return map;

}

public int getManX() {

return manX;

}

public int getManY() {

return manY;

}

}

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;

相关文档
最新文档