GitHub Repositories leeconomy1121/java-study
App class
package application;
import game.Game;
public class App {
public static void main(String[] args) {
// 여기부터 프로그램 시작
// Game game = new Game();
// game.run();
new Game().run();
// 클래스 불러오기 할 때 Ctrl + 스페이스 or Ctrl + Shift + o (여러 개를 한꺼번에)
}
}
Game class
package game;
import java.util.Random;
import java.util.Scanner;
import game.oject.GameObject;
import game.oject.Paper;
import game.oject.Rock;
import game.oject.Scissors;
public class Game {
// 사용 할 가위, 바위, 보 객체를 생성
GameObject[] objects = { new Scissors(), new Rock(), new Paper() };
Random random = new Random();
Scanner scanner = new Scanner(System.in);
public void run() {
System.out.println("삼세판 게임시작 ...");
int wins = 0;
for (int i = 1; i <= 3; i++) { // i는 1부터 3까지 3번 반복
// 유저의 선택
System.out.println("가위(0), 바위(1), 보(2) 중 숫자로 선택 : ");
// int num = scanner.nextInt();
// int num = random.nextInt(objects.length);
// GameObject ob = objects[num];
// 간소화 하기
GameObject ob1 = objects[scanner.nextInt()];
GameObject ob2 = objects[random.nextInt(objects.length)];
System.out.println("당신의 선택은 : " + ob1.getName());
System.out.println("컴퓨터 선택은 : " + ob2.getName());
int result = ob1.copareTo(ob2);
wins += result;
if (result > 0) {
System.out.println(i + "round Win! ✌");
} else if (result < 0) {
System.out.println(i + "round Lose! 👎");
} else {
System.out.println(i + "round Draw! 🙌");
}
}
// 3번 가위바위보 끝난후
// 총점 wins로 전체 결과를 출력
System.out.println("삼세판 결과는 : ");
if (wins > 0) {
System.out.println("당신의 승리! 🚀");
} else if (wins < 0) {
System.out.println("당신의 패배! ☄");
} else {
System.out.println("비겼습니다! Draw! 🌊");
}
}
}
game.object package
GameObject class
package game.oject;
public class GameObject {
private int id; // 아이디
private String name; // 이름
private int[][] comparison = {
// 가위 바위 보
/* 가위(0) */ { 0, -1, 1 },
/* 바위(1) */ { 1, 0, -1 },
/* 보(2) */ { -1, 1, 0 }
};
// 상대의 (가위,바위,보)와 비교해서 결과 리턴
public int copareTo(GameObject ob) {
return comparison[id][ob.id];
}
protected int getId() { // 아이디 수정은 상속한 클래스에서만 사용
return id;
}
protected void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override // 원래 Object의 toString 메소드는 주소값을 나타내는데 메소드 오버라이드
public String toString() {
return "GameObject [id=" + id + ", name=" + name + "]";
}
}
Paper class
package game.oject;
// 보, 게임오브젝트 상속
public class Paper extends GameObject {
public Paper() {
setId(2);
setName("보");
}
}
Rock class
package game.oject;
// 바위, 게임오브젝트 상속
public class Rock extends GameObject {
public Rock() {
setId(1);
setName("바위");
}
}
Scissors class
package game.oject;
// 가위, 게임오브젝트 상속
public class Scissors extends GameObject {
// 가위 바위 보 0 1 2 (아이디)
public Scissors() {
setId(0); // 아이디를 0으로 설정
setName("가위");
}
}