문제
5번의 가위바위보 게임을 해서 승리한 횟수 상당의 상품을 받아가는 게임을 만들어보자.
1. 5번의 가위바위보를 진행합니다.
2. 유저는 매 판마다 “가위”, “바위”, “보” 중 하나를 입력합니다. 잘못된 입력을 받았다면 잘못된 입력입니다! 를 출력해주세요.
3. 컴퓨터는 가위 , 바위, 보 중 랜덤하게 하나를 낼 수 있습니다.
4. 매판마다 진행한 가위 바위 보의 승패에 대한 결과를 출력됩니다.
5. 5판을 모두 마치면 승리한 횟수에 걸맞는 경품을 획득할 수 있습니다.
실행예시
import java.util.Map;
import java.util.Random;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;
import java.util.List;
public class Main {
private String[] rcp = {"가위","바위","보"};
public String Randompick() {
//랜덤 객체 생성
Random random =new Random();
//rcp에 있는 배열 인덱스를 랜덤으로 선정
String computerPick = rcp[random.nextInt(rcp.length)];
return computerPick;
}
public static void main(String[] args) {
Main randompickeditor = new Main();
int chance = 5;
int win = 0;
//리스트 메소니 contain을 이용해 해당값 유무확인을 위한 배열->리스트 전환
List<String>rcpList = Arrays.asList(randompickeditor.rcp);
//Map 함수를 통해 <키,값> 선정
Map<Integer,String> gifts =new HashMap<Integer,String>();
gifts.put(0, "꽝");
gifts.put(1, "곰돌이 인형");
gifts.put(2, "스파르타 랜드 입장권");
gifts.put(3, "스파르타 캐니언 항공 투어권");
gifts.put(4, "호텔 스파르타 숙박권");
gifts.put(5, "스파르테이트 항공권");
Scanner sc=new Scanner(System.in);
while(chance>0) {
System.out.println("가위 바위 보 중 하나를 입력해주세요!");
String userChoice = sc.nextLine();
String compick = randompickeditor.Randompick();
//리스트에 해당하는 값을 입력했는지 확인
if(!rcpList.contains(userChoice))
{
System.out.println("잘못된 입력입니다.");
continue;
}
//가위바위보 알고리즘
if(userChoice.equals("가위")) {
if(compick.equals("바위"))
{
System.out.println("당신은 가위 상대는 바위로 졌습니다.");
}
else if(compick.equals("보"))
{
System.out.println("당신은 가위 상대는 보로 이겼습니다.");
win++;
}
else {
System.out.println("당신은 가위 상대도 가위로 비겼습니다.");
}
}
if(userChoice.equals("바위")) {
if(compick.equals("가위"))
{
System.out.println("당신은 바위 상대는 가위로 이습니다.");
win++;
}
else if(compick.equals("보"))
{
System.out.println("당신은 바위 상대는 보로 졌습니다.");
}
else {
System.out.println("당신은 바위 상대도 보로 비겼습니다.");
}
}
if(userChoice.equals("보")) {
if(compick.equals("바위"))
{
System.out.println("당신은 보 상대는 바위로 이겼습니다.");
win++;
}
else if(compick.equals("가위"))
{
System.out.println("당신은 보 상대는 가위로 졌습니다.");
}
else {
System.out.println("당신은 보 상대도 보로 비겼습니다.");
}
}
//기회 차감
chance--;
//기회가 다 소모되면 승리별로 상품확인
if(chance==0) {
System.out.println("축하합니다. 총 "+ win +" 회 승리하여 경품으로"+gifts.get(win)+"을 획득하셨습니다.!");
}
}
}
}
✒️ 회고
- 단순하게 if문을 사용하여 코딩하였기 때문에 생각보다 코드가 길다고 생각했다. 나중엔 가위바위보 알고리즘에 대해 공부하여 간단하게 만들어보고 싶다.
- 배열을 List로 변형하여 주요 메소드들을 사용할 수 있는 방법이 자주 사용될 거 같다. 이 부분은 더 실습을 통해 숙지 해야겠다.
'코딩테스트 > Java' 카테고리의 다른 글
[Java]정수 제곱근 판별(Math함수) (0) | 2025.03.04 |
---|---|
[Java]자연수 뒤집어 배열로 만들기(valueOf()사용) (0) | 2025.03.04 |
[Java]Lv3. 단어 맞추기 게임 (1) | 2025.02.10 |
[Java]Lv2. 스파르타 자판기 (0) | 2025.02.07 |
[Java]Lv1. 랜덤 닉네임 생성기 (0) | 2025.02.06 |