From b00238a383b62d380e20a75fcf68d2645e25fd41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A3=BC=EC=95=A0?= Date: Thu, 18 Apr 2024 16:41:20 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EC=B4=88=EA=B8=B0=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=EB=B0=9B=EB=8A=94=20=ED=95=A8=EC=88=98=EC=99=80,=20?= =?UTF-8?q?=EA=B2=8C=EC=9E=84=20=EC=A2=85=EB=A5=98,=20=EB=9E=9C=EB=8D=A4?= =?UTF-8?q?=20=EB=AC=B8=EC=9E=90,=20=EC=88=AB=EC=9E=90=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1,=20=EC=95=84=EC=8A=A4=ED=82=A4=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EA=B0=92=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95=ED=95=B4?= =?UTF-8?q?=EC=A3=BC=EB=8A=94=20=ED=95=A8=EC=88=98=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/leets/land/UpdownApplication.java | 83 ++++++++++++++++++- 1 file changed, 81 insertions(+), 2 deletions(-) diff --git a/src/main/java/leets/land/UpdownApplication.java b/src/main/java/leets/land/UpdownApplication.java index 09d7ae5..d86eeeb 100644 --- a/src/main/java/leets/land/UpdownApplication.java +++ b/src/main/java/leets/land/UpdownApplication.java @@ -1,8 +1,87 @@ package leets.land; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; + public class UpdownApplication { + public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + + public static void main(String[] args) throws Exception { + // 입력: 숫자 또는 영어 + // 사용자가 입력하는 숫자, 영어등을 계속 입력 + // 정답을 맞추게 되면 정답! 메시지를 출력하고 시도한 횟수도 출력 + int ver = 0; // 버전 저장 + + bw.write("업다운 게임을 시작합니다.\n\n"); + + bw.write("버전을 입력해주세요 (숫자 버전: 1, 영어 버전: 2) : "); + ver = br.read(); + + //숫자 게임 진행 + if(ver == 1){ + + bw.write("숫자를 입력해주세요(1 ~ 100) : "); + int num = br.read(); + + // 초기에 입력한 숫자값과 랜덤 숫자값을 넣어줌. + numGame(num, randNum(), 1); + + } else if(ver == 2){ //영어게임 진행 + + bw.write("영어를 입력해주세요(A ~ z) : "); + char c = (char)br.read(); + + // 초기에 입력한 단어값과 랜덤 단어값을 넣어줌. + engGame(ChartoASCII(c), randChar(), 1); + + } else throw new IllegalArgumentException("[ERROR] 존재하지 않는 버전입니다."); + + + + /* error + + [ERROR] 범위 내의 숫자를 입력하세요. + [ERROR] 범위 내의 알파벳을 입력하세요. + [ERROR] 입력 문자의 타입이 맞지 않습니다. + */ + + br.close(); + bw.flush(); + bw.close(); + } + + public static int numGame(int num, int target, int cnt) { + + // 시도한 횟수 + return 0; + } + + public static int engGame(int c, int target, int cnt){ + + // 시도한 횟수 + return 0; + } + + // 난수 생성 + public static int randNum(){ + return ((int) (Math.random()*100)); + } + + // 랜덤 영어문자 생성 + public static int randChar(){ + return ((int)(Math.random()*52)+65); + } + + // 아스키코드값을 단어로 바꿔주는 코드 + public static char ASCIItoChar(int c){ + return (char) c; + } - public static void main(String[] args) { - System.out.print("hihi :D"); + // 단어를 아스키 코드값으로 바꿔주는 코드 + public static char ChartoASCII(int c){ + return (char) c; } } From 8227d2424d986e696ac4fd4394a21617eb5a3d1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A3=BC=EC=95=A0?= Date: Thu, 18 Apr 2024 17:29:14 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=EC=9A=94=EA=B5=AC=EC=A1=B0?= =?UTF-8?q?=EA=B1=B4=20=EB=A7=9E=EC=B6=94=EC=96=B4=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/leets/land/UpdownApplication.java | 121 ++++++++++++------ 1 file changed, 80 insertions(+), 41 deletions(-) diff --git a/src/main/java/leets/land/UpdownApplication.java b/src/main/java/leets/land/UpdownApplication.java index d86eeeb..8310ef2 100644 --- a/src/main/java/leets/land/UpdownApplication.java +++ b/src/main/java/leets/land/UpdownApplication.java @@ -4,16 +4,21 @@ import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; +import java.util.regex.Pattern; public class UpdownApplication { public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + // 난수 + public static int randNum = (int)(Math.random()*100); + + // 랜덤 단어 + public static int randChar = (int)(Math.random()*52)+65; + public static void main(String[] args) throws Exception { - // 입력: 숫자 또는 영어 - // 사용자가 입력하는 숫자, 영어등을 계속 입력 - // 정답을 맞추게 되면 정답! 메시지를 출력하고 시도한 횟수도 출력 int ver = 0; // 버전 저장 + int cnt = 1; // 시도횟수 저장 bw.write("업다운 게임을 시작합니다.\n\n"); @@ -26,62 +31,96 @@ public static void main(String[] args) throws Exception { bw.write("숫자를 입력해주세요(1 ~ 100) : "); int num = br.read(); - // 초기에 입력한 숫자값과 랜덤 숫자값을 넣어줌. - numGame(num, randNum(), 1); + if (Pattern.matches("^(?:[1-9][0-9]?|100)$", String.valueOf(num))) { + // 초기에 입력한 숫자값과 랜덤 숫자값을 넣어줌. + cnt = numGame(num, 100, 1, cnt); + } else { + throw new IllegalArgumentException("[ERROR] 입력 문자의 타입이 맞지 않습니다."); + } } else if(ver == 2){ //영어게임 진행 bw.write("영어를 입력해주세요(A ~ z) : "); - char c = (char)br.read(); - - // 초기에 입력한 단어값과 랜덤 단어값을 넣어줌. - engGame(ChartoASCII(c), randChar(), 1); - - } else throw new IllegalArgumentException("[ERROR] 존재하지 않는 버전입니다."); + int c = (char)br.read(); + if (Pattern.matches("^[A-Za-z]+$", String.valueOf(c))) { + // 초기에 입력한 숫자값과 랜덤 숫자값을 넣어줌. + cnt = numGame(c, 100, 1, cnt); + } else { + throw new IllegalArgumentException("[ERROR] 입력 문자의 타입이 맞지 않습니다."); + } + // 초기에 입력한 단어값과 랜덤 단어값을 넣어줌. + cnt = engGame(c, 65, 122, cnt); - /* error + } else // 에러슈팅 + throw new IllegalArgumentException("[ERROR] 존재하지 않는 버전입니다."); - [ERROR] 범위 내의 숫자를 입력하세요. - [ERROR] 범위 내의 알파벳을 입력하세요. - [ERROR] 입력 문자의 타입이 맞지 않습니다. - */ + bw.write("시도한 횟수 : " + cnt); br.close(); bw.flush(); bw.close(); } - public static int numGame(int num, int target, int cnt) { - - // 시도한 횟수 - return 0; - } - - public static int engGame(int c, int target, int cnt){ - - // 시도한 횟수 - return 0; - } + public static int numGame(int num, int max, int min, int cnt) throws Exception { + if(num > max || num < min){ + bw.write("[ERROR] 범위 내의 숫자를 입력하세요."); + numGame(num, max, min, cnt++); + } + + if(num < randNum){ + bw.write("UP"); + min = num; + } else if (num > randNum) { + bw.write("DOWN"); + max = num; + } else if (num == randNum) { + bw.write("정답!"); + return cnt; + } + + bw.write("숫자를 입력해주세요(" + min + " ~ " + max + ") : "); + num = br.read(); + + if (Pattern.matches("^(?:[1-9][0-9]?|100)$", String.valueOf(num))) { + // 초기에 입력한 숫자값과 랜덤 숫자값을 넣어줌. + cnt = numGame(num, 100, 1, cnt); + } else { + throw new IllegalArgumentException("[ERROR] 입력 문자의 타입이 맞지 않습니다."); + } - // 난수 생성 - public static int randNum(){ - return ((int) (Math.random()*100)); + return numGame(num, max, min, cnt++); } - // 랜덤 영어문자 생성 - public static int randChar(){ - return ((int)(Math.random()*52)+65); - } + public static int engGame(int c, int max, int min, int cnt) throws Exception{ + if(c > max || c < min){ + bw.write("[ERROR] 범위 내의 알파벳을 입력하세요."); + return engGame(c, max, min, cnt++); + } + + if(c < randChar){ + bw.write("UP"); + min = c; + } else if (c > randChar) { + bw.write("DOWN"); + max = c; + } else if (c == randChar) { + bw.write("정답!"); + return cnt; + } + + bw.write("영어를 입력해주세요(" + min + " ~ " + max + ") : "); + c = (char)br.read(); + + if (Pattern.matches("^[A-Za-z]+$", String.valueOf(c))) { + // 초기에 입력한 숫자값과 랜덤 숫자값을 넣어줌. + cnt = numGame(c, 100, 1, cnt); + } else { + throw new IllegalArgumentException("[ERROR] 입력 문자의 타입이 맞지 않습니다."); + } - // 아스키코드값을 단어로 바꿔주는 코드 - public static char ASCIItoChar(int c){ - return (char) c; + return engGame(c, max, min, cnt++); } - // 단어를 아스키 코드값으로 바꿔주는 코드 - public static char ChartoASCII(int c){ - return (char) c; - } }