본문 바로가기

JAVA/기초 프로그래밍

객체//베팅게임

/*
두개의 주사위 합을 맞히는 게임 제작
코인: 20개
합을 맞추면 제시한 숫자에 따라서 배당금이 달라집니다.
2, 12 : 제시할 수없음
3, 11 : 18 배
4, 10 : 12 배
5, 9 : 9 배
6, 8 : 7 배
7 : 6 배
배팅할 코인 수는? -------> 입력
두 주사위의 합은? -------> 입력 2, 12를 입력하면 다시 입력
두 주사위의 합은? -------> 6
주사위 번호 출력
결과 출력
 */

 

 

 

 

 

main

1. GamePlay gp = new GamePlay();
gp.gamePlay();
2. (new GamePlay()).gamePlay();
3. new GamePlay();

 

->1,2,3번은 다 클래스를 불러올 수 있는 객체생성및 클래스 호출 방법이다.

Ex)

	public static void main(String[] args) {
		
	//	GamePlay gp = new GamePlay();		
	//	gp.gamePlay();
		
	//	(new GamePlay()).gamePlay();
		
		new GamePlay();
	}

 

단, 3번은 GamePlay클래스에 아래와 같은추가셋팅 필요.

	public GamePlay() {
		gamePlay();
	}

 

 

 


 

 

 

** 일부러 class를 두개 만들었다.

Dice는 두개이고 class1에서 number 변수 하나에 셋팅해주고 getter메소드만 만들어서 

class2에서 

기본셋팅에서 객체생성해주고

Dice dice1 = new Dice();
Dice dice2 = new Dice();

 

init()메소드에서

dice1.diceRamdom();
dice2.diceRamdom();

위와 같이 dice1,dice2를 셋팅해준 후

 

finding()메소드에서

int d_num1 = dice1.getNumber();
int d_num2 = dice2.getNumber();

int diceSum = d_num1 + d_num2;

이렇게 사용했다.

 

 

 

class1

public class Dice {

	private int number;
	
	public void diceRamdom() {
		number = (int)(Math.random() * 6) + 1;	// 1 ~ 6
	}

	public int getNumber() {
		return number;
	}
	
	
}

 

 

 

 


 

기본선언에서 변수를 다 private 로 설정.

gamePlay()메소드에 기존 메소드들을 묶어 main class 외부노출이 적도록 함

class2

public class GamePlay {
	private int coin;
	private int batting;
	private int inputNumber;
	
	Dice dice1 = new Dice();
	Dice dice2 = new Dice();
	
	public void init() {
		coin = 20;
		dice1.diceRamdom();
		dice2.diceRamdom();
		
		System.out.println("주사위1:" + dice1.getNumber());
		System.out.println("주사위2:" + dice2.getNumber());
	}
	
	public void userInput() {
		Scanner sc = new Scanner(System.in);
		
		// 베팅금액
		System.out.print("batting money = ");
		batting = sc.nextInt();
		
		coin = coin - batting;
		
		System.out.print("두개의 주사위의 합 = ");
		inputNumber = sc.nextInt();		
	}
	
	public void finding() {
		int d_num1 = dice1.getNumber();
		int d_num2 = dice2.getNumber();
		
		int diceSum = d_num1 + d_num2;
		
		if(inputNumber == diceSum) {
			if(diceSum == 3 || diceSum == 11) {
				batting = batting * 18;
			}
			else if(diceSum == 4 || diceSum == 10) {
				batting = batting * 12;
			}
			else if(diceSum == 5 || diceSum == 9) {
				batting = batting * 9;
			}
			else if(diceSum == 6 || diceSum == 8) {
				batting = batting * 7;
			}
			else if(diceSum == 7) {
				batting = batting * 6;
			}
			
			System.out.println("축하합니다");
			coin = coin + batting;
		}
		else {
			System.out.println("아쉽습니다. 다시 도전하십시오.");
		}
		
	}
	
	public void result() {
		System.out.println("주사위1 : " + dice1.getNumber());
		System.out.println("주사위2 : " + dice2.getNumber());
		
		System.out.println("합계 : " + (dice1.getNumber() + dice2.getNumber()));
		System.out.println("현재 Coin : " + coin);
	}
	
	public void gamePlay() {
		init();
		userInput();
		finding();
		result();
	}
	

'JAVA > 기초 프로그래밍' 카테고리의 다른 글

야구선수 등록 프로그램(Me)  (0) 2020.06.05
Calendar 캘린더 Class  (0) 2020.06.03
객체//tv프로그램  (0) 2020.06.02
객체//모래게임  (0) 2020.06.02
함수// 학생 성적 입출력 프로그램  (0) 2020.06.01