?? monopolygame.java
字號(hào):
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;
import javax.swing.*;
/**
*
* @author __Lai Guilong__
*/
public class MonopolyGame extends javax.swing.JFrame
{
//Image image;
//Toolkit tool;
int playnum;
int j=0;//玩家代號(hào)
private javax.swing.JMenuBar MenuBar;
private javax.swing.JMenu gameMenu;
private javax.swing.JMenu helpMenu;
private javax.swing.JLabel labelGround;
private javax.swing.JMenuItem newMenuItem;
private javax.swing.JMenuItem stopMenuItem;
private javax.swing.JMenuItem aboutMenuItem;
private JButton roll;
private JLabel dice1display;
private JLabel dice2display;
private Square square[]=new Square[26];
private Player player[]=new Player[8];
private Setting setting;
private String playername[]={"玩家一","玩家二","玩家三","玩家四","玩家五","玩家六","玩家七","玩家八"};
private int playerhead[]={1,2,3,4,5,6,7,8};
private int dicenum1;
private int dicenum2;
private int dicetotal;
private JLabel sysinfo;
private JLabel playinfo;
private JLabel person[]=new JLabel[8];
private Icon personimage[]=new ImageIcon[8];
Icon dice1image;
Icon dice2image;
Icon buildimage;
private JButton build;
private JButton fitment;
private Color color[]={Color.red,Color.yellow,Color.white,Color.green,
Color.blue,Color.gray,Color.orange,Color.pink};
//存放square的名稱
private String squareName[]={"Go","North Road 1","North Road 2","North Road 3","North Road 4",
"North Road 5","North Road 6","Lucky","East Road 1","East Road 2","Bank"
,"East Road 3","East Road 4","Dock","South Road 1","South Road 2","South Road 3",
"South Road 4","South Road 5","South Road 6","Restaurant","West Road 1","West Road 2",
"Prison","West Road 3","West Road 4"};
/** Creates new form MonopolyGame */
public MonopolyGame()
{
//initComponents();
//tool=Toolkit.getDefaultToolkit();
//image=tool.createImage("src/image/dice.gif");
//setIconImage(image);
getContentPane().setLayout(null);
MenuBar = new javax.swing.JMenuBar();
gameMenu = new javax.swing.JMenu();
helpMenu = new javax.swing.JMenu();
newMenuItem = new javax.swing.JMenuItem();
stopMenuItem = new javax.swing.JMenuItem();
aboutMenuItem = new javax.swing.JMenuItem();
MenuBar.setAutoscrolls(true);
gameMenu.setText("Game");
helpMenu.setText("Help");
newMenuItem.setText("New Game");
newMenuItem.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//remove();
setting=new Setting();
setting.setBounds(100, 100, 480, 450);
setting.toFront();
setting.setVisible(true);
/*setting.addFocusListener(new FocusAdapter()
{
public void focusLost (java.awt.event.FocusEvent evt)
{
setting.toFront();
}
});*/
setting.addWindowFocusListener(new WindowFocusListener()
{
public void windowGainedFocus(WindowEvent e)
{
}
public void windowLostFocus(WindowEvent e)
{
initComponents();
}
});
}
}
);
gameMenu.add(newMenuItem);
stopMenuItem.setText("Stop Game");
stopMenuItem.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
);
gameMenu.add(stopMenuItem);
aboutMenuItem.setText("About");
aboutMenuItem.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null, "XMU software 2005 Lai Guilong 廈門(mén)大學(xué)軟件學(xué)院賴桂龍",
"about",JOptionPane.INFORMATION_MESSAGE);
}
}
);
helpMenu.add(aboutMenuItem);
MenuBar.add(gameMenu);
MenuBar.add(helpMenu);
setJMenuBar(MenuBar);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("MonopolyGame");
}
private void initComponents()
{
playnum=Integer.parseInt(setting.txtplayernum1.getText());
for(int i=0;i<playnum;i++)
{
if(setting.txtplayername[i].getText().equals(""))
{
}
else
{
playername[i]= setting.txtplayername[i].getText();
}
playerhead[i]=(Integer.parseInt(setting.headchoose[i].getSelectedItem().toString()));
}
for(int i=0;i<playnum;i++)
{
player[i]=new Player(playername[i],playerhead[i]);
}
//顯示玩家個(gè)數(shù)
sysinfo=new JLabel();
sysinfo.setText("當(dāng)前玩家個(gè)數(shù)為: "+playnum);
sysinfo.setBounds(300,430,150,20);//設(shè)置字體顯示屬性
Font sysfont=new Font(null,Font.BOLD,15);
sysinfo.setFont(sysfont);
sysinfo.setForeground(Color.RED);
getContentPane().add(sysinfo);
//中央板
labelGround = new javax.swing.JLabel();
Icon groundImage=new ImageIcon("src/image/ground.gif");
labelGround.setIcon(groundImage);
getContentPane().add(labelGround);
labelGround.setBounds(81, 60, 486, 300);
//顯示色子1
dice1display=new JLabel();
//dice1display.removeAll();
dice1display.setBounds(100,430,90,80);
dice1image=new ImageIcon("src/image/dice.gif");
dice1display.setIcon(dice1image);
getContentPane().add(dice1display);
//顯示色子2
dice2display=new JLabel();
dice2display.setBounds(190,430,90,80);
dice2image=new ImageIcon("src/image/dice.gif");
dice2display.setIcon(dice2image);
getContentPane().add(dice2display);
//加載玩家圖象
for(int i=0;i<playnum;i++)
{
person[i]=new JLabel();
personimage[i]=new ImageIcon("src/image/head"+playerhead[i]+".gif");
person[i].setIcon(personimage[i]);
person[i].setBounds(0,0,81,60);
getContentPane().add(person[i]);
}
//加載建造按鈕
build=new JButton("build");
build.setBounds(300, 480, 80, 20);
getContentPane().add(build);
build.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//方格必須是私有的并且屬于玩家
if(square[player[j].position] instanceof PrivateSquare
&& square[player[j].position].ownername!=null)
{
if(square[player[j].position].ownername.equals(playername[j]))
{
if(square[player[j].position].isbuild==0)
{
square[player[j].position].isbuild+=1;
square[player[j].position].rent*=2;//租金為兩倍
buildimage=new ImageIcon("src/image/house1.gif");
player[j].cash-=square[player[j].position].price*2;
}
else if(square[player[j].position].isbuild==1)
{
square[player[j].position].isbuild+=1;
square[player[j].position].rent*=1.5;//租金為三倍
buildimage=new ImageIcon("src/image/house2.gif");
player[j].cash-=square[player[j].position].price*1;
}
square[player[j].position].label.setIcon(buildimage);
playinfo.setText("當(dāng)前玩家為: "+player[(j)%playnum].name+" "
+"現(xiàn)有現(xiàn)金:"+player[(j)%playnum].cash+" 存款:"+player[(j)%playnum].saving);
//((PrivateSquare) square[player[j].position]).build();
}
}
else
{
JOptionPane.showMessageDialog(null, "這是公共方塊或者方塊不屬于你,不可以建造房子!","Error",
JOptionPane.ERROR_MESSAGE);
}
showhead();
}
}
);
//加載拆除按鈕
fitment=new JButton("fitment");
fitment.setBounds(400, 480, 80, 20);
getContentPane().add(fitment);
fitment.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(square[player[j].position].isbuild==1)
{
square[player[j].position].rent/=2;//租金變回原來(lái)租金
}
else if(square[player[j].position].isbuild==2)
{
square[player[j].position].rent/=3;//租金變回原來(lái)租金
}
square[player[j].position].isbuild=0;
buildimage=new ImageIcon("src/image/house.gif");//沒(méi)有圖片就什么都不加
square[player[j].position].label.setIcon(buildimage);
player[j].cash+=square[player[j].position].price*1.5;
playinfo.setText("當(dāng)前玩家為: "+player[(j)%playnum].name+" "
+"現(xiàn)有現(xiàn)金:"+player[(j)%playnum].cash+" 存款:"+player[(j)%playnum].saving);
showhead();
}
}
);
//擲色子按鈕
roll=new JButton("Roll Dice");
roll.setBounds(10,460,90,20);
getContentPane().add(roll);
roll.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(player[j].delay==0)
{
dice();
dice1image=new ImageIcon("src/image/dice"+dicenum1+".gif");
dice1display.setIcon(dice1image);
dice2image=new ImageIcon("src/image/dice"+dicenum2+".gif");
dice2display.setIcon(dice2image);
player[j].preposition=player[j].position;
player[j].position=(player[j].position+dicetotal)%26;
moveperson move=new moveperson(dicetotal,j);
move.start();
//deal();
}
else
{
JOptionPane.showMessageDialog(null, "玩家"+playername[j]+"在監(jiān)獄中!","INFORMATION!",
JOptionPane.INFORMATION_MESSAGE);
player[j].delay--;
j=(j+1)%playnum;
}
}
}
);
//開(kāi)始加載方格
int x1=-1,x2=8,y1=6,y2=0;//用于控制Square的放置
for(int i=0;i<27;i++)
{
if(i<=7)
{
x1+=1;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -