栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java实现推箱子游戏

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java实现推箱子游戏

本文实例为大家分享了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经典小游戏汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/134042.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号