第31页 共41页
图4-8 游戏的主界面
本游戏的图形设计都是通过java的javax.swing包开发的。 其主要实现代码SwingGUIFrame如下:
public class SwingGUIFrame {
public static void main(String[] argv) { try {
String os = System.getProperty(\ if ( os != null && os.startsWith(\
UIManager.setLookAndFeel(\
}
else {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } }
catch (Exception e) { e.printStackTrace(); }
JFrame gui = new JFrame();
gui.setContentPane( new SwingGUIPanel( new Risk() ) ); gui.setTitle( SwingGUIPanel.product );
gui.setIconImage(Toolkit.getDefaultToolkit().getImage( Risk.class.getResource(\if\
gui.setResizable(false); gui.pack();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = gui.getSize(); frameSize.height = ((frameSize.height > screenSize.height) ? screenSize.height : frameSize.height);
frameSize.width = ((frameSize.width > screenSize.width) ? screenSize.width : frameSize.width);
gui.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
gui.setVisible(true); } }
当你单击选择进行新游戏时,出现游戏设置面板,如图4-9所示; 当你选择载入游戏时,如图4-10 所示; 控制台面板如图4-12所示; 统计面板如图4-13所示; 游戏中的界面如图4-11所示; 卡片交易面板如图4-14所示; 关于面板如图4-15所示;
第32页 共41页
图4-9 游戏设置面板
图4-10 载入游戏面板
第33页 共41页
图4-11 游戏过程中
实现这些界面的是类SwingGUIPanel,其中实现游戏界面的方法主要是GamePaenl()主要实现代码:
public GamePanel() {
pp = new PicturePanel(myrisk); pp.setPreferredSize(mapSize); pp.setMinimumSize(mapSize); pp.setMaximumSize(mapSize);
pp.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0,0,0),1));
pp.addMouseListener(this);
pp.addMouseMotionListener(this);
Dimension gameOptionsSize = new Dimension(PicturePanel.PP_X,25);
gameOptions = new GameOptionsPanel();
gameOptions.setPreferredSize(gameOptionsSize); gameOptions.setMinimumSize(gameOptionsSize); gameOptions.setMaximumSize(gameOptionsSize);
Dimension d = new Dimension(PicturePanel.PP_X , 50);
第34页 共41页
inGameCards = new CardLayout(); inGameInput = new JPanel();
inGameInput.setLayout( inGameCards ); inGameInput.setPreferredSize(d); inGameInput.setMinimumSize(d); inGameInput.setMaximumSize(d);
JPanel nothing = new JPanel(); ??
JPanel results = new JPanel(); ??
JPanel placeArmies = new placeArmiesPanel(); ??
roll = new rollPanel();
JPanel move = new movePanel(); JPanel attack = new attackPanel(); defend = new defendPanel(); ??
// ################### IN GAME ####################### this.setLayout(new java.awt.GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.insets = new java.awt.Insets(3, 3, 3, 3); c.fill = GridBagConstraints.BOTH; c.gridx = 0; // col c.gridy = 0; // row
c.gridwidth = 1; // width c.gridheight = 1; // height this.add(gameOptions, c); c.gridx = 0; // col c.gridy = 1; // row
c.gridwidth = 1; // width c.gridheight = 1; // height this.add(pp, c);
c.gridx = 0; // col c.gridy = 2; // row
c.gridwidth = 1; // width c.gridheight = 1; // height this.add(inGameInput, c);
}
第35页 共41页
图4-12 控制台面板
图4-13 统计面板