JavaFX项目游戏—完整的推箱子程序–包含各个功能
JavaFX项目游戏—推箱子程序
文章目录
- JavaFX项目游戏---推箱子程序
- 前言
- Element基类
- Map类--关卡地图类,继承自Element
- Lists类---生成关卡地图列表
- CheckPonitAlert类---实现关卡通关后的Alert界面
- PlayGame类---实现游戏功能
- Move类---操作移动
- PlayAction---程序的主类
- Function类---实现游戏界面的各个功能
- StartScreen类---程序开始界面
- GuanqiaScreen --- 实现游戏界面
- PaihangScreen---排行榜界面---功能有bug
- PlayButton类--- 定义游戏界面的各个功能键
- SettingScreen---设置界面---功能暂未实现
- 游戏存储文件
- 游戏效果图
前言
本项目包含基本的推箱子程序,并实现了选择关卡、排行榜、设置功能。
在游戏界面实现上下关、重置、提示功能。撤销功能暂未解决。并实现了在各个界面之间切换。
博主文笔不好就直接贴上源代码。如果看不懂或者有什么想法都欢迎私聊或者评论,共同进步
Element基类
package Game;
/*
* 图片基础类
* 定义:
* 1.图片的x、y坐标
* 2.图片宽高
* 3.图片类型
* */
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Pane;
public class Element extends Pane {
public static int cell = 30;
static int imageCell = 50;
private int x = 0;
private int y = 0;
private Image image;
private ImageView imageView;
public Element() {
}
public int getCell() {
return cell;
}
public void setCell(int cell) {
Element.cell = cell;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public Image getImage() {
return image;
}
public void setImage(Image image) {
this.image = image;
}
public void setImageView() {
this.imageView = new ImageView(image);
this.imageView.setFitWidth(cell);
this.imageView.setFitHeight(cell);
this.imageView.setY(y);
this.imageView.setX(x);
}
public ImageView getImageView() {
return imageView;
}
}
Map类–关卡地图类,继承自Element
package Game;
/*
* 关卡地图类
* 绘制关卡
* 作为主Pane
* */
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
public class Map extends Element {
static int width = 380;
private Element element = new Element();
public static int cell = 30;
private int height = 320;
private int[][] list;
public static void setCell() {
if(PlayGame.listNumber < 5){
cell = 30;
}else{
cell = 20;
}
Element.cell = cell;
}
public static int getMapCell(){
return cell;
}
public void setList(int[][] list) {
this.list = list;
}
public ImageView getImagePlayer(int[] playerList) {
return drawImagePlayer(playerList[0], playerList[1]);
}
public ImageView[] getImageBox(int boxNumber, int[][] boxList) {
ImageView[] imageBox = new ImageView[boxNumber];
for (int i = 0; i < boxNumber; i++) {
imageBox[i] = drawImageBox(boxList[i][0], boxList[i][1]);
}
return imageBox;
}
public void drawMap() {
Image image;
for (int i = 0; i < list.length; i++) {
for (int j = 0; j < list[0].length; j++) {
if (list[i][j] == 1) {
image = new Image("/image/qiang.jpg");
drawElement(i, j, image);
} else if (list[i][j] == 2) {
image = new Image("/image/beijing.jpg");
drawElement(i, j, image);
} else if (list[i][j] < 0) {
image = new Image("/image/beijing.jpg");
drawElement(i, j, image);
} else if (list[i][j] == 4) {
image = new Image("/image/mubiaotu.jpg");
drawElement(i, j, image);
} else if (list[i][j] == 5) {
image = new Image("/image/beijing.jpg");
drawElement(i, j, image);
}
}
}
}
public void drawElement(int i, int j, Image image) {
element.setX(cell * j);
element.setY(cell * i);
element.setImage(image);
element.setImageView();
getChildren().add(element.getImageView());
}
public ImageView drawImagePlayer(int i, int j) {
element.setX(j * cell);
element.setY(i * cell);
element.setImage(new Image("/image/dongman.png"));
element.setImageView();
getChildren().add(element.getImageView());
return element.getImageView();
}
public ImageView drawImageBox(int i, int j) {
element.setX(j * cell);
element.setY(i * cell);
element.setImage(new Image("/image/xiangzi.jpg"));
element.setImageView();
System.out.println(cell);
getChildren().add(element.getImageView());
return element.getImageView();
}
}
Lists类—生成关卡地图列表
package Game;
/*
* 关卡列表
* 用以输出关卡的列表表示
* */
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Lists {
public int[][][] list;
private int listNumber = 0;
private int boxNumber = 0;
private int[][] boxIndexList ;
private int[] playerList = new int[2];
private int[] boxList;
private int[][] mubiaoList;
public int[][][] getAllList(){
return list;
}
public void initList(int[][] list){
boxIndexList = new int[boxNumber][2];
boxList = new int[boxNumber];
mubiaoList = new int[boxNumber][2];
int num = 0;
int mubiaonumber = 0;
for(int i=0;i<list.length;i++){
for(int j=0;j<list[0].length;j++){
if(list[i][j] < 0){
boxIndexList[num][0] = i;
boxIndexList[num][1] = j;
boxList[num] = list[i][j];
num++;
}else if(list[i][j] == 5){
playerList[0] = i;
playerList[1] = j;
}else if(list[i][j] == 4){
mubiaoList[mubiaonumber][0] = i;
mubiaoList[mubiaonumber][1] = j;
mubiaonumber++;
}
}
}
}
public void setBoxNumber(int[][] list){
boxNumber = 0;
for(int[] row:list){
for(int column : row){
if(column < 0){
boxNumber++;
}
}
}
}
public int getBoxNumber(){
return boxNumber;
}
public int[] getPlayerList(){
return playerList;
}
public int[][] getBoxIndexList(){
return boxIndexList;
}
public int[] getBoxList(){
return boxList;
}
public int[][] getMubiaoList(){
return mubiaoList;
}
public int[][] getList(){
return list[listNumber];
}
public boolean isSetBox(int i,int j){
for(int[] row : mubiaoList){
if(row[0] == i && row[1] == j){
return true;
}
}
return false;
}
public void setListNumber(int listNumber){
this.listNumber = listNumber;
}
public int getListNumber(){
return listNumber;
}
public int[][] setrowList(String str){
int[][] strlists;
int row = 0;
int column = 0;
for(int i=0;i<str.length();i++){
if(str.charAt(i) != 'n'){
column++;
}else{
row++;
}
}
row++;
column = column / row ;
strlists = new int[row][column];
int box = -1;
for(int i=0;i<row;i++){
for(int j=0;j<column;j++){
char charat = str.charAt((column + 1) * i + j);
if(charat == '_'){
strlists[i][j] = 0;
} else if(charat == '#'){
strlists[i][j] = 1;
}else if(charat == '-'){
strlists[i][j] = 2;
}else if(charat == '.'){
strlists[i][j] = 4;
}else if(charat == '@'){
strlists[i][j] = 5;
}else if(charat == '$'){
strlists[i][j] = box;
box--;
}
}
}
return strlists;
}
public void setList(){
int[][][] listqianwu = {
{
{0, 0, 1, 1, 1, 1, 0, 0, 0},
{1, 1, 1, 2, 2, 1, 1, 1, 1},
{1, 2, 2, 2, 2, 2, -1, 2, 1},
{1, 2, 1, 2, 2, 1, -2, 2, 1},
{1, 2, 4, 2, 4, 1, 5, 2, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1}
},
{
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0},
{1, 1, 1, 1, 2, 2, 2, 1, 0, 0, 0, 0},
{1, 4, 4, 1, -1, -2, 2, 1, 0, 0, 0, 0},
{1, 2, 4, 4, -3, 2, 2, 1, 1, 1, 1, 1},
{1, 2, 5, 1, 2, 1, 2, 1, 2, 2, 2, 1},
{1, 2, 2, -4, 2, 2, 2, 2, 2, -5, 2, 1},
{1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 4, 1},
{1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1}
},
{
{0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 2, 1, 0, 1, 1, 1, 1},
{0, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1},
{1, 1, 2, -1, 2, 2, 2, 2, 2, 2, 1},
{1, 2, 2, 2, 5, -2, 2, 1, 2, 2, 1},
{1, 1, 1, 2, -3, 1, 1, 1, 2, 2, 1},
{0, 0, 1, 2, 2, 1, 4, 4, 2, 2, 1},
{0, 1, 1, 2, 1, 1, 4, 1, 2, 1, 1},
{0, 1, 2, 2, 2, 2, 2, 2, 1, 1, 0},
{0, 1, 2, 2, 2, 2, 2, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0}
},
{
{0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1},
{0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 1},
{1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1},
{1, 2, -1, 2, -2, 2, 4, 4, 1, 2, 1},
{1, 2, 1, 2, 2, 4, 1, 2, 1, 2, 1},
{1, 2, 1, 2, 1, 1, 1, 2, 1, 2, 1},
{1, 2, 1, 4, 1, 2, -3, 2, 2, 2, 1},
{1, 2, 1, 4, -5, 5, -4, 2, 2, 1, 1},
{1, 2, 1, -6, 1, 1, 1, 2, 2, 1, 0},
{1, 2, 2, 4, 2, 2, 2, 2, 2, 1, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}
},
{
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 2, 2, 2, 2, 2, 2, 2, 2, 1},
{1, 2, 2, -1, 2, -2, 2, -3, 2, 1},
{1, 1, 5, 1, 1, 1, 1, 1, 2, 1},
{1, 2, 2, 2, 4, 2, 4, 2, 4, 1},
{1, 2, 2, 2, 2, 2, 2, 2, 2, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
}
};
list = new int[25][][];
for(int i=0;i<5;i++){
list[i] = listqianwu[i];
}
int[][][] strlist = new int[0][][];
try {
strlist = changeStrToList();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
int i = 5;
for(int[][] row : strlist){
list[i] = row;
i++;
}
}
public void printlist(int[][] list) {
for (int[] row : list) {
for (int column : row) {
System.out.print(column + " ");
}
System.out.println();
}
}
public int[][][] changeStrToList() throws FileNotFoundException {
int[][][] strlists = new int[20][][];
File filestr = new File("E:\IDEAproject\推箱子游戏---java基础大作业\src\FileText\str.txt");
File fileList = new File("E:\IDEAproject\推箱子游戏---java基础大作业\src\FileText\list.txt");
try(
Scanner input = new Scanner(filestr);
){
for(int i=0;i<20;i++){
String str1;
int strNumber;
String string = "";
while(true) {
if(input.hasNextInt()){
strNumber = input.nextInt();
if(strNumber == i + 2){
break;
}
}else{
str1 = input.next();
string += str1 + "n";
}
}
string = string.substring(0,string.length() - 1);
strlists[i] = setrowList(string);
}
}
return strlists;
}
}
CheckPonitAlert类—实现关卡通关后的Alert界面
package Game;
import javafx.scene.Node;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.stage.StageStyle;
import java.util.Optional;
public class CheckPointAlert {
private Alert alert;
public Alert getAlert() {
return alert;
}
public void setALert(Alert.AlertType alertType, String title, String headText, String contentText, StageStyle stageStyle, Node graphic) {
alert = new Alert(alertType);
if (title != null) {
alert.setTitle(title);
}
if (headText != null) {
alert.setHeaderText(headText);
}
if (contentText != null) {
alert.setContentText(contentText);
}
if (stageStyle != null) {
alert.initStyle(stageStyle);
}
if (graphic != null) {
alert.setGraphic(graphic);
}
}
// xiayiguan
public ButtonType setXiayiguanAlert() {
alert.getButtonTypes().add(ButtonType.CANCEL);
alert.getButtonTypes().add(ButtonType.NEXT);
Optional<ButtonType> result = alert.showAndWait();
ButtonType buttonType = result.get();
return buttonType;
}
}
PlayGame类—实现游戏功能
package Game;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class PlayGame {
public static Lists lists = new Lists();
public static ImageView imagePlayer;
public static ImageView[] imageBox;
public static int[][] list;
public static int[] boxList;
public static int listNumber = 0;
public static int stepNumber = 0;
public static Text textguanqia = new Text();
public static Text textStep = new Text();
Map map = new Map();
CheckPointAlert checkPointAlert = new CheckPointAlert();
BorderPane pane = new BorderPane();
PlayButton playButton;
HBox hBoxTop = new HBox(20);
public BorderPane getPane() {
return pane;
}
public ImageView getImagePlayer() {
return imagePlayer;
}
public ImageView[] getImageBox() {
return imageBox;
}
public int[][] getList() {
return list;
}
public Lists getLists() {
return lists;
}
public int[] getBoxList() {
return boxList;
}
public PlayButton getPlayButton() {
return playButton;
}
// 初始化关卡图
public void initmap() {
initList();
map = new Map();
// map.setPadding(new Insets(10, 0, 0, 0));
// map.setMaxWidth(Map.width);
// map.setMaxHeight(Map.width);
stepNumber = 0;
map.setList(list);
// map.setCell();
map.drawMap();
imageBox = map.getImageBox(lists.getBoxNumber(), lists.getBoxIndexList());
imagePlayer = map.getImagePlayer(lists.getPlayerList());
pane.setCenter(map);
pane.setTop(hBoxTop);
}
public void initText() {
textguanqia.setText("第" + (listNumber + 1) + "关");
textStep.setText(stepNumber + "步");
}
public void initTop() {
initText();
textguanqia.setFont(Font.font("Times", 30));
textStep.setFont(Font.font("Times", 30));
hBoxTop.setPadding(new Insets(10,10,10,10));
hBoxTop.getChildren().addAll(textStep, textguanqia);
hBoxTop.setAlignment(Pos.CENTER);
}
// initList
public void initList() {
lists = new Lists();
lists.setListNumber(listNumber);
lists.setList();
list = lists.getList();
lists.setBoxNumber(list);
lists.initList(list);
boxList = lists.getBoxList();
}
// background
public void setBackGround() {
ImageView imageView = new ImageView("/image/background.png");
pane.getChildren().add(imageView);
imageView.fitWidthProperty().bind(pane.widthProperty());
imageView.fitHeightProperty().bind(pane.heightProperty());
}
//
public void setPlayButton() {
playButton = new PlayButton();
pane.getChildren().add(playButton.getExit());
pane.setBottom(playButton.getvBox());
}
// 判断玩家是否闯关成功
public boolean isWin() {
for (int[] row : list) {
for (int column : row) {
if (column == 4) {
return false;
}
}
}
return true;
}
// 闯关成功则生成Alert,并指向下一关
public void createStage() {
String title = "闯关成功";
// String headText = "恭喜!成功闯过第 "+(listNumber+1)+" 关!";
//String contentText = "恭喜!成功闯过第 "+(listNumber+1)+" 关! ";
Text contentText = new Text("恭喜!成功闯过第 " + (listNumber + 1) + " 关! ");
if (stepNumber < imageBox.length * 50) {
contentText.setText(contentText.getText() + "完美通关");
}
contentText.setFont(Font.font("Times", 20));
VBox vBox = new VBox(10);
vBox.getChildren().add(new ImageView("/image/sanxing.gif"));
vBox.getChildren().add(contentText);
checkPointAlert.setALert(Alert.AlertType.NONE, title, null, null, null, vBox);
ButtonType buttonType = checkPointAlert.setXiayiguanAlert();
if (buttonType == ButtonType.NEXT) {
if (listNumber < lists.getAllList().length - 1) {
listNumber++;
} else if (listNumber == lists.getAllList().length - 1) {
checkPointAlert.setALert(Alert.AlertType.NONE, title, "恭喜!成功闯过所有的关卡", null, null, new ImageView("/image/guzhang.gif"));
buttonType = checkPointAlert.setXiayiguanAlert();
}
}
System.out.println("Win!"+(listNumber));
}
// 写闯关记录
public void setrecord() {
File fileRrcord = new File("E:\IDEAproject\推箱子游戏---java基础大作业\src\FileText\chuangguanjilu.txt");
try (PrintWriter output = new PrintWriter(fileRrcord)) {
output.println(listNumber + 1);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
// 读取闯关记录
public void sethuifurecord() {
File fileRrcord = new File("E:\IDEAproject\推箱子游戏---java基础大作业\src\FileText\chuangguanjilu.txt");
try (Scanner input = new Scanner(fileRrcord)) {
listNumber = input.nextInt() - 1;
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public void printlist(int[][] list) {
for (int[] row : list) {
for (int column : row) {
System.out.print(column + " ");
}
System.out.println();
}
}
}
Move类—操作移动
package Controller;
import Game.Element;
import Game.Map;
import Game.PlayButton;
import Game.PlayGame;
import javafx.scene.image.ImageView;
import java.util.ArrayList;
public class Move {
public static ArrayList<Integer> listNumber = new ArrayList<>();
ArrayList<Integer> direction = new ArrayList<>();
PlayGame playGame;
PlayButton playButton;
private int cell = 30;
public Move(PlayGame playGame) {
this.playGame = playGame;
}
// 获取人物的I
public int getI(ImageView imageView) {
return (int) (imageView.getY() / cell);
}
// 获取人物的J
public int getJ(ImageView imageView) {
return (int) (imageView.getX() / cell);
}
public void playerMove() {
playButton = playGame.getPlayButton();
turnUP();
turnDOWN();
turnLEFT();
turnRIGHT();
// turnTuiyibu();
}
public void IsWin() {
if (playGame.isWin()) {
listNumber.add(PlayGame.listNumber);
listNumber.add(PlayGame.stepNumber);
playGame.createStage();
playGame.initmap();
if(PlayGame.listNumber < 5){
cell = 30;
}else{
cell = 20;
}
}
System.out.println(PlayGame.listNumber+" "+cell);
}
// UP
public void turnUP() {
playButton.getUp().setOnAction(e -> {
up(1);
});
}
public void up(int flag) {
int i = getI(PlayGame.imagePlayer);
int j = getJ(PlayGame.imagePlayer);
if (PlayGame.list[i - 1][j] != 1) {
if (PlayGame.list[i - 1][j] == 2 || PlayGame.list[i - 1][j] == 5 || PlayGame.list[i - 1][j] == 4) {
PlayGame.imagePlayer.setY(PlayGame.imagePlayer.getY() - cell);
PlayGame.stepNumber++;
playGame.initText();
direction.add(1);
}
for (int k = 0; k < PlayGame.boxList.length; k++) {
if (PlayGame.list[i - flag][j] == PlayGame.boxList[k]) {
if (PlayGame.list[getI(PlayGame.imageBox[k]) - flag][getJ(PlayGame.imageBox[k])] > 1) {
PlayGame.list[i - flag][j] = 2;
PlayGame.list[i - 2 * flag][j] = PlayGame.boxList[k];
if (PlayGame.lists.isSetBox(i - flag, j)) {
PlayGame.list[i - flag][j] = 4;
}
PlayGame.imageBox[k].setY(PlayGame.imageBox[k].getY() - cell);
PlayGame.imagePlayer.setY(PlayGame.imagePlayer.getY() - cell);
PlayGame.stepNumber++;
playGame.initText();
direction.add(1);
}
}
}
System.out.println("UP");
IsWin();
printlist(PlayGame.list);
}
}
// DOWN
public void turnDOWN() {
playButton.getDown().setOnAction(e -> {
down(1);
});
}
public void down(int flag) {
int i = getI(PlayGame.imagePlayer);
int j = getJ(PlayGame.imagePlayer);
if (PlayGame.list[i + 1][j] != 1) {
if (PlayGame.list[i + 1][j] == 2 || PlayGame.list[i + 1][j] == 5 || PlayGame.list[i + 1][j] == 4) {
PlayGame.imagePlayer.setY(PlayGame.imagePlayer.getY() + cell);
PlayGame.stepNumber++;
playGame.initText();
direction.add(2);
}
for (int k = 0; k < PlayGame.boxList.length; k++) {
if (PlayGame.list[i + flag][j] == PlayGame.boxList[k]) {
if (PlayGame.list[getI(PlayGame.imageBox[k]) + flag][getJ(PlayGame.imageBox[k])] > 1) {
PlayGame.list[i + flag][j] = 2;
PlayGame.list[i + flag * 2][j] = PlayGame.boxList[k];
if (PlayGame.lists.isSetBox(i + flag, j)) {
PlayGame.list[i + flag][j] = 4;
}
PlayGame.imageBox[k].setY(PlayGame.imageBox[k].getY() + cell);
PlayGame.imagePlayer.setY(PlayGame.imagePlayer.getY() + cell);
PlayGame.stepNumber++;
playGame.initText();
direction.add(2);
}
}
}
System.out.println("DOWN");
IsWin();
printlist(PlayGame.list);
}
}
// Left
public void turnLEFT() {
playButton.getLeft().setOnAction(e -> {
left(1);
});
}
public void left(int flag) {
int i = getI(PlayGame.imagePlayer);
int j = getJ(PlayGame.imagePlayer);
if (PlayGame.list[i][j - 1] != 1) {
if (PlayGame.list[i][j - 1] == 2 || PlayGame.list[i][j - 1] == 5 || PlayGame.list[i][j - 1] == 4) {
PlayGame.imagePlayer.setX(PlayGame.imagePlayer.getX() - cell);
PlayGame.stepNumber++;
playGame.initText();
direction.add(3);
}
for (int k = 0; k < PlayGame.boxList.length; k++) {
if (PlayGame.list[i][j - flag] == PlayGame.boxList[k]) {
if (PlayGame.list[getI(PlayGame.imageBox[k])][getJ(PlayGame.imageBox[k]) - flag] > 1) {
PlayGame.list[i][j - flag] = 2;
PlayGame.list[i][j - 2 * flag] = PlayGame.boxList[k];
if (PlayGame.lists.isSetBox(i, j - flag)) {
PlayGame.list[i][flag - 1] = 4;
}
PlayGame.imageBox[k].setX(PlayGame.imageBox[k].getX() - cell);
PlayGame.imagePlayer.setX(PlayGame.imagePlayer.getX() - cell);
PlayGame.stepNumber++;
playGame.initText();
direction.add(3);
}
}
}
IsWin();
System.out.println("LEFT");
printlist(PlayGame.list);
}
}
// RIGHT
public void turnRIGHT() {
playButton.getRight().setOnAction(e -> {
right(1);
});
}
public void right(int flag) {
int i = getI(PlayGame.imagePlayer);
int j = getJ(PlayGame.imagePlayer);
if (PlayGame.list[i][j + 1] != 1) {
if (PlayGame.list[i][j + 1] == 2 || PlayGame.list[i][j + 1] == 5 || PlayGame.list[i][j + 1] == 4) {
PlayGame.imagePlayer.setX(PlayGame.imagePlayer.getX() + cell);
PlayGame.stepNumber++;
playGame.initText();
direction.add(4);
}
for (int k = 0; k < PlayGame.boxList.length; k++) {
if (PlayGame.list[i][j + flag] == PlayGame.boxList[k]) {
if (PlayGame.list[getI(PlayGame.imageBox[k])][getJ(PlayGame.imageBox[k]) + flag] > 1) {
PlayGame.list[i][j + flag] = 2;
PlayGame.list[i][j + 2 * flag] = PlayGame.boxList[k];
if (PlayGame.lists.isSetBox(i, j + flag)) {
PlayGame.list[i][j + flag] = 4;
}
PlayGame.imageBox[k].setX(PlayGame.imageBox[k].getX() + cell);
PlayGame.imagePlayer.setX(PlayGame.imagePlayer.getX() + cell);
PlayGame.stepNumber++;
playGame.initText();
direction.add(4);
}
}
}
IsWin();
System.out.println("RIGHT");
printlist(PlayGame.list);
}
}
public void printlist(int[][] list) {
for (int[] row : list) {
for (int column : row) {
System.out.print(column + " ");
}
System.out.println();
}
}
public void printlist(int[] list) {
for (int row : list) {
System.out.println(row + " ");
}
}
}
package Game;
import javafx.scene.Node;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.stage.StageStyle;
import java.util.Optional;
public class CheckPointAlert {
private Alert alert;
public Alert getAlert() {
return alert;
}
public void setALert(Alert.AlertType alertType, String title, String headText, String contentText, StageStyle stageStyle, Node graphic) {
alert = new Alert(alertType);
if (title != null) {
alert.setTitle(title);
}
if (headText != null) {
alert.setHeaderText(headText);
}
if (contentText != null) {
alert.setContentText(contentText);
}
if (stageStyle != null) {
alert.initStyle(stageStyle);
}
if (graphic != null) {
alert.setGraphic(graphic);
}
}
// xiayiguan
public ButtonType setXiayiguanAlert() {
alert.getButtonTypes().add(ButtonType.CANCEL);
alert.getButtonTypes().add(ButtonType.NEXT);
Optional<ButtonType> result = alert.showAndWait();
ButtonType buttonType = result.get();
return buttonType;
}
}
PlayAction—程序的主类
package Game;
import Controller.Function;
import Controller.Move;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class PlayAction extends Application {
PlayGame playGame = new PlayGame();
StartScreen startScreen = new StartScreen();
GuanqiaScreen guanqiaScreen = new GuanqiaScreen();
SettingScreen settingScreen = new SettingScreen();
PaihangScreen paihangScreen = new PaihangScreen();
Move move;
Function function;
Scene sceneStartGame;
Scene scenePlay = new Scene(playGame.getPane());
@Override
public void start(Stage primaryStage){
playGame.setBackGround();
startScreen.setScene();
sceneStartGame = startScreen.getScene();
playGame.sethuifurecord();
playGame.initmap();
playGame.initTop();
playGame.setPlayButton();
move = new Move(playGame);
function = new Function(playGame,startScreen);
move.playerMove();
function.turnChongzhi();
function.turnStartGame(primaryStage);
function.turnXiayiguan();
function.turnTishi();
function.turnShangyiguan();
primaryStage.setScene(sceneStartGame);
StartToGame(primaryStage);
StartToChoose(primaryStage);
ChoosereturnStart(primaryStage);
StartToSetting(primaryStage);
ExitSetting(primaryStage);
StartToPaihang(primaryStage);
ExitPaihang(primaryStage);
paihangScreen.initFile();
// paihangScreen.setGridPane();
guanqiaScreen.gridPaneOnAction(playGame,primaryStage,scenePlay);
primaryStage.setWidth(playGame.map.getWidth());
primaryStage.setTitle("推箱子游戏");
// primaryStage.setResizable(false);
primaryStage.show();
// move = new Move(playGame);
playGame.setrecord();
playGame.getImagePlayer().requestFocus();
}
public void StartToGame(Stage stage){
startScreen.getStartGame().setOnMousePressed(e -> {
stage.setScene(scenePlay);
System.out.println("StartToGame");
});
}
public void StartToChoose(Stage stage){
startScreen.getChooseCheckPoint().setOnMouseClicked(e -> {
stage.setScene(guanqiaScreen.getScene());
System.out.println("StartToChoose");
});
}
public void ChoosereturnStart(Stage stage){
guanqiaScreen.getExit().setOnMouseClicked(e -> {
stage.setScene(startScreen.getScene());
System.out.println("ExitGuanqiaScreen");
});
}
public void StartToSetting(Stage stage){
startScreen.getSetting().setOnMouseClicked(e -> {
stage.setScene(settingScreen.getSceneSetting());
System.out.println("StartToSetting");
});
}
public void ExitSetting(Stage stage){
settingScreen.getExit().setOnMouseClicked(e -> {
stage.setScene(startScreen.getScene());
});
}
public void StartToPaihang(Stage stage){
startScreen.getPaiHangPK().setOnMouseClicked(e -> {
stage.setScene(paihangScreen.getScenePaihang());
paihangScreen.setGridPane();
System.out.println("StartToPaihang");
});
}
public void ExitPaihang(Stage stage){
paihangScreen.getExit().setOnMouseClicked(e -> {
stage.setScene(startScreen.getScene());
});
}
public static void main(String[] args){
Application.launch(args);
}
}
Function类—实现游戏界面的各个功能
package Controller;
/*
* Function 类
* 1、exit功能
* 2、下一关功能
* 3、上一关功能
* 4、提示功能
* 5、重置关卡功能
* */
import Game.*;
import javafx.scene.control.Alert;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;
public class Function {
PlayGame playGame;
PlayButton playButton;
StartScreen startScreen;
private int cell = new Element().getCell();
public Function(PlayGame playGame, StartScreen startScreen) {
this.playGame = playGame;
playButton = playGame.getPlayButton();
this.startScreen = startScreen;
}
// exit
public void turnStartGame(Stage primaryStage) {
playButton.getExit().setOnMouseClicked(e -> {
primaryStage.setScene(startScreen.getScene());
});
}
// xiayiguan
public void turnXiayiguan() {
playButton.getXiayiguan().setOnMouseClicked(e -> {
if (PlayGame.listNumber >= 24) {
PlayGame.listNumber = 24;
} else {
PlayGame.listNumber++;
}
playGame.initmap();
playGame.initText();
if(PlayGame.listNumber < 5){
cell = 30;
}else{
cell = 20;
}
});
}
// chongzhi
public void turnChongzhi() {
playButton.getChongzhi().setOnMouseClicked(e -> {
playGame.initmap();
});
}
// 提示
public void turnTishi() {
playButton.getTishi().setOnMouseClicked(e -> {
CheckPointAlert checkPointAlert = new CheckPointAlert();
String title = "提示信息";
String headText = "抱歉!作者也不会这一关的通关方法!";
ImageView imageView = new ImageView("/image/sikao.gif");
if (PlayGame.listNumber < 5) {
imageView = new ImageView("/image/tishihui.gif");
headText = "先这样,再那样,然后那样,就可以通过了![Doge]";
}
imageView.setFitWidth(100);
imageView.setFitHeight(100);
checkPointAlert.setALert(Alert.AlertType.NONE, title, headText, null, null, imageView);
checkPointAlert.setXiayiguanAlert();
});
}
// 上一关
public void turnShangyiguan() {
playButton.getShangyiguan().setOnMouseClicked(e -> {
if (PlayGame.listNumber < 0) {
PlayGame.listNumber = 0;
} else {
PlayGame.listNumber--;
}
playGame.initmap();
playGame.initText();
});
}
}
StartScreen类—程序开始界面
package Game;
/*
* 游戏的开始界面
* 1. 游戏名字
* 2. 四个按钮 ->
* 2.1 开始游戏
* 2.2 选择关卡
* 2.3 排行PK
* 2.4 设置
* */
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
public class StartScreen {
VBox vBox = new VBox(20);
StackPane pane = new StackPane();
ImageView startGame;
ImageView chooseCheckPoint;
ImageView paiHangPK;
ImageView setting;
Scene scene;
private int cell = 50;
public StartScreen() {
}
public void setGameName() {
ImageView imageView = new ImageView("/image/gamename.png");
vBox.getChildren().add(imageView);
}
public void setStartGame() {
startGame = new ImageView("/image/start.png");
startGame.setFitWidth(cell * 6);
startGame.setFitHeight(cell * 1.5);
vBox.getChildren().add(startGame);
}
public void setChooseCheckPoint() {
chooseCheckPoint = new ImageView("/image/xuanzeguanqia.png");
chooseCheckPoint.setFitWidth(cell * 6);
chooseCheckPoint.setFitHeight(cell * 1.5);
vBox.getChildren().add(chooseCheckPoint);
}
public void setPaiHangPK() {
paiHangPK = new ImageView("/image/paihangbutton.png");
paiHangPK.setFitWidth(cell * 6);
paiHangPK.setFitHeight(cell * 1.5);
vBox.getChildren().add(paiHangPK);
}
public void setSetting() {
setting = new ImageView("/image/shezhi.png");
setting.setFitWidth(cell * 6);
setting.setFitHeight(cell * 1.5);
vBox.getChildren().add(setting);
}
public ImageView getStartGame() {
System.out.println(startGame);
return startGame;
}
public ImageView getChooseCheckPoint() {
return chooseCheckPoint;
}
public ImageView getPaiHangPK() {
return paiHangPK;
}
public ImageView getSetting() {
return setting;
}
public void setvBox() {
setGameName();
setStartGame();
setChooseCheckPoint();
;
setPaiHangPK();
setSetting();
vBox.setPadding(new Insets(10, 10, 10, 10));
vBox.setAlignment(Pos.CENTER);
}
public void setBackGroundImage() {
ImageView imageView = new ImageView("/image/background.png");
pane.getChildren().add(imageView);
imageView.fitWidthProperty().bind(pane.widthProperty());
imageView.fitHeightProperty().bind(pane.heightProperty());
}
public void setScene() {
setBackGroundImage();
setvBox();
pane.getChildren().add(vBox);
scene = new Scene(pane);
}
public Scene getScene() {
return scene;
}
public Pane getPane() {
return pane;
}
}
GuanqiaScreen — 实现游戏界面
package Game;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public class GuanqiaScreen{
private int cell = 50;
private int width = 70;
private int space = 20;
Scene scene;
HBox hBoxTop = new HBox();
HBox hBoxBottom = new HBox(20);
BorderPane borderPane = new BorderPane();
GridPane gridPane = new GridPane();
ImageView exit;
Button left;
Button right;
public GuanqiaScreen() {
setScene();
}
public void setExit() {
exit = new ImageView("/image/exit.png");
exit.setFitWidth(cell);
exit.setFitHeight(cell);
hBoxTop.getChildren().add(exit);
}
public ImageView getExit() {
return exit;
}
public void setLeft() {
ImageView imageView = new ImageView("/image/left.png");
imageView.setFitHeight(cell);
imageView.setFitWidth(cell);
left = new Button("", imageView);
hBoxBottom.getChildren().add(left);
}
public Button getLeft() {
return left;
}
public void setRight() {
ImageView imageView = new ImageView("/image/right.png");
imageView.setFitHeight(cell);
imageView.setFitWidth(cell);
right = new Button("", imageView);
hBoxBottom.getChildren().add(right);
}
public Button getRight() {
return left;
}
public void setGridPane() {
gridPane.setPadding(new Insets(space,0,0,space));
gridPane.setHgap(space);
gridPane.setVgap(space);
for (int i = 0; i < 6; i++) {
for (int j = 1; j < 5; j++) {
String url = "/image/" + (i * 4 + j) + ".png";
ImageView imageView = new ImageView(url);
imageView.setFitHeight(width);
imageView.setFitWidth(width);
gridPane.add(imageView, j, i);
System.out.println(imageView.getX()+" "+ imageView.getY());
}
}
}
public GridPane getGridPane(){
return gridPane;
}
public void gridPaneOnAction(PlayGame playGame,Stage stage,Scene scenePlay){
gridPane.setOnMouseClicked(e -> {
int j = (int)((e.getX() - space ) / (width + space));
int i = (int)(e.getY() / (width + space));
PlayGame.listNumber = i * 4 + j;
System.out.println(i+" "+j+" "+PlayGame.listNumber);
playGame.initmap();
playGame.initText();
stage.setScene(scenePlay);
});
}
public void sethBoxTop() {
setExit();
hBoxTop.getChildren().add(new ImageView("/image/xuanzeguanqiaming.gif"));
hBoxTop.setSpacing(cell * 0.6);
}
public void sethBoxBottom() {
setLeft();
setRight();
hBoxBottom.setPadding(new Insets(25,25,25,25));
hBoxBottom.setSpacing(cell * 4.3);
// hBoxBottom.setAlignment(Pos.CENTER);
}
public void setBorderPane() {
setGridPane();
sethBoxBottom();
sethBoxTop();
ImageView imageView = new ImageView("/image/background.png");
imageView.fitHeightProperty().bind(borderPane.heightProperty());
imageView.fitWidthProperty().bind(gridPane.widthProperty());
borderPane.getChildren().add(imageView);
borderPane.setTop(hBoxTop);
borderPane.setCenter(gridPane);
borderPane.setBottom(hBoxBottom);
}
public void setScene() {
setBorderPane();
scene = new Scene(borderPane);
}
public Scene getScene() {
return scene;
}
public void setGuanqia(){
}
}
PaihangScreen—排行榜界面—功能有bug
package Game;
import Controller.Move;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
public class PaihangScreen {
private int cell = 50;
HBox hBoxTop = new HBox();
Scene scenePaihang;
BorderPane borderPane = new BorderPane();
GridPane gridPane = new GridPane();
ImageView exit;
File file = new File("E:\IDEAproject\推箱子游戏---java基础大作业\src\FileText\paihang.txt");
public static ArrayList<Integer> listNumberCopy = new ArrayList<>();
public void setExit() {
exit = new ImageView("/image/exit.png");
exit.setFitWidth(cell);
exit.setFitHeight(cell);
hBoxTop.getChildren().add(exit);
}
public ImageView getExit() {
return exit;
}
public void sethBoxTop() {
setExit();
hBoxTop.getChildren().add(new ImageView("/image/paihangname.png"));
hBoxTop.setSpacing(cell * 0.6);
borderPane.setTop(hBoxTop);
}
public void setScenePaihang(){
ImageView imageView = new ImageView("/image/background.png");
imageView.fitHeightProperty().bind(borderPane.heightProperty());
imageView.fitWidthProperty().bind(borderPane.widthProperty());
borderPane.getChildren().add(imageView);
sethBoxTop();
scenePaihang = new Scene(borderPane);
}
public Scene getScenePaihang(){
return scenePaihang;
}
public PaihangScreen(){
setScenePaihang();
}
public void initFile(){
try(
PrintWriter printWriter = new PrintWriter(file);
) {
printWriter.println("");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public void inputNumber(){
try(
Scanner scanner = new Scanner(file);
) {
while(scanner.hasNextInt()){
listNumberCopy.add(scanner.nextInt());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public void outputNumber(){
try(
PrintWriter printWriter = new PrintWriter(file);
) {
for(int i=0;i<listNumberCopy.size();i++){
printWriter.println(listNumberCopy.get(i));
}
if(Move.listNumber.size() > 0){
printWriter.println(Move.listNumber.get(Move.listNumber.size() - 2) + 1);
printWriter.println(Move.listNumber.get(Move.listNumber.size() - 1));
for(int i=0;i<listNumberCopy.size();i++){
System.out.println(listNumberCopy.get(i));
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public void setGridPane(){
inputNumber();
outputNumber();
Text textguanqia = new Text("关卡");
textguanqia.setFont(Font.font("Times", 20));
gridPane.add(textguanqia,0,0);
Text textStepNumber = new Text("步数");
textStepNumber.setFont(Font.font("Times", 20));
gridPane.add(textStepNumber,1,0);
int num = 1;
for(int i=0;i<listNumberCopy.size();i+=2){
gridPane.add(new Text(String.valueOf(listNumberCopy.get(i))),0,num);
gridPane.add(new Text(String.valueOf(listNumberCopy.get(i + 1))),1,num);
num++;
}
gridPane.setAlignment(Pos.CENTER);
gridPane.setVgap(20);
gridPane.setHgap(20);
borderPane.setCenter(gridPane);
}
}
PlayButton类— 定义游戏界面的各个功能键
package Game;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
public class PlayButton {
HBox hBoxTop = new HBox(30);
HBox hBoxBottom = new HBox(20);
HBox hBoxBottom1 = new HBox(20);
VBox vBox = new VBox(10);
ImageView exit;
ImageView xiayiguan;
ImageView shangyiguan;
ImageView tishi;
ImageView tuiyibu;
ImageView chongzhi;
Button up;
Button down;
Button left;
Button right;
Text text;
Text guanqia;
private int cell = Element.imageCell;
public PlayButton() {
setExit();
sethBoxBottom();
}
public void setExit() {
exit = new ImageView("/image/exit.png");
exit.setFitWidth(cell);
exit.setFitHeight(cell);
// hBoxTop.getChildren().add(exit);
}
public ImageView getExit() {
return exit;
}
public void setShangyiguan() {
shangyiguan = new ImageView("/image/shangyiguan.png");
shangyiguan.setFitWidth(cell);
shangyiguan.setFitHeight(cell);
hBoxBottom1.getChildren().add(shangyiguan);
}
public ImageView getShangyiguan() {
return shangyiguan;
}
public void setXiayiguan() {
xiayiguan = new ImageView("/image/xiayiguan.png");
xiayiguan.setFitHeight(cell);
xiayiguan.setFitWidth(cell);
hBoxBottom1.getChildren().add(xiayiguan);
}
public ImageView getXiayiguan() {
return xiayiguan;
}
public void setTishi() {
tishi = new ImageView("/image/tishi.png");
tishi.setFitWidth(cell);
tishi.setFitHeight(cell);
hBoxBottom1.getChildren().add(tishi);
}
public ImageView getTishi() {
return tishi;
}
public void setTuiyibu() {
tuiyibu = new ImageView("/image/return.png");
tuiyibu.setFitHeight(cell);
tuiyibu.setFitWidth(cell);
hBoxBottom1.getChildren().add(tuiyibu);
}
public ImageView getTuiyibu() {
return tuiyibu;
}
public void setChongzhi() {
chongzhi = new ImageView("/image/chongzhi.png");
chongzhi.setFitWidth(cell);
chongzhi.setFitHeight(cell);
hBoxBottom1.getChildren().add(chongzhi);
}
public ImageView getChongzhi() {
return chongzhi;
}
public void sethBoxBottom() {
setUp();
setDown();
setLeft();
setRight();
setShangyiguan();
setXiayiguan();
setTishi();
setTuiyibu();
setChongzhi();
hBoxBottom.setAlignment(Pos.CENTER);
hBoxBottom1.setAlignment(Pos.CENTER);
vBox.getChildren().addAll(hBoxBottom, hBoxBottom1);
}
public void setUp() {
ImageView imageView = new ImageView("/image/up.png");
imageView.setFitHeight(cell);
imageView.setFitWidth(cell);
up = new Button("", imageView);
hBoxBottom.getChildren().add(up);
}
public Button getUp() {
return up;
}
public void setDown() {
ImageView imageView = new ImageView("/image/down.png");
imageView.setFitHeight(cell);
imageView.setFitWidth(cell);
down = new Button("", imageView);
hBoxBottom.getChildren().add(down);
}
public Button getDown() {
return down;
}
public void setLeft() {
ImageView imageView = new ImageView("/image/left.png");
imageView.setFitHeight(cell);
imageView.setFitWidth(cell);
left = new Button("", imageView);
hBoxBottom.getChildren().add(left);
}
public Button getLeft() {
return left;
}
public void setRight() {
ImageView imageView = new ImageView("/image/right.png");
imageView.setFitHeight(cell);
imageView.setFitWidth(cell);
right = new Button("", imageView);
hBoxBottom.getChildren().add(right);
}
public Button getRight() {
return right;
}
public VBox getvBox() {
return vBox;
}
}
SettingScreen—设置界面—功能暂未实现
package Game;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleButton;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
public class SettingScreen {
private int cell = 50;
HBox hBoxTop = new HBox();
VBox vBox = new VBox(30);
ImageView exit;
StackPane stackPane = new StackPane();
BorderPane borderPane = new BorderPane();
Scene sceneSetting;
RadioButton init = new RadioButton("初始化");
RadioButton music ;
public void setExit() {
exit = new ImageView("/image/exit.png");
exit.setFitWidth(cell);
exit.setFitHeight(cell);
hBoxTop.getChildren().add(exit);
}
public ImageView getExit() {
return exit;
}
public void sethBoxTop() {
setExit();
hBoxTop.getChildren().add(new ImageView("/image/settingname.png"));
hBoxTop.setSpacing(cell * 0.6);
borderPane.setTop(hBoxTop);
}
public void setMusic(){
ImageView imageView = new ImageView("/image/music.png");
imageView.setFitHeight(cell);
imageView.setFitWidth(cell);
music = new RadioButton("音乐");
music.setFont(Font.font("Times", 30));
vBox.getChildren().add(music);
}
public RadioButton getMusic(){
return music;
}
public RadioButton getInit(){
return init;
}
public void setStackPane(){
init.setFont(Font.font("Times", 30));
setMusic();
vBox.getChildren().add(init);
vBox.setAlignment(Pos.CENTER);
vBox.setPadding(new Insets(30,30,30,30));
stackPane.getChildren().add(vBox);
borderPane.setCenter(stackPane);
}
public void setBorderPane(){
ImageView imageView = new ImageView("/image/background.png");
imageView.fitHeightProperty().bind(borderPane.heightProperty());
imageView.fitWidthProperty().bind(borderPane.widthProperty());
borderPane.getChildren().add(imageView);
sethBoxTop();
setStackPane();
}
public void setSceneSetting(){
setBorderPane();
sceneSetting = new Scene(borderPane);
}
public Scene getSceneSetting(){
return sceneSetting;
}
public SettingScreen(){
setSceneSetting();
}
}
游戏存储文件
str.txt
1
____#####__________
____#---#__________
____#$--#__________
__###--$##_________
__#--$-$-#_________
###-#-##-#___######
#---#-##-#####--..#
#-$--$----------..#
#####-###-#@##--..#
____#-----#########
____#######________
2
############__
#..--#-----###
#..--#-$--$--#
#..--#$####--#
#..----@-##--#
#..--#-#--$-##
######-##$-$-#
__#-$--$-$-$-#
__#----#-----#
__############
3
________########_
________#-----@#_
________#-$#$-##_
________#-$--$#__
________##$-$-#__
#########-$-#-###
#....--##-$--$--#
##...----$--$---#
#....--##########
########_________
4
___________########
___________#--....#
############--....#
#----#--$-$---....#
#-$$$#$--$-#--....#
#--$-----$-#--....#
#-$$-#$-$-$########
#--$-#-----#_______
##-#########_______
#----#----#________
#-----$---##_______
#--$$#$$--@#_______
#----#----##_______
###########________
5
________#####____
________#---#####
________#-#$##--#
________#-----$-#
#########-###---#
#....--##-$--$###
#....----$-$$-##_
#....--##$--$-@#_
#########--$--##_
________#-$-$--#_
________###-##-#_
__________#----#_
__________######_
6
######__###_
#..--#_##@##
#..--###---#
#..-----$$-#
#..--#-#-$-#
#..###-#-$-#
####-$-#$--#
___#--$#-$-#
___#-$--$--#
___#--##---#
___#########
7
_______#####_
_#######---##
##-#-@##-$$-#
#----$------#
#--$--###---#
###-#####$###
#-$--###-..#_
#-$-$-$-...#_
#----###...#_
#-$$-#_#...#_
#--###_#####_
####_________
8
__####__________
__#--###########
__#----$---$-$-#
__#-$#-$-#--$--#
__#--$-$--#----#
###-$#-#--####-#
#@#$-$-$--##---#
#----$-#$#---#-#
#---$----$-$-$-#
#####--#########
__#------#______
__#------#______
__#......#______
__#......#______
__#......#______
__########______
9
__________#######
__________#--...#
______#####--...#
______#------.-.#
______#--##--...#
______##-##--...#
_____###-########
_____#-$$$-##____
_#####--$-$-#####
##---#$-$---#---#
#@-$--$----$--$-#
######-$$-$-#####
_____#------#____
_____########____
10
_###__#############
##@####-------#---#
#-$$---$$--$-$-...#
#--$$$#----$--#...#
#-$---#-$$-$$-#...#
###---#--$----#...#
#-----#-$-$-$-#...#
#----######-###...#
##-#--#--$-$--#...#
#--##-#-$$-$-$##..#
#-..#-#--$------#.#
#-..#-#-$$$-$$$-#.#
#####-#-------#-#.#
____#-#########-#.#
____#-----------#.#
____###############
11
__________####_____
_____####_#--#_____
___###--###$-#_____
__##---@--$--#_____
_##--$-$$##-##_____
_#--#$##-----#_____
_#-#-$-$$-#-###____
_#---$-#--#-$-#####
_###----#--$$-#---#
####-##-$---------#
#.----###--########
#..-..#_####_______
#...#.#____________
#.....#____________
#######____________
12
################_
#--------------#_
#-#-######-----#_
#-#--$-$-$-$#--#_
#-#---$@$---##-##
#-#-#$-$-$###...#
#-#---$-$--##...#
#-###$$$-$-##...#
#-----#-##-##...#
#####---##-##...#
____#####-----###
________#-----#__
________#######__
13
___#########_______
__##---##--######__
###-----#--#----###
#--$-#$-#--#--...-#
#-#-$#@$##-#-#.#.-#
#--#-#$--#----.-.-#
#-$----$-#-#-#.#.-#
#---##--##$-$-.-.-#
#-$-#---#--#$#.#.-#
##-$--$---$--$...-#
_#$-######----##--#
_#--#____##########
_####______________
14
_______#######____
_#######-----#____
_#-----#-$@$-#____
_#$$-#---#########
_#-###......##---#
_#---$......##-#-#
_#-###......-----#
##---####-###-#$##
#--#$---#--$--#-#_
#--$-$$$--#-$##-#_
#---$-$-###$$-#-#_
#####-----$---#-#_
____###-###---#-#_
______#-----#---#_
______########--#_
_____________####_
15
#########______
#-------#______
#-------####___
##-####-#--#___
##-#@##----#___
#-$$$-$--$$#___
#--#-##-$--#___
#--#-##--$-####
####--$$$-$#--#
_#---##---....#
_#-#---#-#..-.#
_#---#-#-##...#
_#####-$--#...#
_____##---#####
______#####____
16
######_____####____
#----#######--#####
#---$#--#--$--#---#
#--$--$--$-#-$-$--#
##$-$---#-@#-$----#
#--$-###########-##
#-#---#.......#-$#_
#-##--#-......#--#_
#-#---$........$-#_
#-#-$-#....-..#--#_
#--$-$####$####-$#_
#-$---###-$---$--##
#-$-----$-$--$----#
##-######-$-#####-#
#---------#-------#
###################
17
___##########___
___#..--#---#___
___#..------#___
___#..--#--####_
__#######--#--##
__#------------#
__#--#--##--#--#
####-##--####-##
#--$--#####-#--#
#-#-$--$--#-$--#
#-@$--$---#---##
####-##-#######_
___#----#_______
___######_______
18
_____###########___
_____#--.--#---#___
_____#-#.----@-#___
_#####-##..#-####__
##--#-..###-----###
#-$-#...---$-#--$-#
#----..-##--##-##-#
####$##$#-$-#---#-#
__##-#----#$-$$-#-#
__#--$-#-#--#-$##-#
__#---------------#
__#--###########--#
__####_________####
19
__######___________
__#---@####________
#####-$---#________
#---##----####_____
#-$-#--##----#_____
#-$-#--#####-#_____
##-$--$----#-#_____
_#-$-$-###-#-#_____
_#-#--$--#-#-#_____
_#-#-#$#---#-#_____
##-###---#-#-######
#--$--####-#-#....#
#----$----$---..#.#
####$--$#-$---....#
#-------#--##-....#
###################
20
____#######________
____#--#--####_____
#####-$#$-#--##____
#..-#--#--#---#____
#..-#-$#$-#--$####_
#.--#-----#$--#--#_
#..---$#--#-$----#_
#..@#--#$-#$--#--#_
#..-#-$#-----$#--#_
#..-#--#$$#$--#--##
#..-#-$#--#--$#$--#
#..-#--#--#---#---#
##.-####--#####---#
_####__####___#####
21
list.txt
chuangguanjilu.txt
paihang.txt
游戏效果图
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
二维码