가위바위보 게임
내 코드
- switch문을 쓰려니 break 문을 많이 써야하고 확실히 코드줄이 늘어난다.
private static void RspGame1() {
Scanner scanner = new Scanner(System.in);
System.out.print("가위(0), 바위(1), 보(2): ");
int human = scanner.nextInt();
int com = (int) (Math.random() * 3);
switch (human) {
case 0:
switch (com) {
case 1:
System.out.println("컴퓨터 승리");
break;
case 2:
System.out.println("인간 승리");
break;
default:
System.out.println("비김");
break;
}
break;
case 1:
switch (com) {
case 2:
System.out.println("컴퓨터 승리");
break;
case 0:
System.out.println("인간 승리");
break;
default:
System.out.println("비김");
break;
}
break;
case 2:
switch (com) {
case 0:
System.out.println("컴퓨터 승리");
break;
case 1:
System.out.println("인간 승리");
break;
default:
System.out.println("비김");
break;
}
break;
}
}
강사님 코드
- 조건문을 사용해서 승무패를 판정
- 먼저 제일 판단하기 쉬운 무승부를 판단
- 그리고 내가 이겼을 경우를 판단
- 0은 1한테 지고 1은 2한테, 2는 0한테 진다
0 -> 1
1 -> 2
2 -> 0
으로 만들어 주는 로직을 생각
- user == (computer + 1) % 3
- 나머지는 다 내가 진 경우다
private static void RspGame2() {
Scanner sc = new Scanner(System.in);
System.out.print("가위(0), 바위(1), 보(2): ");
int user = sc.nextInt();
int computer = (int) (Math.random() * 3);
if (user == computer)
System.out.println("인간과 컴퓨터가 비겼음");
else if (user == (computer + 1) % 3)
System.out.println("인간: " + user + " 컴퓨터: " + computer + " 인간 승리");
else
System.out.println("인간: " + user + " 컴퓨터: " + computer + " 컴퓨터 승리");
}
성적 출력 프로그램
- Grade 클래스를 만들고,
국어 영어 수학을 입력받는 기능을 만들고
평균이 90 수 우 미양가를 출력하는
프로그램을 만드시오.
- 위의 것을 테스트 하는 GradeTest
클래스를 만드시오.
static class Grade{
private int ko;
private int en;
private int ma;
public void setKo(int ko) {
this.ko = ko;
}
public void setEn(int en) {
this.en = en;
}
public void setMa(int ma) {
this.ma = ma;
}
void printGrade() {
double avg = (double) (ko+en+ma) / 3;
System.out.println(avg);
if(avg>=90) System.out.println("수");
else if (avg>=80) System.out.println("우");
else if (avg>=70) System.out.println("미");
else if (avg>=60) System.out.println("양");
else System.out.println("가");
}
}
static class GradeTest{
static void test() {
Grade grade = new Grade();
grade.setKo(50);
grade.setEn(60);
grade.setMa(80);
grade.printGrade();
}
}
public static void main(String[] args) {
GradeTest.test();
}
업다운게임 리팩토링
public class UpAndDownTest {
static class UpDownGame{
Scanner sc = new Scanner(System.in);
final int COUNT = 10;
int[] arrInput;
int answer;
int num;
void run() {
arrInput = new int[COUNT];
answer = (int) (Math.random() * 100 + 1);
for (int i = 0; i < arrInput.length; i++) {
System.out.print("숫자를 입력해주세요 : ");
num = sc.nextInt();
if (num > answer) {
System.out.println("Down ===> " + (COUNT - i - 1) + "번 남아 있습니다.");
} else if (num < answer) {
System.out.println("Up ====> " + (COUNT - i - 1) + "번 남아 있습니다.");
} else {
System.out.println("일치");
break;
}
}
}
}
public static void main(String[] args) {
Scanner sc;
UpDownGame game;
while (true) {
try {
sc = new Scanner(System.in);
System.out.println("게임시작 1");
System.out.println("게임종료 2");
System.out.println(">>");
int num = sc.nextInt();
if (num == 1) {
game = new UpDownGame();
game.run();
} else {
System.out.println("게임을 종료합니다.");
break;
}
} catch (Exception e) {
System.out.println("잘못된 입력입니다.");
System.out.println("게임을 다시 시작 합니다.");
}
}
}
}