JAVA day 6

lee·2021년 11월 26일
0

JAVA

목록 보기
6/14

learning

class

GitHub Repositories leeconomy1121/java-study

상속

  • 상속(Inheritance)
  • 메소드 오버라이딩(Overriding)
  • 다형성(Polymorphism)
  • 캐스팅(Casting)
  • protected 접근 지정자
    접근 지정자 테이블

가위바위보 게임

  • 가위바위보 게임 프로그래밍

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("가위");
	}
}
  • 결과
profile
Hello, world!

0개의 댓글