Guest User

Untitled

a guest
Jul 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.21 KB | None | 0 0
  1. package csc216project3;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Color;
  5. import java.awt.Container;
  6. import java.awt.Dimension;
  7. import java.awt.Graphics;
  8. import java.awt.GridBagConstraints;
  9. import java.awt.GridBagLayout;
  10. import java.awt.event.ActionEvent;
  11. import java.awt.event.ActionListener;
  12. import java.awt.event.KeyEvent;
  13. import java.awt.event.MouseEvent;
  14. import java.awt.event.MouseListener;
  15.  
  16. import javax.swing.JFrame;
  17. import javax.swing.JOptionPane;
  18. import javax.swing.JPanel;
  19. import javax.swing.JMenu;
  20. import javax.swing.JMenuItem;
  21. import javax.swing.JMenuBar;
  22. import javax.swing.KeyStroke;
  23.  
  24. import csc216project3.FreeCellGame.where;
  25.  
  26. public class FreeCellView extends JFrame implements ActionListener, MouseListener {
  27.  
  28. private FreeCellGame game;
  29. private Container pane;
  30. private CardPanel fPanel;
  31. private CardPanel tPanel;
  32. private CardPanel hPanel;
  33. private Card selectedCard;
  34. private Card tempCard;
  35. private CardPanel oldClickedPanel;
  36. String fromPile = "", toPile = "";
  37. int fromPileInt = 0, toPileInt = 0;
  38.  
  39. public FreeCellView(FreeCellGame g) {
  40. super("Free Cell");
  41. game = g;
  42. pane = getContentPane();
  43.  
  44. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  45.  
  46. JMenuBar menuBar;
  47. JMenu menu;
  48. JMenuItem mbNewGame;
  49. JMenuItem mbOpenGame;
  50. JMenuItem mbExit;
  51.  
  52. menuBar = new JMenuBar();
  53.  
  54. menu = new JMenu("Game");
  55. menu.setMnemonic(KeyEvent.VK_G);
  56. menu.getAccessibleContext().setAccessibleDescription(
  57. "Game options menu.");
  58. menuBar.add(menu);
  59.  
  60. mbNewGame = new JMenuItem("New Game", KeyEvent.VK_N);
  61. mbNewGame.setAccelerator(KeyStroke.getKeyStroke(
  62. KeyEvent.VK_N, ActionEvent.ALT_MASK));
  63. mbNewGame.getAccessibleContext().setAccessibleDescription(
  64. "Starts a new game with a random deck.");
  65. mbNewGame.addActionListener(new ActionListener() {
  66. public void actionPerformed(ActionEvent e)
  67. {
  68. setVisible(false);
  69. dispose();
  70. new FreeCell();
  71. }
  72. });
  73. menu.add(mbNewGame);
  74.  
  75. mbOpenGame = new JMenuItem("Open Game", KeyEvent.VK_O);
  76. mbOpenGame.setAccelerator(KeyStroke.getKeyStroke(
  77. KeyEvent.VK_O, ActionEvent.ALT_MASK));
  78. mbOpenGame.getAccessibleContext().setAccessibleDescription(
  79. "Starts a new game with a predefined seed.");
  80. mbOpenGame.addActionListener(new ActionListener() {
  81. public void actionPerformed(ActionEvent e)
  82. {
  83. String seed = JOptionPane.showInputDialog("Enter the seed.");
  84. setVisible(false);
  85. dispose();
  86. if (seed.isEmpty())
  87. new FreeCell();
  88. else
  89. new FreeCell(seed);
  90. }
  91. });
  92. menu.add(mbOpenGame);
  93.  
  94. mbExit = new JMenuItem("Exit", KeyEvent.VK_X);
  95. mbExit.getAccessibleContext().setAccessibleDescription(
  96. "Exits the current game.");
  97. mbExit.addActionListener(new ActionListener() {
  98. public void actionPerformed(ActionEvent e)
  99. {
  100. System.exit(0);
  101. }
  102. });
  103. menu.add(mbExit);
  104.  
  105. setJMenuBar(menuBar);
  106.  
  107. fPanel = new CardPanel(350,125);
  108. hPanel = new CardPanel(350,125);
  109. tPanel = new CardPanel(700,475);
  110.  
  111. fPanel.setPile(game.getFreeCells());
  112. hPanel.setPile(game.getHome());
  113. tPanel.setPile(game.getTableau());
  114.  
  115. fPanel.setGame(game);
  116. hPanel.setGame(game);
  117. tPanel.setGame(game);
  118.  
  119. fPanel.addMouseListener(this);
  120. hPanel.addMouseListener(this);
  121. tPanel.addMouseListener(this);
  122.  
  123. tPanel.setBGColor(new Color(0,150,0));
  124.  
  125. pane.setLayout(new GridBagLayout());
  126. GridBagConstraints c = new GridBagConstraints();
  127. c.gridy = 0;
  128. c.gridx = 0;
  129. c.fill = GridBagConstraints.HORIZONTAL;
  130. pane.add(fPanel,c);
  131. c.gridy = 0;
  132. c.gridx = 1;
  133. c.fill = GridBagConstraints.HORIZONTAL;
  134. pane.add(hPanel,c);
  135. c.gridy = 1;
  136. c.gridx = 0;
  137. c.gridwidth = 2;
  138. c.fill = GridBagConstraints.HORIZONTAL;
  139. pane.add(tPanel,c);
  140.  
  141. pack();
  142. setVisible(true);
  143.  
  144. }
  145.  
  146. /*public void paint(Graphics page) {
  147. super.paint(page);
  148. if (game.getSelectedCard()!=null) {
  149. page.setColor(Color.YELLOW);
  150. int x1 = game.getSelectedCard().xCoordinate();
  151. int y1 = game.getSelectedCard().yCoordinate();
  152. page.drawRect(x1,y1,74,98);
  153. page.drawRect(x1-1,y1-1,74,98);
  154. page.drawRect(x1-2,y1-2,74,98);
  155. System.out.println(x1+" "+y1);
  156. }
  157.  
  158. }*/
  159.  
  160. public void actionPerformed(ActionEvent e) {
  161.  
  162. }
  163.  
  164. public void mouseClicked(MouseEvent e) {
  165. CardPanel clickedPanel = (CardPanel)e.getComponent();
  166. int pile = clickedPanel.pileClicked(e.getX(),e.getY());
  167.  
  168. if (selectedCard == null) {
  169. boolean onTopCard = false;
  170. if (pile >= 0)
  171. onTopCard = clickedPanel.isOnTopCard(e.getX(),e.getY(),pile);
  172. if (onTopCard) {
  173. selectedCard = clickedPanel.getTopCard(pile);
  174. game.setSelectedCard(selectedCard);
  175. oldClickedPanel = clickedPanel;
  176. fromPile = clickedPanel.getPileType();
  177. fromPileInt = pile;
  178. }
  179. } else {
  180. game.setSelectedCard(null);
  181. if (pile >= 0) {
  182. toPile = clickedPanel.getPileType();
  183. toPileInt = pile;
  184. if (fromPile.equals("TableauPile")) {
  185. if (toPile.equals("TableauPile"))
  186. game.makeMove(where.inTableau, where.inTableau, fromPileInt, toPileInt);
  187. if (toPile.equals("HomeCellPile"))
  188. game.makeMove(where.inTableau, where.inHome, fromPileInt, toPileInt);
  189. if (toPile.equals("FreeCellPile"))
  190. game.makeMove(where.inTableau, where.inFree, fromPileInt, toPileInt);
  191. }
  192. if (fromPile.equals("FreeCellPile")) {
  193. if (toPile.equals("TableauPile"))
  194. game.makeMove(where.inFree, where.inTableau, fromPileInt, toPileInt);
  195. if (toPile.equals("HomeCellPile"))
  196. game.makeMove(where.inFree, where.inHome, fromPileInt, toPileInt);
  197. if (toPile.equals("FreeCellPile"))
  198. game.makeMove(where.inFree, where.inFree, fromPileInt, toPileInt);
  199. }
  200. if (fromPile.equals("HomeCellPile")) {
  201. if (toPile.equals("TableauPile"))
  202. game.makeMove(where.inHome, where.inTableau, fromPileInt, toPileInt);
  203. if (toPile.equals("HomeCellPile"))
  204. game.makeMove(where.inHome, where.inHome, fromPileInt, toPileInt);
  205. if (toPile.equals("FreeCellPile"))
  206. game.makeMove(where.inHome, where.inFree, fromPileInt, toPileInt);
  207. }
  208.  
  209. clickedPanel.clear();
  210. oldClickedPanel.clear();
  211. /*
  212. System.out.println(clickedPanel.getPileType());
  213. if (clickedPanel.getPileType().equals("TableauPile")) {
  214. tempCard = clickedPanel.getSelectedCard(pile);
  215. toPile = clickedPanel.getPile(pile);
  216. if (fromPile.legalRemove() && toPile.legalAdd(selectedCard)) {
  217.  
  218. }
  219. }
  220. if (clickedPanel.getPileType().equals("FreeCellPile")) {
  221. System.out.println("ASDF");
  222. }*/
  223. }
  224. selectedCard = null;
  225. }
  226. }
  227.  
  228. @Override
  229. public void mouseEntered(MouseEvent arg0) {
  230. // TODO Auto-generated method stub
  231.  
  232. }
  233.  
  234. @Override
  235. public void mouseExited(MouseEvent arg0) {
  236. // TODO Auto-generated method stub
  237.  
  238. }
  239.  
  240. @Override
  241. public void mousePressed(MouseEvent arg0) {
  242. // TODO Auto-generated method stub
  243.  
  244. }
  245.  
  246. @Override
  247. public void mouseReleased(MouseEvent arg0) {
  248. // TODO Auto-generated method stub
  249.  
  250. }
  251.  
  252. }
Add Comment
Please, Sign In to add comment