本文实例为大家分享了Java实现推箱子游戏的具体代码,供大家参考,具体内容如下
package Test1;
//用于调用Test2包
import Test2.*;
import java.awt.*;
import javax.swing.*;
public class APP extends Jframe{
public static void main(String[] args) {
// TODO Auto-generated method stub
APP a = new APP();
}
public APP()
{
new Members();
}
}
package Test2;
import java.awt.Event;
import java.awt.Font;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class Members extends Jframe implements KeyListener{
//定义一个JLabel数组,用来存放羊的位置
JLabel [][]sheep = new JLabel[12][16];
//0表示的是空地,1表示的是树木
int[][] datas = {
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,1},
{1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};
//狼的位置
int wx,wy;
//开始的时候羊进入箱子的总数量
int num = 0;
//笼子的总数量
int total = 3;
//构造函数
public Members()
{
//小图片
//障碍的设计
treeInit();
//做笼子
targetInit();
//推箱子人物的初始化
WolfInit();
//羊的初始化
sheepInit();
//背景图片,大的
//添加背景图片到窗体中
backGroundInit();
//设置整个窗体
setForm();
//注册监听
this.addKeyListener(this);
}
//设置整个窗体
private void setForm() {
// TODO Auto-generated method stub
this.setTitle("推箱子游戏");
this.setSize(825,645);
//禁止用户改变窗体大小
this.setResizable(false);
this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
//设置窗口居中显示
this.setLocationRelativeTo(null);
this.setVisible(true);
}
//背景图片初始化
private void backGroundInit() {
// TODO Auto-generated method stub
Icon i = new ImageIcon("floor.png");
//使用JLabel制作背景
JLabel lab_bg = new JLabel(i);
//设置要添加的组件的位置与大小
lab_bg.setBounds(0, 0, 800, 600);
//将这个东西添加到窗体里面
this.add(lab_bg);
}
//羊所在的位置初始化
private void sheepInit() {
// TODO Auto-generated method stub
//三只羊
Icon i = new ImageIcon("7.png");
JLabel jb1 = new JLabel(i);
jb1.setBounds(6 * 50, 4 * 50, 50, 50);
this.add(jb1);
//羊所在位置的值设置为4
datas[4][6] = 4;
sheep[4][6] = jb1;
JLabel jb2 = new JLabel(i);
jb2.setBounds(6 * 50, 6 * 50, 50, 50);
this.add(jb2);
datas[6][6] = 4;
sheep[6][6] = jb2;
JLabel jb3 = new JLabel(i);
jb3.setBounds(6 * 50, 10 * 50, 50, 50);
this.add(jb3);
datas[10][6] = 4;
sheep[10][6] = jb3;
}
JLabel jb = null;
private void WolfInit() {
// TODO Auto-generated method stub
//人物最初位置在哪里?
wx = 4 ;
wy = 5 ;
//使用一张图片来模拟人物
//1.创建一张图片,人物图片
Icon i = new ImageIcon("3.png");
//2.使用JLabel组件模拟人物
jb = new JLabel(i);
//3.设置人物在屏幕上的显示位置
//人物的显示位置放置在何处较为合理?----------------
jb.setBounds(wx*50, wy*50, 50, 50);
//4.把这个人物放到窗体里面
this.add(jb);
}
//笼子的位置初始化
private void targetInit() {
// TODO Auto-generated method stub
Icon i = new ImageIcon("target.png");
JLabel jb1 = new JLabel(i);
jb1.setBounds(14 * 50, 10 * 50,50,50);
this.add(jb1);
datas[10][14] = 8;
JLabel jb2 = new JLabel(i);
jb2.setBounds(13 * 50, 10 * 50, 50, 50);
this.add(jb2);
datas[10][13] = 8;
JLabel jb3 = new JLabel(i);
jb3.setBounds(14 * 50, 9 * 50, 50, 50);
this.add(jb3);
datas[9][14] = 8;
}
//树木的初始化
private void treeInit() {
// TODO Auto-generated method stub
Icon k = new ImageIcon("tree.png");
JLabel t = null;
for(int i = 0;i < datas.length;i ++){
for(int j = 0;j < datas[i].length;j ++){
if(datas[i][j] == 1){
t = new JLabel(k);
t.setBounds(j*50, i*50, 50, 50);
this.add(t);
}
}
}
}
//判断是否胜利
private void victory()
{
if(num == total){
//设计一个弹框,提示游戏完成
Icon i = new ImageIcon("6.png");
JOptionPane.showMessageDialog(null, "游戏结束","推箱子",2,i);
}
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode() == KeyEvent.VK_ENTER){
if(datas[wy-1][wx] == 1){
return;
}
if(datas[wy-1][wx] == 4 && datas[wy-2][wx] == 1){
return;
}
if(datas[wy-1][wx] == 4 && datas[wy-2][wx] == 4){
return;
}
if(datas[wy-1][wx] == 4 && datas[wy-1][wx] == 12){
return;
}
if(datas[wy-1][wx] == 12 && datas[wy-2][wx] == 1){
return;
}
if(datas[wy-1][wx] == 12 && datas[wy-2][wx] == 4){
return;
}
if(datas[wy-1][wx] == 12 && datas[wy-2][wx] == 12){
return;
}
if(datas[wy-1][wx] == 0){
wy -= 1;
//坐标得到的不是int类型。注意强制类型转化
int x = (int)jb.getLocation().getX();
int y = (int)jb.getLocation().getY();
jb.setLocation(x, y - 50);
Icon i = new ImageIcon("1.png");
jb.setIcon(i);
return;
}
if(datas[wy-1][wx] == 8){
wy -= 1;
//坐标得到的不是int类型。注意强制类型转化
int x = (int)jb.getLocation().getX();
int y = (int)jb.getLocation().getY();
jb.setLocation(x, y - 50);
Icon i = new ImageIcon("1.png");
jb.setIcon(i);
return;
}
if(datas[wy-1][wx] == 4 && datas[wy-2][wx] == 0){
datas[wy-1][wx] = 0;
datas[wy-2][wx] = 4;
}
if(datas[wy-1][wx] == 4 && datas[wy-2][wx] == 8){
datas[wy-1][wx] = 0;
datas[wy-2][wx] = 12;
num ++;
}
if(datas[wy-1][wx] == 12 && datas[wy-2][wx] == 0){
datas[wy-1][wx] = 8;
datas[wy-2][wx] = 4;
num --;
}
if(datas[wy-1][wx] == 12 && datas[wy-2][wx] == 8){
datas[wy-1][wx] = 8;
datas[wy-2][wx] = 12;
}
sheep[wy-1][wx].setLocation(wx*50, wy*50-100);
sheep[wy-2][wx] = sheep[wy-1][wx];
sheep[wy-1][wx] = null;
wy -= 1;
//坐标得到的不是int类型。注意强制类型转化
int x = (int)jb.getLocation().getX();
int y = (int)jb.getLocation().getY();
jb.setLocation(x, y - 50);
Icon i = new ImageIcon("1.png");
jb.setIcon(i);
victory();
return;
}
else if(e.getKeyCode() == KeyEvent.VK_D){
if(datas[wy][wx+1] == 1){
return;
}
if(datas[wy][wx+1] == 4 && datas[wy][wx+2] == 1){
return;
}
if(datas[wy][wx+1] == 4 && datas[wy][wx+2] == 4){
return;
}
if(datas[wy][wx+1] == 4 && datas[wy][wx+2] == 12){
return;
}
if(datas[wy][wx+1] == 12 && datas[wy][wx+2] == 1){
return;
}
if(datas[wy][wx+1] == 12 && datas[wy][wx+2] == 4){
return;
}
if(datas[wy][wx+1] == 12 && datas[wy][wx+2] == 12){
return;
}
if(datas[wy][wx+1] == 0){
wx += 1;
//坐标得到的不是int类型。注意强制类型转化
int x = (int)jb.getLocation().getX();
int y = (int)jb.getLocation().getY();
jb.setLocation(x + 50, y);
Icon i = new ImageIcon("2.png");
jb.setIcon(i);
return;
}
if(datas[wy][wx+1] == 8){
wx += 1;
//坐标得到的不是int类型。注意强制类型转化
int x = (int)jb.getLocation().getX();
int y = (int)jb.getLocation().getY();
jb.setLocation(x + 50, y);
Icon i = new ImageIcon("2.png");
jb.setIcon(i);
return;
}
if(datas[wy][wx+1] == 4 && datas[wy][wx+2] == 0){
datas[wy][wx+1] = 0;
datas[wy][wx+2] = 4;
}
if(datas[wy][wx+1] == 4 && datas[wy][wx+2] == 8){
datas[wy][wx+1] = 0;
datas[wy][wx+2] = 12;
num ++;
}
if(datas[wy][wx+1] == 12 && datas[wy][wx+2] == 0){
datas[wy][wx+1] = 8;
datas[wy][wx+2] = 4;
num --;
}
if(datas[wy][wx+1] == 12 && datas[wy][wx+2] == 8){
datas[wy][wx+1] = 8;
datas[wy][wx+2] = 12;
}
sheep[wy][wx+1].setLocation(wx*50+100, wy*50);
sheep[wy][wx+2] = sheep[wy][wx+1];
sheep[wy][wx+1] = null;
wx += 1;
//坐标得到的不是int类型。注意强制类型转化
int x = (int)jb.getLocation().getX();
int y = (int)jb.getLocation().getY();
jb.setLocation(x + 50, y);
Icon i = new ImageIcon("2.png");
jb.setIcon(i);
victory();
return;
}
else if(e.getKeyCode() == KeyEvent.VK_S){
if(datas[wy+1][wx] == 1){
return;
}
if(datas[wy+1][wx] == 4 && datas[wy+2][wx] == 1){
return;
}
if(datas[wy+1][wx] == 4 && datas[wy+2][wx] == 4){
return;
}
if(datas[wy+1][wx] == 4 && datas[wy+2][wx] == 12){
return;
}
if(datas[wy+1][wx] == 12 && datas[wy+2][wx] == 1){
return;
}
if(datas[wy+1][wx] == 12 && datas[wy+2][wx] == 4){
return;
}
if(datas[wy+1][wx] == 12 && datas[wy+2][wx] == 12){
return;
}
if(datas[wy+1][wx] == 0){
wy += 1;
//坐标得到的不是int类型。注意强制类型转化
int x = (int)jb.getLocation().getX();
int y = (int)jb.getLocation().getY();
jb.setLocation(x, y + 50);
Icon i = new ImageIcon("3.png");
jb.setIcon(i);
return;
}
if(datas[wy+1][wx] == 8){
wy += 1;
//坐标得到的不是int类型。注意强制类型转化
int x = (int)jb.getLocation().getX();
int y = (int)jb.getLocation().getY();
jb.setLocation(x, y + 50);
Icon i = new ImageIcon("3.png");
jb.setIcon(i);
return;
}
if(datas[wy+1][wx] == 4 && datas[wy+2][wx] == 0){
datas[wy+1][wx] = 0;
datas[wy+2][wx] = 4;
}
if(datas[wy+1][wx] == 4 && datas[wy+2][wx] == 8){
datas[wy+1][wx] = 0;
datas[wy+2][wx] = 12;
num ++;
}
if(datas[wy+1][wx] == 12 && datas[wy+2][wx] == 0){
datas[wy+1][wx] = 8;
datas[wy+2][wx] = 4;
num --;
}
if(datas[wy+1][wx] == 12 && datas[wy+2][wx] == 8){
datas[wy+1][wx] = 8;
datas[wy+2][wx] = 12;
}
sheep[wy+1][wx].setLocation(wx*50, wy*50+100);
sheep[wy+2][wx] = sheep[wy+1][wx];
sheep[wy+1][wx] = null;
wy += 1;
//坐标得到的不是int类型。注意强制类型转化
int x = (int)jb.getLocation().getX();
int y = (int)jb.getLocation().getY();
jb.setLocation(x, y + 50);
Icon i = new ImageIcon("3.png");
jb.setIcon(i);
victory();
return;
}
else if(e.getKeyCode() == KeyEvent.VK_A){
if(datas[wy][wx-1] == 1){
return;
}
if(datas[wy][wx-1] == 4 && datas[wy][wx-2] == 1){
return;
}
if(datas[wy][wx-1] == 4 && datas[wy][wx-2] == 4){
return;
}
if(datas[wy][wx-1] == 4 && datas[wy][wx-2] == 12){
return;
}
if(datas[wy][wx-1] == 12 && datas[wy][wx-2] == 1){
return;
}
if(datas[wy][wx-1] == 12 && datas[wy][wx-2] == 4){
return;
}
if(datas[wy][wx-1] == 12 && datas[wy][wx-2] == 12){
return;
}
if(datas[wy][wx-1] == 0){
wx -= 1;
//坐标得到的不是int类型。注意强制类型转化
int x = (int)jb.getLocation().getX();
int y = (int)jb.getLocation().getY();
jb.setLocation(x - 50, y);
Icon i = new ImageIcon("4.png");
jb.setIcon(i);
return;
}
if(datas[wy][wx-1] == 8){
wx -= 1;
//坐标得到的不是int类型。注意强制类型转化
int x = (int)jb.getLocation().getX();
int y = (int)jb.getLocation().getY();
jb.setLocation(x - 50, y);
Icon i = new ImageIcon("4.png");
jb.setIcon(i);
return;
}
if(datas[wy][wx-1] == 4 && datas[wy][wx-2] == 0){
datas[wy][wx-1] = 0;
datas[wy][wx-2] = 4;
}
if(datas[wy][wx-1] == 4 && datas[wy][wx-2] == 8){
datas[wy][wx-1] = 0;
datas[wy][wx-2] = 12;
num ++;
}
if(datas[wy][wx-1] == 12 && datas[wy][wx-2] == 0){
datas[wy][wx-1] = 8;
datas[wy][wx-2] = 4;
num --;
}
if(datas[wy][wx-1] == 12 && datas[wy][wx-2] == 8){
datas[wy][wx-1] = 8;
datas[wy][wx-2] = 12;
}
sheep[wy][wx-1].setLocation(wx*50-100, wy*50);
sheep[wy][wx-2] = sheep[wy][wx-1];
sheep[wy][wx-1] = null;
wx -= 1;
//坐标得到的不是int类型。注意强制类型转化
int x = (int)jb.getLocation().getX();
int y = (int)jb.getLocation().getY();
jb.setLocation(x - 50, y);
Icon i = new ImageIcon("4.png");
jb.setIcon(i);
victory();
return;
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
}
更多有趣的经典小游戏实现专题,分享给大家:
C++经典小游戏汇总
python经典小游戏汇总
python俄罗斯方块游戏集合
Javascript经典游戏 玩不停
javascript经典小游戏汇总
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



