这个IPlayer的run接口函数,后面的实例化,参数上让人很迷惑,因为多余的参数出现了。public interface IPlayer {
public void run(List<Point> enemyPoints, Point point);
}//电脑走一步棋的时候
@Override
public void run(List<Point> enemyPoints, Point p) {
//此地只用到第一个参数,另一个是废弃的
Point p2 = doAnalysis(myPoints, enemyPoints);
myPoints.add(p2);
allFreePoints.remove(p2);
}//人走一步棋的时候
@Override
public void run(List<Point> enemyPoints, Point p) {
//此地只用到第二个参数,另一个是废弃的
myPoints.add(p);
allFreePoints.remove(p);
}
public void run(List<Point> enemyPoints, Point point);
}//电脑走一步棋的时候
@Override
public void run(List<Point> enemyPoints, Point p) {
//此地只用到第一个参数,另一个是废弃的
Point p2 = doAnalysis(myPoints, enemyPoints);
myPoints.add(p2);
allFreePoints.remove(p2);
}//人走一步棋的时候
@Override
public void run(List<Point> enemyPoints, Point p) {
//此地只用到第二个参数,另一个是废弃的
myPoints.add(p);
allFreePoints.remove(p);
}
为什么你的电脑走一步棋里面要重新定义一个p2,myPoints又是从那里来的?方法里面的p不可以用么?
public void run(List<Point> enemyPoints, Point point);
public void run(List<Point> enemyPoints);}
{
public void run(List<Point> enemyPoints);
public void run(Point p);
}[code]
电脑走棋和人走棋分开定义。