anonymous No title
No License Java
2020年01月19日
Copy

//潜水艦撃沈ゲーム
import java.util.Scanner;

class SubmarineGame {
    public static Attack atk = new Attack();
    public int Y, X;
    static Sea[][] sea = new Sea[5][5];

    public static void main(String[] args) {
        // FuneData fd =new FuneData();
        // SeaData sd =new SeaData();
        System.out.println("潜水艦撃沈ゲーム開始!!");
        Scanner stdIn = new Scanner(System.in);
        System.out.print("先攻→ 0 後攻→ 1 を入力:");
        int ForS = stdIn.nextInt();
        if (ForS == 0) {
            int atkx = 0;
            int atky = 0;
            while (true) {
                System.out.println("あなたのターンです。");
                // choose();
                System.out.println("(" + "," + ")" + "を攻撃");
                System.out.print("結果(命中→ 0 波高し→ 1 ハズレ→ 2 命中・撃沈→ 3):");
                int result = stdIn.nextInt();
                if (result == 0) {
                    System.out.println("0の機能は未実装");
                    atk.Hit(atky, atkx);
                }
                if (result == 1) {
                    System.out.println("1の機能は未実装");
                    atk.Namitakashi(atky, atkx);
                }
                if (result == 2) {
                    System.out.println("2の機能は未実装");
                    atk.Miss(atky, atkx);
                }
                if (result == 3) { // 命中(0)と統合できそう
                    System.out.println("3の機能は未実装");
                    atk.Sink(atky, atkx);
                }

                System.out.println("あいてのターンです。");
                System.out.print("攻撃されたy座標を入力:");
                int attackedY = stdIn.nextInt();
                System.out.print("攻撃されたx座標を入力:");
                int attackedX = stdIn.nextInt();
                //System.out.println("結果は" + "  " + "でした。");
                System.out.println("結果は" + Attacked(attackedY, attackedX) + "でした。");
            }
        }

        if (ForS == 1) {
            while (true) {
                System.out.println("あいてのターンです。");
                System.out.print("攻撃されたy座標を入力:");
                int attackedY = stdIn.nextInt();
                System.out.print("攻撃されたx座標を入力:");
                int attackedX = stdIn.nextInt();
                Attacked(attackedY, attackedX);
                //System.out.println("結果は" + "  " + "でした。");
                System.out.println("結果は" + Attacked(attackedY, attackedX) + "でした。");

                System.out.println("あなたのターンです。");
                System.out.println("(" + "," + ")" + "を攻撃");
                System.out.print("結果(命中→ 0 波高し→ 1 ハズレ→ 2 命中・撃沈→ 3):");
                int result = stdIn.nextInt();
                if (result == 0) {
                    System.out.println("0の機能は未実装");
                    atk.Hit(attackedY, attackedX);
                }
                if (result == 1) {
                    System.out.println("1の機能は未実装");
                    atk.Namitakashi(attackedY, attackedX);
                }
                if (result == 2) {
                    System.out.println("2の機能は未実装");
                    atk.Miss(attackedY, attackedX);
                }
                if (result == 3) { // 命中(0)と統合できそう
                    System.out.println("3の機能は未実装");
                    atk.Sink(attackedY, attackedX);
                }
            }
        }
    }

    public static String Attacked(int y, int x) { // 敵陣から攻撃
        String str = " ";
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                sea[i][j] = new Sea(0, 0, 0, 0);
            }
        }
        if (namitaka(y, x) == true | sea[y][x].mikata == 1) {
            if (sea[y][x].mikata == 1) {
                atk.enHit(y, x);
            } else {
                str = atk.enNamitakashi(y, x);
            }
        } else {
            str = atk.enMiss(y, x);
        }
        return str;
    }

    public static boolean namitaka(int y, int x) {
        for (int i = -1; i <= 1; i++) {
            for (int j = -1; j <= 1; j++) {
                if (sea[y + i][x + j].mikata == 1) {
                    return true;
                }
            }
        }
        return false;
    }
}
class Sea{
  int mikata;  //味方がいるかいないか いる→1 いない→0
  int teki;   //敵がいるかいないか  いる→1 いない→0
  int hp0;    //HPが0の潜水艦がいるかいないか いる→1 いない→0
  int chance;  //敵がいる可能性 数字が大きいほどいる可能性が高い

  Sea(int mikata,int teki,int hp0,int chance){
    this.mikata = mikata;
    this.teki = teki;
    this.hp0 = hp0;
    this.chance = chance;
    
  }

  Sea(){
      this.mikata = 0;
      this.teki = 0;
      this.hp0 = 0;
      this.chance = 0;
  }
  public String toString(){
    String str;
    str = ("海の状況 "+ this.mikata +","+ this.teki +","+ this.hp0 +","+ this.chance);

    return str;
  }

}

public class SeaData{
 SeaData(){
    //インスタンス作成
    Sea[][] sea = new Sea[5][5];
    //初期化
    for(int i=0; i<5; i++){
      for(int j=0; j<5; j++){
        sea[i][j] = new Sea(0,0,0,0);
      }
    }
    //出力
    for(int i=0; i<5; i++){
      for(int j=0; j<5; j++){
        System.out.println("sea["+i+"]"+"["+j+"]"+sea[i][j]);
      }
    }

 }
}
class Attack {
  int bX=0;
  int bY=0;   //攻撃したとこ・されたとこ。bはbombの略。
  Sea[][] sea = new Sea[5][5];
  String str;
  Attack(){
      for(int i = 0;i < 5;i++){
          for(int j = 0;j < 5;j++){
              sea[i][j] = new Sea();
          }
      }
  }
//自陣から攻撃
  public void Hit(int bY,int bX) { //命中

    if(sea[bY][bX].teki == 0) {
      sea[bY][bX].teki = 1;
    }
    /* 敵艦のHP-1
       HPが0になったらSink */
  }

  public void Namitakashi(int bY,int bX) { //波高し

    for(int i = -1; i <= 1; i++) {
      for(int j = -1; j <= 1; j++) {
        sea[bY+i][bX+j].chance++;
      }
    sea[bY][bX].chance = 0;
    }
  }

  public void Miss(int bY,int bX) {  //ハズレ

    for(int i = -1; i <= 1; i++) {
      for(int j = -1; j <= 1; j++) {
        sea[bY+i][bX+j].chance = 0;
      }
    }
  }

  public void Sink(int bY,int bX) {  //撃沈

    //sea[bY][bX] = sea(0, 0, 1, 0);
    sea[bY][bX].mikata = 0;
    sea[bY][bX].teki = 0;
    sea[bY][bX].hp0 = 1;
    sea[bY][bX].chance = 0;
  }


//敵陣から攻撃
  public void enHit(int bY,int bX) { //命中
    enAttack(bY,bX);
    /* 味方艦のHP-1
       HPが0になったらSink
        else{ str= "命中しました" } */
  }

  /*public void enNamitakashi(int bY,int bX) { //波高し
    enAttack(bY,bX);
    str = "波高し";
  }

  public void enMiss(int bY,int bX) {  //ハズレ
    enAttack(bY,bX);
    str = "ハズレです";
  }

  public void enSink(int bY,int bX) {  //撃沈
    enAttack(bY,bX);

    //sea[bY][bX] = sea(0, 0, 1, 0);
    sea[bY][bX].mikata = 0;
    sea[bY][bX].teki = 0;
    sea[bY][bX].hp0 = 1;
    sea[bY][bX].chance = 0;

    str = "沈没しました";
  }*/

  public String enNamitakashi(int bY,int bX) { //波高し
    enAttack(bY,bX);
    return "波高し";
  }

  public String enMiss(int bY,int bX) {  //ハズレ
    enAttack(bY,bX);
    return  "ハズレです";
  }

  public String enSink(int bY,int bX) {  //撃沈
    enAttack(bY,bX);

    //sea[bY][bX] = sea(0, 0, 1, 0);
    sea[bY][bX].mikata = 0;
    sea[bY][bX].teki = 0;
    sea[bY][bX].hp0 = 1;
    sea[bY][bX].chance = 0;

    return "沈没しました";
  }


  public void enAttack(int bY,int bX) {  //敵からの攻撃による居場所特定

    for(int i = -1; i <= 1; i++) {
      for(int j = -1; j <= 1; j++) {
        sea[bY+i][bX+j].chance++;
      }
    }
    sea[bY][bX].chance = 0;
  }

}

//潜水艦撃沈ゲーム
import java.util.Scanner;

class SubmarineGame {
    public static Attack atk = new Attack();
    public int Y, X;
    static Sea[][] sea = new Sea[5][5];

    public static void main(String[] args) {
        // FuneData fd =new FuneData();
        // SeaData sd =new SeaData();
        System.out.println("潜水艦撃沈ゲーム開始!!");
        Scanner stdIn = new Scanner(System.in);
        System.out.print("先攻→ 0 後攻→ 1 を入力:");
        int ForS = stdIn.nextInt();
        if (ForS == 0) {
            int atkx = 0;
            int atky = 0;
            while (true) {
                System.out.println("あなたのターンです。");
                // choose();
                System.out.println("(" + "," + ")" + "を攻撃");
                System.out.print("結果(命中→ 0 波高し→ 1 ハズレ→ 2 命中・撃沈→ 3):");
                int result = stdIn.nextInt();
                if (result == 0) {
                    System.out.println("0の機能は未実装");
                    atk.Hit(atky, atkx);
                }
                if (result == 1) {
                    System.out.println("1の機能は未実装");
                    atk.Namitakashi(atky, atkx);
                }
                if (result == 2) {
                    System.out.println("2の機能は未実装");
                    atk.Miss(atky, atkx);
                }
                if (result == 3) { // 命中(0)と統合できそう
                    System.out.println("3の機能は未実装");
                    atk.Sink(atky, atkx);
                }

                System.out.println("あいてのターンです。");
                System.out.print("攻撃されたy座標を入力:");
                int attackedY = stdIn.nextInt();
                System.out.print("攻撃されたx座標を入力:");
                int attackedX = stdIn.nextInt();
                //System.out.println("結果は" + "  " + "でした。");
                System.out.println("結果は" + Attacked(attackedY, attackedX) + "でした。");
            }
        }

        if (ForS == 1) {
            while (true) {
                System.out.println("あいてのターンです。");
                System.out.print("攻撃されたy座標を入力:");
                int attackedY = stdIn.nextInt();
                System.out.print("攻撃されたx座標を入力:");
                int attackedX = stdIn.nextInt();
                Attacked(attackedY, attackedX);
                //System.out.println("結果は" + "  " + "でした。");
                System.out.println("結果は" + Attacked(attackedY, attackedX) + "でした。");

                System.out.println("あなたのターンです。");
                System.out.println("(" + "," + ")" + "を攻撃");
                System.out.print("結果(命中→ 0 波高し→ 1 ハズレ→ 2 命中・撃沈→ 3):");
                int result = stdIn.nextInt();
                if (result == 0) {
                    System.out.println("0の機能は未実装");
                    atk.Hit(attackedY, attackedX);
                }
                if (result == 1) {
                    System.out.println("1の機能は未実装");
                    atk.Namitakashi(attackedY, attackedX);
                }
                if (result == 2) {
                    System.out.println("2の機能は未実装");
                    atk.Miss(attackedY, attackedX);
                }
                if (result == 3) { // 命中(0)と統合できそう
                    System.out.println("3の機能は未実装");
                    atk.Sink(attackedY, attackedX);
                }
            }
        }
    }

    public static String Attacked(int y, int x) { // 敵陣から攻撃
        String str = " ";
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                sea[i][j] = new Sea(0, 0, 0, 0);
            }
        }
        if (namitaka(y, x) == true | sea[y][x].mikata == 1) {
            if (sea[y][x].mikata == 1) {
                atk.enHit(y, x);
            } else {
                str = atk.enNamitakashi(y, x);
            }
        } else {
            str = atk.enMiss(y, x);
        }
        return str;
    }

    public static boolean namitaka(int y, int x) {
        for (int i = -1; i <= 1; i++) {
            for (int j = -1; j <= 1; j++) {
                if (sea[y + i][x + j].mikata == 1) {
                    return true;
                }
            }
        }
        return false;
    }
}
class Sea{
  int mikata;  //味方がいるかいないか いる→1 いない→0
  int teki;   //敵がいるかいないか  いる→1 いない→0
  int hp0;    //HPが0の潜水艦がいるかいないか いる→1 いない→0
  int chance;  //敵がいる可能性 数字が大きいほどいる可能性が高い

  Sea(int mikata,int teki,int hp0,int chance){
    this.mikata = mikata;
    this.teki = teki;
    this.hp0 = hp0;
    this.chance = chance;
    
  }

  Sea(){
      this.mikata = 0;
      this.teki = 0;
      this.hp0 = 0;
      this.chance = 0;
  }
  public String toString(){
    String str;
    str = ("海の状況 "+ this.mikata +","+ this.teki +","+ this.hp0 +","+ this.chance);

    return str;
  }

}

public class SeaData{
 SeaData(){
    //インスタンス作成
    Sea[][] sea = new Sea[5][5];
    //初期化
    for(int i=0; i<5; i++){
      for(int j=0; j<5; j++){
        sea[i][j] = new Sea(0,0,0,0);
      }
    }
    //出力
    for(int i=0; i<5; i++){
      for(int j=0; j<5; j++){
        System.out.println("sea["+i+"]"+"["+j+"]"+sea[i][j]);
      }
    }

 }
}
class Attack {
  int bX=0;
  int bY=0;   //攻撃したとこ・されたとこ。bはbombの略。
  Sea[][] sea = new Sea[5][5];
  String str;
  Attack(){
      for(int i = 0;i < 5;i++){
          for(int j = 0;j < 5;j++){
              sea[i][j] = new Sea();
          }
      }
  }
//自陣から攻撃
  public void Hit(int bY,int bX) { //命中

    if(sea[bY][bX].teki == 0) {
      sea[bY][bX].teki = 1;
    }
    /* 敵艦のHP-1
       HPが0になったらSink */
  }

  public void Namitakashi(int bY,int bX) { //波高し

    for(int i = -1; i <= 1; i++) {
      for(int j = -1; j <= 1; j++) {
        sea[bY+i][bX+j].chance++;
      }
    sea[bY][bX].chance = 0;
    }
  }

  public void Miss(int bY,int bX) {  //ハズレ

    for(int i = -1; i <= 1; i++) {
      for(int j = -1; j <= 1; j++) {
        sea[bY+i][bX+j].chance = 0;
      }
    }
  }

  public void Sink(int bY,int bX) {  //撃沈

    //sea[bY][bX] = sea(0, 0, 1, 0);
    sea[bY][bX].mikata = 0;
    sea[bY][bX].teki = 0;
    sea[bY][bX].hp0 = 1;
    sea[bY][bX].chance = 0;
  }


//敵陣から攻撃
  public void enHit(int bY,int bX) { //命中
    enAttack(bY,bX);
    /* 味方艦のHP-1
       HPが0になったらSink
        else{ str= "命中しました" } */
  }

  /*public void enNamitakashi(int bY,int bX) { //波高し
    enAttack(bY,bX);
    str = "波高し";
  }

  public void enMiss(int bY,int bX) {  //ハズレ
    enAttack(bY,bX);
    str = "ハズレです";
  }

  public void enSink(int bY,int bX) {  //撃沈
    enAttack(bY,bX);

    //sea[bY][bX] = sea(0, 0, 1, 0);
    sea[bY][bX].mikata = 0;
    sea[bY][bX].teki = 0;
    sea[bY][bX].hp0 = 1;
    sea[bY][bX].chance = 0;

    str = "沈没しました";
  }*/

  public String enNamitakashi(int bY,int bX) { //波高し
    enAttack(bY,bX);
    return "波高し";
  }

  public String enMiss(int bY,int bX) {  //ハズレ
    enAttack(bY,bX);
    return  "ハズレです";
  }

  public String enSink(int bY,int bX) {  //撃沈
    enAttack(bY,bX);

    //sea[bY][bX] = sea(0, 0, 1, 0);
    sea[bY][bX].mikata = 0;
    sea[bY][bX].teki = 0;
    sea[bY][bX].hp0 = 1;
    sea[bY][bX].chance = 0;

    return "沈没しました";
  }


  public void enAttack(int bY,int bX) {  //敵からの攻撃による居場所特定

    for(int i = -1; i <= 1; i++) {
      for(int j = -1; j <= 1; j++) {
        sea[bY+i][bX+j].chance++;
      }
    }
    sea[bY][bX].chance = 0;
  }

}

年末年始は機械学習・深層学習を勉強しませんか?
No one still commented. Please first comment.
年末年始は機械学習・深層学習を勉強しませんか?
広告
未経験から最短でエンジニアへの転職を目指すなら