< 문제 >
가위 바위 보 게임 만들기
[결과]
가위 바위 보 게임 v1.0
1.가위 2.바위 3.보 4.종료
입력 : 1
사용자 : 1
컴퓨터 : 2
컴퓨터 승!(사용자 승! or 비겼음!)
package day08;
import java.io.*;
public class Day08_02 {
public static void main(String[] args) throws IOException{
System.out.println("===================");
System.out.println("가위 바위 보 게임 v1.0");
System.out.println("-------------------");
boolean sw = true;
while (sw) {
System.out.println("1.가위 2.바위 3.보 4.종료");
int computer = (int) (Math.random()*3+1);
int user = System.in.read()-48 ;
System.in.skip(2);
if (user == 4 ) {
System.out.println("프로그램을 종료합니다.");
System.exit(0);
}
if (user == 1 ) {
System.out.println("사용자 : 가위!");
}else if (user == 2 ) {
System.out.println("사용자 : 바위!");
}else if (user ==3 ) {
System.out.println("사용자 : 보!");
}
if (computer == 1 ) {
System.out.println("컴퓨터 : 가위!");
}else if (computer == 2) {
System.out.println("컴퓨터 : 바위!");
}else if (computer == 3) {
System.out.println("컴퓨터 : 보!");
}
if (user == computer) {
System.out.println("*가위 바위 보 결과* : 무승부!");
}else if (user==1 && computer == 3) {
System.out.println("*가위 바위 보 결과* : 사용자 승!");
}else if (user==2 && computer == 1){
System.out.println("*가위 바위 보 결과* : 사용자 승!");
}else if (user==3 && computer == 2) {
System.out.println("*가위 바위 보 결과* : 사용자 승!");
}else if (user==5){
System.out.println("잘못된 입력입니다.");
}else {
System.out.println("*가위 바위 보 결과* : 컴퓨터 승!");
}
System.out.println("다시 한번 입력해주세요.");
}
}
}
---수정본---
package day08;
import java.io.*;
public class Day08_02 {
public static void main(String[] args) throws IOException{
System.out.println("===================");
System.out.println("가위 바위 보 게임 v1.0");
System.out.println("-------------------");
boolean sw = true;
while (sw) {
System.out.println("1.가위 2.바위 3.보 4.종료");
int computer = (int) (Math.random()*3+1);
int user = System.in.read()-48 ;
System.in.skip(2);
if (user == 4 ) {
System.out.println("프로그램을 종료합니다.");
break;
}else if (!(1<=user&&user<=4)) {
System.out.println("잘못된 입력입니다.");
continue;
}
if (user == 1 ) {
System.out.println("사용자 : 가위!");
}else if (user == 2 ) {
System.out.println("사용자 : 바위!");
}else if (user ==3 ) {
System.out.println("사용자 : 보!");
}
if (computer == 1 ) {
System.out.println("컴퓨터 : 가위!");
}else if (computer == 2) {
System.out.println("컴퓨터 : 바위!");
}else if (computer == 3) {
System.out.println("컴퓨터 : 보!");
}
if (user == computer) {
System.out.println("*가위 바위 보 결과* : 무승부!");
}else if (user==1 && computer == 3) {
System.out.println("*가위 바위 보 결과* : 사용자 승!");
}else if (user==2 && computer == 1){
System.out.println("*가위 바위 보 결과* : 사용자 승!");
}else if (user==3 && computer == 2) {
System.out.println("*가위 바위 보 결과* : 사용자 승!");
}else {
System.out.println("*가위 바위 보 결과* : 컴퓨터 승!");
}
System.out.println("다시 한번 입력해주세요.");
}
}
}
--출력값--
가위 바위 보 게임 v1.0
1.가위 2.바위 3.보 4.종료
1
사용자 : 가위!
컴퓨터 : 바위!
가위 바위 보 결과 : 컴퓨터 승!
다시 한번 입력해주세요.
1.가위 2.바위 3.보 4.종료
처음에 내가 작성했을 때 , do-while문이랑 고민을 좀 했는데 do-while문으로는 해결 방법을 못찾겠다.
do-while문은 while(조건식) 조건식이 false일 때 while문 자체가 끝나서, 게임을 여러번 반복할 수 없고. 그렇다고 true면 무한반복을 해결하는 방법을 모르겠다.
그래서 while으로 바꿨는데
처음에 했던 내용은 1,2,3,4를 다 구현한 후, 5값을 넣으면 잘못된 입력입니다 라고 뜨게 해놨는데
6,7,8
~
등등등 다른 숫자를 넣었을 때도 그 문장이 나오게 해야 된다는 것을 잊고 5만 생각했다.
그리고 5를 넣으면 컴퓨터 값도 출력이 되기 때문에 완전히 잘못했다..
옆 친구랑 얘기를 나누면서 코드를 어떻게 깔끔하게 정리할까 생각해보다가,
다시 한 번 코드를 보고 실행 결과를 보니까 눈에 띄어서 수정했다.
이미 과제를 제출한 상태여서 수정본을 보내진 못했지만 이렇게라도 수정했기 때문에 다행이다.
다음에 과제가 있을 땐 코드도 좀 더 깔끔하게 작성하고
틀린 부분이 없게 확실하게 마무리 잘해야겠다.
'Java' 카테고리의 다른 글
과제 가위 바위 보 게임 다양한 방법 (switch문 , 나머지 값 활용) (0) | 2022.06.13 |
---|---|
가위바위보 게임( do-while로 만들기) (0) | 2022.06.12 |
JAVA - 예제 (While문 , Do-While문) (0) | 2022.06.09 |
JAVA - 실습 (중복for문 응용) 별찍기 비슷한 내용 + 구구단 (0) | 2022.06.09 |
JAVA - (다중 for문) (0) | 2022.06.09 |