📄 monopolygame.java
字号:
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;//玩家代号
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 厦门大学软件学院赖桂龙",
"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]);
}
//显示玩家个数
sysinfo=new JLabel();
sysinfo.setText("当前玩家个数为: "+playnum);
sysinfo.setBounds(300,430,150,20);//设置字体显示属性
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("当前玩家为: "+player[(j)%playnum].name+" "
+"现有现金:"+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;//租金变回原来租金
}
else if(square[player[j].position].isbuild==2)
{
square[player[j].position].rent/=3;//租金变回原来租金
}
square[player[j].position].isbuild=0;
buildimage=new ImageIcon("src/image/house.gif");//没有图片就什么都不加
square[player[j].position].label.setIcon(buildimage);
player[j].cash+=square[player[j].position].price*1.5;
playinfo.setText("当前玩家为: "+player[(j)%playnum].name+" "
+"现有现金:"+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]+"在监狱中!","INFORMATION!",
JOptionPane.INFORMATION_MESSAGE);
player[j].delay--;
j=(j+1)%playnum;
}
}
}
);
//开始加载方格
int x1=-1,x2=8,y1=6,y2=0;//用于控制Square的放置
for(int i=0;i<27;i++)
{
if(i<=7)
{
x1+=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -