Source code: com/adorphuye/othello/player/HumanPlayer.java
1 package com.adorphuye.othello.player;
2
3 import java.util.*;
4 import java.awt.*;
5 import java.awt.event.*;
6 import com.adorphuye.othello.gui.*;
7 import com.adorphuye.othello.gui.board.*;
8
9 public class HumanPlayer extends Player implements BoardListener, MouseListener
10 {
11 private Vector hs = null;
12
13 /**
14 * @param mod
15 * @param num */
16 public HumanPlayer(BoardDataModel mod,int num)
17 {
18 super(mod,num);
19 }
20
21 /**
22 * @return */
23 public String toString()
24 {
25 return "Human "+getIndex();
26 }
27
28 public void play()
29 {
30 hs = getModel().getPossibleMoves(getIndex());
31 if(hs.size()==0)
32 {
33 Thread d = new Thread()
34 {
35 public void run()
36 {
37 getModel().pass(HumanPlayer.this);
38 }
39 };
40 d.start();
41 }
42 }
43
44 /**
45 * @param mouseEvent */
46 public void mouseExited(java.awt.event.MouseEvent mouseEvent)
47 {
48 }
49
50 /**
51 * @param mouseEvent */
52 public void mouseReleased(java.awt.event.MouseEvent mouseEvent)
53 {
54 }
55
56 /**
57 * @param mouseEvent */
58 public void mousePressed(java.awt.event.MouseEvent mouseEvent)
59 {
60 }
61
62 /**
63 * @param mouseEvent */
64 public void mouseClicked(final java.awt.event.MouseEvent mouseEvent)
65 {
66 if(getModel().getCurrentSide()==this)
67 {
68 Thread d = new Thread(){public void run(){
69 Board b = (Board)mouseEvent.getSource();
70 Point loc = b.toBoardCoordinate(mouseEvent.getPoint());
71 for(int i=0;i<hs.size();i++)
72 {
73 Point l = (Point)hs.elementAt(i);
74 if(loc.equals(l))
75 {
76 Vector s = getModel().flips(loc,getIndex());
77
78 getModel().setDataAt(loc,getSide());
79
80 for(int w=0;w<s.size();w++)
81 {
82 Point pos = (Point)s.elementAt(w);
83 getModel().setDataAt(pos,getSide());
84 }
85 getModel().nextSide();
86 break;
87 }
88 }
89 }};d.start();
90 }
91 }
92
93 /**
94 * @param mouseEvent */
95 public void mouseEntered(java.awt.event.MouseEvent mouseEvent)
96 {
97 }
98
99 /**
100 * @param evt */
101 public void boardChanged(BoardEvent evt)
102 {
103 }
104
105 public void reset()
106 {
107 getModel().nextSide();
108 }
109
110 }