当前位置:编程学习 > JAVA >>

(续)java做的 推箱子游戏 带源码 和下载地址

因为代码长了,一次发不完,只有分多分发贴上代码

接着MainFrame.java (记得必须要有box.dat  box.gif,   ok.gif,   pot.gif,   ren.gif,   qiang.gif)

class DialogTime extends JDialog implements ActionListener,WindowListener {

JComboBox tlvl = new JComboBox();
JButton bok, bexit;
JLabel mes = new JLabel("我是: " );

Container m = null;
MainFrame tf;

public DialogTime(Frame f){
super(f,"推箱子", true);
tf = (MainFrame) f;
bok = new JButton("确定");
bexit = new JButton("退出");
tlvl.addItem("菜鸟级");
tlvl.addItem("业余级");
tlvl.addItem("竞赛级");

m = this.getContentPane();
m.setLayout(null);

this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.setResizable(false);


mes.setBounds(70, 50, 50, 24);
tlvl.setBounds(120,50, 120, 24);

bok.setBounds(90, 130, 65, 24);
bexit.setBounds(160, 130, 65, 24);

bok.addActionListener(this);
bexit.addActionListener(this);
m.add(mes); m.add(tlvl);  m.add(bok); m.add(bexit);


int w = 300 , h = 220;
int x = (Toolkit.getDefaultToolkit().getScreenSize().width - w) / 2; 
int y = (Toolkit.getDefaultToolkit().getScreenSize().height - h) / 2; 
this.setBounds(x, y , w, h);
this.addWindowListener(this);
this.setVisible(true);
}

public void actionPerformed(ActionEvent e) {
if ( e.getSource().equals(bexit)){
System.exit(0);
}
else{
Object obj = tlvl.getSelectedItem();
if ( obj.equals("菜鸟级")){
tf.btime = 50;
}
else if ( obj.equals("业余级")){
tf.btime = 30;
}
else if ( obj.equals("竞赛级")){
tf.btime = 10;
}
}
this.dispose();
}

public void windowActivated(WindowEvent e) {
// TODO 自动生成方法存根

}

public void windowClosed(WindowEvent e) {
// TODO 自动生成方法存根

}

public void windowClosing(WindowEvent e) {
System.exit(0);

}

public void windowDeactivated(WindowEvent e) {
// TODO 自动生成方法存根

}

public void windowDeiconified(WindowEvent e) {
// TODO 自动生成方法存根

}

public void windowIconified(WindowEvent e) {
// TODO 自动生成方法存根

}

public void windowOpened(WindowEvent e) {
// TODO 自动生成方法存根

}

}


##################################   BaseBox.java    ########################
##################################   BaseBox.java    ########################
##################################   BaseBox.java    ########################

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.JPanel;


public class BaseBox extends JPanel {

int w = 30, h = 30;

int type = 0; //物体的类型,默认为目的地,1为箱子,2为人位,3为空间,4为墙

Image img = null;
String filename = "";

public BaseBox(int type, int x, int y){
this.type = type;
this.setBounds(x,y,w,h);
if ( type == 0 )
filename = "pot.gif";
else if ( type == 1 )
filename = "box.gif";
else if ( type == 2 )
filename = "ren.gif";
else if ( type == 3 )
filename = "box.gif";
else 
filename = "qiang.gif";
img = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource(filename));
}


public void setImg(String s){
img = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource(s));
filename = s;
}

public String getFileName(){
return filename;
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(img,0,0,this);
}


}


##################################   Build.java    ########################
##################################   Build.java    ########################
##################################   Build.java    ########################


import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class Build extends JFrame implements ActionListener{

int row , col;

JButton b1,b2,b3,b4,reset,exit, bok;

Container main;

JPanel bp = new JPanel();

JPanel cp = new JPanel();

ArrayList sid, bid, pid;
String rid ;
ArrayList bs;

public Build(){
main = this.getContentPane();
this.setTitle("地图生成器");

b1 = new JButton("目的");
b2 = new JButton("箱子");
b3 = new JButton("人位");
b4 = new JButton("空间");

reset = new JButton("重置");
bok = new JButton("保存");
exit = new JButton("退出");

b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
reset.addActionListener(this);
exit.addActionListener(this);
bok.addActionListener(this);

cp = new JPanel();


bp.add(b1); bp.add(b2); bp.add(b3); bp.add(b4); bp.add(bok); 
bp.add(reset); bp.add(exit); 

main.add(bp, BorderLayout.SOUTH);
main.add(cp,BorderLayout.CENTER);
this.setDefaultCloseOperation(3);
setBounds(200,150,500,450);
//this.setExtendedState(JFrame.MAXIMIZED_BOTH);
setVisible(true);
reset();
this.validate();
}

--------------------编程问答-------------------- Color color = null;

public void reset(){

String rrr = JOptionPane.showInputDialog(this,"请输入行数");
String ccc = JOptionPane.showInputDialog(this,"请输入列数");
if ( rrr == null || ccc == null ){
return;
}
try{
row = Integer.parseInt(rrr);
col = Integer.parseInt(ccc);
}catch(Exception e){
JOptionPane.showMessageDialog(this,"行列只能指定为数字!");
return;
}
cp.setLayout(new GridLayout(row,col));
cp.removeAll();
color = null;
b1.setEnabled(true);b2.setEnabled(false);b3.setEnabled(false);b4.setEnabled(false);
bok.setEnabled(false);

bs = new ArrayList();
for ( int i = 0; i < row*col; i ++ ){
Button tb = new Button("" + (i+1));
tb.addActionListener(this);
cp.add(tb);
bs.add(tb);
}
pid = new ArrayList();
bid = new ArrayList();

sid = new ArrayList();
cp.validate();

for ( int i = 0; i <= col; i ++ ){
Button bb = (Button) bs.get(i);
bb.setEnabled(false);
bb.setBackground(Color.black);
}
for ( int i = col*row-1; i > col*row - col; i --){
Button bb = (Button) bs.get(i);
bb.setEnabled(false);
bb.setBackground(Color.black);
}
for ( int i = col*2-1; i < col * row ; i ++ ){
if ( i % col == 0 || (i+col+1) % col == 0 ){
Button bb = (Button) bs.get(i);
bb.setEnabled(false);
bb.setBackground(Color.black);
}
}
}

public static void main(String[] args) {
Build b = new Build();
}

private void setStat(ArrayList a){
for ( int i = 0; i < a.size(); i ++ ){
int index = (Integer.parseInt(a.get(i).toString())) -1;
Button b = (Button) bs.get(index);
b.setEnabled(false);
}
}
private void setStat(String id){
int index = (Integer.parseInt(id)) -1;
Button b = (Button) bs.get(index);
b.setEnabled(false);
}
public void actionPerformed(ActionEvent e) {
if ( e.getSource().equals(exit)){
System.exit(0);
}else if ( e.getSource().equals(reset)){
reset();

}

else if ( e.getSource().equals(b1)){
color = Color.blue;
b1.setEnabled(false);
b2.setEnabled(true);
}
else if ( e.getSource().equals(b2)){
color = Color.green;
b2.setEnabled(false);
b3.setEnabled(true);
setStat(pid);
}
else if ( e.getSource().equals(b3)){
color = Color.yellow;
b3.setEnabled(false);
b4.setEnabled(true);
setStat(bid);
}
else if ( e.getSource().equals(b4)){
color = Color.cyan;
bok.setEnabled(true);
b4.setEnabled(false);
setStat(rid);
}
else if ( e.getSource().equals(bok)){
if ( JOptionPane.showConfirmDialog(this,"真的要保存?") == 0 ){
bok.setEnabled(false);
try {
FileWriter fos = new FileWriter("box.dat",true);
BufferedWriter bw = new BufferedWriter(fos);
bw.write(row + "," + col);
bw.newLine();
for ( int i = 0; i < pid.size(); i ++ ){
if ( i != pid.size()-1 ){
bw.write(pid.get(i).toString() + ",");
}
else {
bw.write(pid.get(i).toString());
}
}
bw.newLine();
for ( int i = 0; i < bid.size(); i ++ ){
if ( i != bid.size()-1 ){
bw.write(bid.get(i).toString() + ",");
}
else {
bw.write(bid.get(i).toString());
}
}
bw.newLine();
bw.write(rid);
bw.newLine();
for ( int i = 0; i < sid.size(); i ++ ){
if ( i != sid.size()-1 ){
bw.write(sid.get(i).toString() + ",");
}
else {
bw.write(sid.get(i).toString());
}
}
bw.newLine();
bw.close();
fos.close();
JOptionPane.showMessageDialog(this,"保存成功");
} catch (Exception e1) {
e1.printStackTrace();
}
}
}else {
Button b = (Button)e.getSource();
if ( color == null ){
return;
}
if ( color.equals(Color.blue)){
if ( pid.contains(b.getActionCommand())){
pid.remove(b.getActionCommand());
b.setBackground(new Color(212,208,200));
return;
}else
pid.add(b.getActionCommand());
}else if ( color.equals(Color.green)){
if ( bid.contains(b.getActionCommand())){
bid.remove(b.getActionCommand());
b.setBackground(new Color(212,208,200));
return;
}else
bid.add(b.getActionCommand());

} else if ( color.equals(Color.yellow)){
if ( rid != null && rid.equals(b.getActionCommand())){
rid = "";
b.setBackground(new Color(212,208,200));
return;
}else{
rid = b.getActionCommand();
if ( rid != null && !rid.equals("")){
Button temp = (Button) bs.get(Integer.parseInt(rid)-1);
temp.setBackground(new Color(212,208,200) );
}
}
} else if ( color.equals(Color.cyan)){
if ( sid.contains(b.getActionCommand())){
sid.remove(b.getActionCommand());
b.setBackground(new Color(212,208,200));
return;
}else
sid.add(b.getActionCommand());
}
b.setBackground(color);
}

}

}
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,