Control.java
上传用户:jennyfly
上传日期:2021-08-10
资源大小:735k
文件大小:3k
源码类别:

游戏

开发平台:

Java

  1. package control;
  2. import java.awt.Point;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.awt.event.MouseAdapter;
  6. import java.awt.event.MouseEvent;
  7. import java.awt.event.WindowEvent;
  8. import java.awt.event.WindowListener;
  9. import model.Model;
  10. import view.PicBoard;
  11. /**
  12.  * 
  13.  * @author 何晓飞 control 类对界面上的事件进行监听
  14.  * @version 2.0
  15.  */
  16. public class Control extends MouseAdapter implements ActionListener,
  17. WindowListener {
  18. /* 一个model */
  19. private Model model;
  20. public Control(Model model) {
  21. this.model = model;
  22. }
  23. /*
  24.  * @see
  25.  * java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
  26.  * 监听按钮事件
  27.  */
  28. public void actionPerformed(ActionEvent e) {
  29. /*
  30.  * 获取命令 并转化为小写形式
  31.  */
  32. String cmd = e.getActionCommand().toLowerCase();
  33. /*
  34.  * 根据不同的命令参数进行响应
  35.  */
  36. /*
  37.  * 重新开始游戏
  38.  */
  39. if (cmd.equals("restart")) {
  40. model.reStart();
  41. }
  42. /*
  43.  * 进入游戏面板
  44.  */
  45. else if (cmd.equals("enter")) {
  46. model.enter();
  47. }
  48. /*
  49.  * 在初始界面退出游戏
  50.  */
  51. else if (cmd.equals("cancel")) {
  52. model.cancel();
  53. }
  54. /*
  55.  * 装载游戏
  56.  */
  57. else if (cmd.equals("load")) {
  58. model.load();
  59. }
  60. /*
  61.  * 提示
  62.  */
  63. else if (cmd.equals("remind")) {
  64. model.remind();
  65. }
  66. /*
  67.  * 选择图片
  68.  */
  69. else if (cmd.equals("pic")) {
  70. model.clickPic();
  71. }
  72. /*
  73.  * 音乐开关
  74.  */
  75. else if (cmd.equals("sound")) {
  76. model.clickSound();
  77. }
  78. else if(cmd.equals("back")){
  79. model.back();
  80. }
  81. /*
  82.  * 选择音乐
  83.  */
  84. else if (cmd.equals("music")) {
  85. model.clickMusic();
  86. }
  87. /*
  88.  * 演示
  89.  */
  90. else if (cmd.equals("demo")) {// 如果是demo
  91. model.demo();
  92. }
  93. /*
  94.  * 暂停
  95.  */
  96. else if (cmd.equals("pause")) {
  97. model.pause();
  98. }
  99. /*
  100.  * 帮助
  101.  */
  102. else if (cmd.equals("about")) {
  103. model.about();
  104. }
  105. /*
  106.  * 游戏面板退出游戏
  107.  */
  108. else if (cmd.equals("save")) {
  109. model.save();
  110. }
  111. }
  112. /**
  113.  * 单击右键取消选择,单击左键则将系统坐标转化为行列坐标并执行相应方法
  114.  */
  115. public void mousePressed(MouseEvent e) {
  116. Object src = e.getSource();// 得到事件对象
  117. if (src instanceof PicBoard) {
  118. if (e.getButton() == MouseEvent.BUTTON3)
  119. model.cancelSelect();// 右键则取消选择
  120. else
  121. model.clickCell(model.pointToMatrix(e.getPoint()));// 否则返回位置
  122. }
  123. }
  124. // 监听到的是窗体事件,要实现其全部的接口中的方法
  125. public void windowActivated(WindowEvent arg0) {
  126. // TODO Auto-generated method stub
  127. }
  128. public void windowClosed(WindowEvent arg0) {
  129. // TODO Auto-generated method stub
  130. }
  131. /**
  132.  * 当用户单击窗口关闭时保存窗口位置
  133.  */
  134. public void windowClosing(WindowEvent e) {
  135. Point p = e.getWindow().getLocationOnScreen();
  136. model.setFrameLocation(p);
  137. model.saveSet();
  138. }
  139. public void windowDeactivated(WindowEvent arg0) {
  140. // TODO Auto-generated method stub
  141. }
  142. public void windowDeiconified(WindowEvent arg0) {
  143. // TODO Auto-generated method stub
  144. }
  145. public void windowIconified(WindowEvent arg0) {
  146. // TODO Auto-generated method stub
  147. }
  148. public void windowOpened(WindowEvent arg0) {
  149. // TODO Auto-generated method stub
  150. }
  151. }