Java poker implementation
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

ConfigScreen.java 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /*
  2. * Copyright (c) Chris 'MD87' Smith, 2007-2008. All rights reserved.
  3. *
  4. * This code may not be redistributed without prior permission from the
  5. * aforementioned copyright holder(s).
  6. */
  7. package com.md87.cardgame.config;
  8. import com.md87.cardgame.ui.GameWindow;
  9. import com.md87.cardgame.Player;
  10. import com.md87.cardgame.config.games.GameInfo;
  11. import com.md87.cardgame.interfaces.Game;
  12. import java.awt.BorderLayout;
  13. import java.awt.Image;
  14. import java.awt.event.ActionEvent;
  15. import java.awt.event.ActionListener;
  16. import java.io.IOException;
  17. import javax.imageio.ImageIO;
  18. import javax.swing.BorderFactory;
  19. import javax.swing.ImageIcon;
  20. import javax.swing.JButton;
  21. import javax.swing.JDialog;
  22. import javax.swing.JPanel;
  23. import javax.swing.JTabbedPane;
  24. import javax.swing.WindowConstants;
  25. /**
  26. *
  27. * @author Chris
  28. */
  29. public class ConfigScreen extends JDialog {
  30. private static final long serialVersionUID = 1;
  31. private final JTabbedPane tabbedPane = new JTabbedPane();
  32. private final PlayerPanel playerPanel = new PlayerPanel();
  33. private final GamePanel gamePanel = new GamePanel(this);
  34. private final BettingPanel bettingPanel = new BettingPanel();
  35. private final AppearancePanel stylePanel = new AppearancePanel();
  36. private final JPanel savePanel = new JPanel();
  37. private GameInfo game;
  38. public ConfigScreen() {
  39. super();
  40. Image gameIcon = null;
  41. Image playerIcon = null;
  42. Image moneyIcon = null;
  43. Image saveIcon = null;
  44. Image styleIcon = null;
  45. try {
  46. gameIcon = ImageIO.read(getClass().getResource("/com/md87/cardgame/res/icons/icon.png"));
  47. playerIcon = ImageIO.read(getClass().getResource("/com/md87/cardgame/res/icons/user.png"));
  48. moneyIcon = ImageIO.read(getClass().getResource("/com/md87/cardgame/res/icons/money.png"));
  49. saveIcon = ImageIO.read(getClass().getResource("/com/md87/cardgame/res/icons/save.png"));
  50. styleIcon = ImageIO.read(getClass().getResource("/com/md87/cardgame/res/icons/style.png"));
  51. } catch (IOException ex) {
  52. System.err.println("Unable to load icons");
  53. }
  54. setIconImage(gameIcon);
  55. setTitle("JaPoker: Game configuration");
  56. tabbedPane.addTab("Game", new ImageIcon(gameIcon), gamePanel);
  57. tabbedPane.addTab("Players", new ImageIcon(playerIcon), playerPanel);
  58. tabbedPane.addTab("Betting", new ImageIcon(moneyIcon), bettingPanel);
  59. tabbedPane.addTab("Appearance", new ImageIcon(styleIcon), stylePanel);
  60. tabbedPane.addTab("Save/Load", new ImageIcon(saveIcon), savePanel);
  61. tabbedPane.setEnabledAt(4, false);
  62. tabbedPane.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
  63. setLayout(new BorderLayout());
  64. add(tabbedPane, BorderLayout.NORTH);
  65. final JButton netButton = new JButton("Join Network Game");
  66. netButton.setEnabled(false);
  67. JPanel buttonPanel = new JPanel();
  68. buttonPanel.setBorder(BorderFactory.createEmptyBorder(0, 20, 20, 20));
  69. buttonPanel.add(netButton);
  70. add(buttonPanel, BorderLayout.WEST);
  71. final JButton startButton = new JButton("Start Game");
  72. buttonPanel = new JPanel();
  73. buttonPanel.setBorder(BorderFactory.createEmptyBorder(0, 20, 20, 20));
  74. buttonPanel.add(startButton);
  75. add(buttonPanel, BorderLayout.EAST);
  76. startButton.addActionListener(new ActionListener() {
  77. @Override
  78. public void actionPerformed(final ActionEvent e) {
  79. startGame();
  80. }
  81. });
  82. pack();
  83. setVisible(true);
  84. setResizable(false);
  85. setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
  86. }
  87. public void setGame(final GameInfo newGame) {
  88. game = newGame;
  89. playerPanel.setMaxPlayers(game.getNumPlayers());
  90. }
  91. public GameInfo getGame() {
  92. return game;
  93. }
  94. private void startGame() {
  95. final Game myGame = game.getGame(playerPanel.getNumPlayers(),
  96. bettingPanel.getBigBlind(), bettingPanel.getAnte(),
  97. bettingPanel.getRaises());
  98. final GameWindow window = new GameWindow(myGame,
  99. stylePanel.getFrontName(), stylePanel.getBackName(),
  100. stylePanel.getColour());
  101. for (Player player : playerPanel.getPlayers(myGame, window)) {
  102. myGame.addPlayer(player);
  103. }
  104. myGame.startTournament();
  105. dispose();
  106. }
  107. }