📄 newgameframe.java
字号:
nothing.addMouseListener(this);
nothing.setOpaque(false);
nothing.setVisible(false);
layeredPane.add(nothing, 0);
layeredPane.add(colorChooser, 1);
layeredPane.add(ngp, 2);
setContentPane(layeredPane);
addWindowListener(
new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm();
}
}
);
//accelerators
start.setDefaultCapable( true);
human .setMnemonic( 'u');
ai .setMnemonic( 'e');
aismart .setMnemonic( 'h');
domination .setMnemonic( 'd');
capital .setMnemonic( 'c');
mission .setMnemonic( 'm');
addplayer .setMnemonic( 'a');
resetplayers.setMnemonic( 'r');
AutoPlaceAll.setMnemonic( 'p');
start .setMnemonic( 's');
/**
* set up the cycle list
*/
arCycleList = new Component[]{
chooseMap,
defaultMap,
chooseCards,
defaultCards,
domination,
capital,
mission,
AutoPlaceAll,
//remove player buttons
null,//1 - pos 8 UPDATE THE POSITION IF ADDING MORE BUTTONS TO THE CYCLE LIST
null,
null,
null,//4
null,
null,//6
resetplayers,
playerName,
playerColor,
human,
ai,
aismart,
addplayer,
cancel,
help,
start
};
nRemoveButtonPos = 8;
}//private void initGUI()
/**
* Sets the game map
* @param a The ImageIcon where the map is stored
*/
public void setMap(ImageIcon a) {
mapPic.setIcon(a);
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
/**
* Sets the cards file
* @param c The name of the cards file
*/
public void setCards(String c, boolean m) {
cardsFile.setText(c);
if ( m==false && mission.isSelected() ) { domination.setSelected(true); AutoPlaceAll.setEnabled(true); }
mission.setEnabled(m);
}
/**
* Adds a player to the game
* @param type Indicates whether the player is human or AI
* @param name Name of player
* @param color Color of the player
* @param ip Holds the ip address of the player
*/
public void addPlayer(final int type,final String name,final Color color,final String ip) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
final playerPanel player = new playerPanel(type, name, color, ip);
PlayersPanel.add(player);
PlayersPanel.validate();
PlayersPanel.repaint();
//let it cycle
arCycleList[nRemoveButtonPos + PlayersPanel.getComponents().length - 1] = player.getRemoveButton();
}
});
}
/**
* Removes the given player from the game
* @param name Name of the player to be deleted
*/
public void delPlayer(final String name) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
Component[] players = PlayersPanel.getComponents();
for (int c=0; c < players.length ; c++) {
if ( ((playerPanel)players[c]).getName().equals(name) ) {
PlayersPanel.remove(c);
PlayersPanel.validate();
PlayersPanel.repaint();
int nCyclePos = nRemoveButtonPos + c;
//remove it from the cycle list
arCycleList[nCyclePos] = null;
//and now move the playerpanels above one down
for (int d = nCyclePos + 1; d < nRemoveButtonPos + 6; d++) {
arCycleList[d - 1] = arCycleList[d];
}
//last has to be null
arCycleList[nRemoveButtonPos + 5] = null;
break;
}
}
}
});
}
/** Exit the Application */
/**
* Closes the GUI
* @param evt Close button was pressed
*/
private void exitForm() {
//if (localgame) {
myrisk.parser("closegame");
//}
//else {
// myrisk.parser("leave");
//}
}
class playerPanel extends JPanel {
private int type;
private String name;
private Color color;
private String ip;
private JButton remove;
/**
* Creates the panel where the player details are shown
* @param t Holds the type of player, human or AI
* @param n Name
* @param c Color
* @param i IP address
*/
public playerPanel(int t, String n, Color c, String i) {
type=t;
name=n;
color=c;
ip=i;
Dimension d = new Dimension(309, 30);
this.setPreferredSize(d);
this.setMinimumSize(d);
this.setMaximumSize(d);
// this.setBorder(javax.swing.BorderFactory.createLineBorder( color , 1));
this.setLayout(null);
int w=80;
int h=25;
remove = new JButton(resb.getString("newgame.removeplayer"));
BufferedImage remove1 = new BufferedImage(w, h, java.awt.image.BufferedImage.TYPE_INT_RGB );
BufferedImage remove2 = new BufferedImage(w, h, java.awt.image.BufferedImage.TYPE_INT_RGB );
BufferedImage remove3 = new BufferedImage(w, h, java.awt.image.BufferedImage.TYPE_INT_RGB );
Graphics g1 = remove1.getGraphics();
g1.drawImage( newgame.getSubimage(700, 525, w, h) ,0 ,0, this);
g1.setColor( new Color(c.getRed(),c.getGreen(), c.getBlue(), 50) );
g1.fillRect(0,0,w,h);
g1.dispose();
Graphics g2 = remove2.getGraphics();
g2.drawImage( newgame.getSubimage(700, 550, w, h) ,0 ,0, this);
g2.setColor( new Color(c.getRed(),c.getGreen(), c.getBlue(), 50) );
g2.fillRect(0,0,w,h);
g2.dispose();
Graphics g3 = remove3.getGraphics();
g3.drawImage( newgame.getSubimage(700, 575, w, h) ,0 ,0, this);
g3.setColor( new Color(c.getRed(),c.getGreen(), c.getBlue(), 50) );
g3.fillRect(0,0,w,h);
g3.dispose();
sortOutButton( remove , remove1 , remove2 , remove3 );
remove.setBounds(226, 3, 80 , 25 );
remove.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent a) {
myrisk.parser("delplayer " + name);
}
}
);
add(remove);
}
/**
* Paints a graphic
* @param g Graphics Component
*/
public void paintComponent(Graphics g) {
g.setColor( new Color(color.getRed(), color.getGreen(), color.getBlue(), 125) );
g.fillRect(0, 0, 309, 30);
g.setColor( RiskUtil.getTextColorFor(color) );
g.drawString( name, 10, 20);
if (type == risk.engine.core.Player.PLAYER_HUMAN) {
g.drawString( resb.getString("newgame.player.type.human"), 120, 20);
}
else if (type == risk.engine.core.Player.PLAYER_AI_EASY) {
g.drawString( resb.getString("newgame.player.type.easyai"), 120, 20);
}
else if (type == risk.engine.core.Player.PLAYER_AI_HARD) {
g.drawString( resb.getString("newgame.player.type.hardai"), 120, 20);
}
else {
g.drawString( resb.getString("newgame.player.type.crapai"), 120, 20);
}
//if (localgame) { g.drawString( resb.getString("newgame.type.local"), 140, 20); }
//else { g.drawString( ip, 140, 20); }
}
/**
* Returns name
* @return String
*/
public String getName() {
return name;
}
/**
* Returns the type of player
* @return String
*/
public int getType() {
return type;
}
/**
* returns the "remove player" button
*/
public JButton getRemoveButton() {
return this.remove;
}
}
class NewGamePanel extends JPanel {
/**
* Paints a graphic
* @param g Graphics Component
*/
public void paintComponent(Graphics g) {
((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// destination source
g.drawImage(newgame,0,0,700,600, 0,0,700,600,this);
if (localgame) {
g.drawImage(newgame,432,262,557,305, 700,482,825,525,this);
}
g.setColor( thecolor );
g.fillRect(400, 370, 100, 25);
g.setColor( Color.black );
g.drawString( resb.getString("newgame.label.map"), 55, 40);
g.drawString( resb.getString("newgame.label.players"), 350, 40);
g.drawString( resb.getString("newgame.label.cards"), 55, 250);
g.drawString( resb.getString("newgame.label.gametype"), 70, 365);
g.drawString( resb.getString("newgame.label.cardsoptions"), 170, 365);
g.drawString( resb.getString("newgame.label.name"), 400, 325);
g.drawString( resb.getString("newgame.label.type"), 520, 325);
g.setColor( RiskUtil.getTextColorFor( thecolor ) );
g.drawString( resb.getString("newgame.label.color"), 410, 387);
}
}
class colorChooserPanel extends JPanel
{
/**
* Paints a graphic
* @param g Graphics Component
*/
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.8f);
g2.setComposite(ac);
// destination source
g.drawImage(newgame,370,395,500,500, 700,0,830,105,this);
for (int c=0; c< Colors.length ; c++) {
g.setColor( Colors[c].getColor() );
g.fillRect(Colors[c].getX(), Colors[c].getY(), Colors[c].getWidth(), Colors[c].getHeight());
}
}
}//class colorChooserPanel extends JPanel
/**
* Actionlistener applies the correct command to the button pressed
* @param e The ActionEvent Object
*/
public void actionPerformed(ActionEvent e) {
if (e.getSource()==chooseMap) {
String name = RiskUtil.getNewFile( this, RiskFileFilter.RISK_MAP_FILES);
if (name != null) {
myrisk.parser("choosemap " + name );
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
}
}
else if (e.getSource()==defaultMap) {
myrisk.parser("choosemap default");
}
else if (e.getSource()==chooseCards) {
String name = RiskUtil.getNewFile( this, RiskFileFilter.RISK_CARDS_FILES);
if (name != null) {
myrisk.parser("choosecards " + name );
}
}
else if (e.getSource()==defaultCards) {
myrisk.parser("choosecards default");
}
else if (e.getSource()==resetplayers) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -