class Omr {
int[] answer = {1, 3, 4, 2, 5};
char[] errata = new char[answer.length];
int score = 0;
void getHgd (int[] arr) {
Random rnd = new Random();
for (int i = 0; i < arr.length; i++) {
int rNum = rnd.nextInt(5)+1;
arr[i] = rNum;
}
}
void getErrata (int[] arr) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == answer[i]) {
errata[i] = 'O';
} else {
errata[i] = 'X';
}
}
}
void getScore () {
for (int i = 0; i < errata.length; i++) {
if (errata[i] == 'O') {
score += 20;
}
}
}
void printInfo(int[] arr) {
System.out.println("answer : " + Arrays.toString(answer));
System.out.println("hgd : " + Arrays.toString(arr));
System.out.println("정오표 : " + Arrays.toString(errata));
System.out.println("점수 : " + score);
}
}
public class H1_메서드1_알고리즘_OMR_문제 {
public static void main(String[] args) {
int[] hgd = new int[5];
Omr omr = new Omr();
omr.getHgd(hgd);
omr.getErrata(hgd);
omr.getScore();
omr.printInfo(hgd);
}
}
기존의 문제들 메소드 ver
class NumberGame{
Scanner sc = new Scanner(System.in);
int[] move = {0, 0, 0, 0, 8, 0, 0, 0, 0, 0};
int player = 4;
void setMenu () {
System.out.println("[1]왼쪽이동 [2]오른쪽이동 [0]종료");
}
void getPoint () {
for (int i = 0; i < move.length; i++) {
if (move[i] == 8) {
player = i;
break;
}
}
}
void printMap () {
System.out.print("[MAP]\n[");
for (int i: move) { System.out.printf(" %d ", i); }
System.out.println("] \n");
}
void getMoveLeft (int left) {
if (player == 0) {
System.out.println("왼쪽 끝 도달 \n이동 불가");
} else {
move[player] = 0;
player --;
move[player] = 8;
System.out.println("왼쪽 이동");
}
}
void getMoveRight (int right) {
if (player == move.length-1) {
System.out.println("오른쪽 끝 도달 \n이동 불가");
} else {
move[player] = 0;
player ++;
move[player] = 8;
System.out.println("오른쪽 이동");
}
}
void run() {
while (true) {
printMap();
setMenu();
int sel = sc.nextInt();
if (sel == 0) { break; }
else if (sel == 1) { getMoveLeft(sel); }
else if (sel == 2) { getMoveRight(sel); }
}
}
}
public class H1_메서드1_프로젝트_숫자이동_문제 {
public static void main(String[] args) {
NumberGame game = new NumberGame();
game.run();
}
}
메서드 파트로 넘어와서 메인 메소드에서는 실행만 가능하게 되었다.
class MemoryGame {
Scanner sc = new Scanner(System.in);
Random rnd = new Random();
int size= 10;
int[] front = {1, 1, 2, 2, 3, 3, 4, 4, 5, 5};
int[] back = new int[10];
int cnt = 0; // 정답을 맞춘 횟수
void setSuffleCard () {
for (int i = 0; i < 1000; i++) {
int r1 = rnd.nextInt(size);
int temp = front[0];
front[0] = front[r1];
front[r1] = temp;
}
}
void printFrontCard() {
System.out.print("[");
for (int i = 0; i < size; i++) { System.out.printf("%d ", front[i]); }
System.out.print("]\n");
}
void printBackCard() {
System.out.print("[");
for (int i = 0; i < size; i++) { System.out.printf("%d ", back[i]); }
System.out.print("]\n\n");
}
boolean checkedCard(int first, int second) {
boolean flag = false;
if (first == second) { flag = true; }
if (front[first] != front[second]) { flag = true; }
if (back[first] != 0 || back[second] != 0) { flag = true; };
if ( (first < 0 && first >= size) && (second < 0 && first >= size) ) { flag = true; }
return flag;
}
boolean changeCard(int first, int second) {
boolean flag = checkedCard(first, second);
if (flag == true) {
System.out.println("다시 입력");
} else {
back[first] = front[first];
back[second] = front[second];
cnt++;
}
return flag;
}
boolean exitGame() {
boolean run = true;
if (cnt == size/2) { run = false; }
return run;
}
void printMsg () {
String msg = "게임 종료";
System.out.println(msg);
}
boolean run() {
boolean run;
setSuffleCard();
while (true) {
run = exitGame();
if (run == false ) { return run; }
printFrontCard();
printBackCard();
System.out.println("첫번째 카드 선택");
int first = sc.nextInt();
System.out.println("두번째 카드 선택");
int second = sc.nextInt();
changeCard(first, second);
}
}
}
public class H3_메서드리턴1_알고리즘_기억력게임_정답 {
public static void main(String[] args) {
MemoryGame mg = new MemoryGame();
mg.run();
mg.printMsg();
}
}