忍者ブログ

学習用

2025
04,27

«[PR]»

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2020
07,01

HitandBlow_1

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class HitandBlow {
//answer_sizeに代入される数は当てる数字の桁数。
final static int answer_size = 3;
static int hit = 0;
static int blow = 0;
static int challenge = 1;

//メインメソッド
public static void main(String[] args) {

printDirection();
int[] right_answer;
right_answer = makeRightAnswer();

while(true) {
int[] user_answer;
user_answer = readUserAnswer();
checkAnswer(right_answer, user_answer);
challenge++;
if(hit == answer_size) {
System.out.println("正解です。ゲームを終了します。");
break;
}
}
}

//説明を出力するメソッド
public static void printDirection() {
String direction = "ゲームを開始します。\n"
+ "これから0~9の"+answer_size+"つの数字を当ててもらいます。\n"
+ "同じ数字が使用されていることはありません。\n"
+ "数字と位置が合っていた場合、\"hit\"\n"
+ "数字が合っていて位置が間違っていた場合、\"blow\"とカウントされます。\n\n";

System.out.println(direction);
}

//ランダムに正解を作成するメソッド
public static int[] makeRightAnswer() {
int[] answer = new int[answer_size];
for(int i = 0; i < answer.length; i++) {
answer[i] = (int)(Math.random()*10);
for(int j = i-1; j >=0; j--) {
if(answer[j] == answer[i]) {
answer[i] = (int)(Math.random()*10);
}
}
}
return answer;
}

//入力された数字を読み込むメソッド
public static int[] readUserAnswer() {
hit = 0;
blow = 0;
int[] answer = new int[answer_size];
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("\n"+challenge+"回目のチャレンジ");
for(int i = 0; i < answer.length; i++) {
try {
System.out.print((i+1)+"つ目の数字:");
String a = reader.readLine();
int b = Integer.parseInt(a);
answer[i] = b;
}catch (NumberFormatException e) {
System.out.println("数字を入力してください。");
i--;
}catch (IOException e) {
System.out.println("形式が間違っています。");
i--;
}
}
return answer;
}

//解答と照らし合わせるメソッド
public static void checkAnswer(int[] right_answer,int[] user_answer) {
for(int i = 0; i < right_answer.length; i++) {
for(int j = 0; j < user_answer.length; j++) {
if(right_answer[j] == user_answer[i]) {
if(j==i) {
hit++;
}else {
blow++;
}
}
}
}
System.out.println(hit+" hit "+blow+" blow");
}
}
PR
Post your Comment
Name:
Title:
Mail:
URL:
Color:
Comment:
pass: emoji:Vodafone絵文字 i-mode絵文字 Ezweb絵文字

プロフィール
HN:
No Name Ninja
性別:
非公開
カテゴリー
最新記事
P R

Powered by Ninja.blog * TemplateDesign by TMP
忍者ブログ[PR]