반응형
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 낙자
- jQuery
- Eclipse
- Linux
- eclipse github
- vscode
- sql developer
- 낙짜쌤
- GIT
- 리엑트
- 이클립스
- Spring Legacy
- #php.ini
- 윈도우10
- Github
- Visual Studio Code
- 오라클
- 노트패드
- Java
- 확장프로그램
- 낙자쌤
- 이클립스 파일인코딩
- vscode에서github연동
- #MySQL
- Windows10
- MySQL
- 한국소프트웨어인재개발원
- extension
- oracle
- musthave
Archives
- Today
- Total
자바강사 낙자쌤
JAVA로 가위바위보 게임 구현하기 본문
728x90
반응형
Java에서 변수와 자료형, 조건문, 반복문을 강의한 후 과제로 내는 가위바위보 게임이다.
해당 게임의 조건은 다음과 같다.
- 이클립스에서 작성하고, quiz 패키지에 RockPaperScissors 클래스를 생성한다.
- 프로그램을 실행하면 컴퓨터는 1~3사이의 난수를 생성한다. 가위(1) 바위(2) 보(3)
- 사용자도 1~3사이의 정수 중 하나를 입력한다.
- 승부를 판단하여 출력한다.
- 만약 1~3을 벗어난 입력값이면 잘못 입력되었다고 출력한다. (이 경우 게임횟수에 포함되지 않는다.)
- 5번 게임을 진행한 후 계속할지 물어본다.
전체 코드는 다음과 같다. 라인별로 주석을 달아두었으니 참조하길 바란다.
package quiz;
import java.util.Random;
import java.util.Scanner;
public class RockPaperScissors {
public static void rpsGameStart() {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int gameCount = 0; // 게임 카운트용 변수
while(true) {
//1. 난수생성 - 컴퓨터입장에서 가위/바위/보
int com = random.nextInt(10000) % 3 + 1;//1~3사이의 난수
System.out.println("컴퓨터:"+ com);
//2. 사용자입력
int user = 0;
System.out.println("가위바위보를 입력하세요.");
System.out.print("가위(1), 바위(2), 보(3)=>");
try {
user = scanner.nextInt();
}
catch (Exception e) {
scanner.nextLine();
e.printStackTrace();
}
//3.승부판단
//사용자가 정상적으로 입력한 경우
if(!(user<1 || user>3)) {
//가위바위보 출력용 함수를 이용해서 정보출력
System.out.printf("사용자:%s, 컴퓨터:%s ", displayRPS(user), displayRPS(com));
switch(user - com) {
case 0:
System.out.println("비겼습니다.");break;
case 1: case -2:
System.out.println("이겼습니다.");break;
case 2: case -1:
System.out.println("졌습니다.");break;
}
gameCount++;//게임카운트 증가
}
else {
System.out.println("가위바위보 할줄 몰라요?? 제대로 내세요 ㅋ");
}
//게임재시작 여부 확인
if(gameCount>=5) {
int restart;
while(true) {
System.out.print("게임재시작(1), 종료(0):");
restart = scanner.nextInt();
if(restart==0 || restart==1) {
//정상입력이면 루프탈출
break;
}
else {
System.out.println("잘못입력해씸ㅜㅜ\n");
}
}
if(restart==0) {
//게임종료를 위해 while루프 탈출
break;
}
else {
System.out.println("게임 재시작^^");
gameCount=0;
}
}
}//// end of while
}////end of rpsGameStart()
public static String displayRPS(int n) {
String str = "";
switch(n) {
case 1: str="가위";break;
case 2: str="바위";break;
case 3: str="보";break;
}
return str;
}
public static void main(String[] args) {
rpsGameStart();
}
}
소스코드 중 승부판단에 대한 부분만 간단히 설명하겠다.
가위, 바위, 보는 각각 1, 2, 3으로 설정하였다.
사용자와 컴퓨터가 제시한 숫자의 차를 구하면 다음과 같은 케이스가 나온다.
- 0 : 차가 0이라면 둘다 같은걸 냈을때이므로 비긴 경우
- 1 혹은 -2 : 사용자가 이긴 경우.
- 2 혹은 -1 : 사용자가 패배한 경우.
사용자 | 컴퓨터 | 차 | |
승리 | 가위(1) | 보(3) | -2 |
바위(2) | 가위(1) | 1 | |
보(3) | 바위(2) | 1 | |
패배 | 가위(1) | 바위(2) | -1 |
바위(2) | 보(3) | -1 | |
보(3) | 가위(1) | 2 |
만약 해당 로직이 없다면 승부판단을 위해 9번의 조건을 사용해야 한다.
끄읏~
728x90
반응형
'JAVA' 카테고리의 다른 글
Java로 야구게임(Baseball Game) 구현하기1 - 변수 사용 (1) | 2021.09.04 |
---|---|
JAVA로 업다운(Up&Down) 게임 구현하기 (0) | 2021.09.04 |
Notepad++에서 자바 컴파일과 실행 (0) | 2016.11.17 |
javac 옵션과 java 옵션 정리 (0) | 2015.12.15 |
JAVA 컴파일 및 실행방법 (0) | 2015.12.15 |