Java初心者です。大学の課題で、三目並べを自分(標準入力で打つ手を決める)とコンピュータ(決められた優先順位によって打つ手を決める)で行うソースコードを書いています。
今は自分で打つ手を決めるHumanPlayerクラスを書いているのですが、標準入力が上手くできていないのか下のソースコードをコンパイルしようとするとnextクラス(x,y座標を確定させるZahyoクラスにx,yを渡す)にて「x,yが初期化されていません」とエラーが出てしまいます。
どう改善すれば正しく動きますかね…?
※文字数の都合で他のクラスが書けないので、必要であれば回答欄に追記します。
<ソースコード(一部のエラー出力は省略)>
import java.util.Scanner;
/** 標準入力から次の手を入力する人間フ゜レーヤー /
class HumanPlayer extends AbstractPlayer {
/* キーボード入力用のスキャナ */
private Scanner sc;
/** 引数は AbstractPlayer と同じ
@param name プレーヤー名
@param maruBatsu このプレーヤーがマルかバツか( Ban.MARU または Ban.BATSU ) */
HumanPlayer(String name, int maruBatsu) {
super(name, maruBatsu);
sc = new Scanner(System.in);
Ban ban = new Ban();
int x = sc.nextInt();
int y = sc.nextInt();
if(ban.isBlank(x, y) == false) {
System.out.println("その場所はすでに置かれています");
sc = new Scanner(System.in);
x = sc.nextInt();
y = sc.nextInt();
}
}
/** 次の手を返す.次の手はキーボード(標準入力)から得る.
@param ban 盤
@return 次の手(の座標) */
Zahyo next(Ban ban) {
int x;
int y;
System.out.print("どこに置きますか: ");
return new Zahyo(x,y);
}
}
<出力先のソースコード>
class SanmokuCui {
public static void main(String[] args) {
HumanPlayer p1 = new HumanPlayer("あなた", Ban.MARU);
SimplePlayer p2 = new SimplePlayer("コンピュータ", Ban.BATSU);
Ban ban = new Ban();
GameField gf = new GameField(p1, p2, ban);
gf.play();
}
}
あなたの回答
tips
プレビュー