728x90
👾 [블리자드]에서 보내준 프로그래밍 요청서
✏️ [TRPG 프로그램 기능] 본 프로그램은 아래와 같이 네 가지 기능 을 추가해 주세요.
- 나의 유닛과 상대 유닛의 정보를 직접 입력할 수 있도록 해주세요.
- 입력된 정보는 출력하여 확인할 수 있도록 해주세요.
- 공격 기능은 꼭 넣어주세요.
- 체력이 0 이하로 떨어지면 게임이 종료되도록 해주세요.
💡 추가해야 할 기능
- 공격할 유닛 선택 ( 나 / 상대 )
- 무기 선택 ( 현재의 Damage = 나의 공격력 / 상대 방어력인데 무기 별로 다르게 설정 )
- 공격을 다시 할건지 선택
- 상대 유닛 체력이 0인 경우 게임 진행 여부 선택 ( 계속할 경우 상대 유닛 정보 입력부터 다시 시작 )
- 내 체력이 0인 경우 게임 진행 여부 선택 ( 계속할 경우 내 체력 = 입력한 처음의 체력 )
V1. 기본 기능만 구현
import java.io.IOException;
public class LOL_Program {
public static void main(String[] args) throws IOException {
System.out.println("[안내] TRPG 스타크래프트 시작합니다.");
System.out.println("[안내] 자신의 유닛 정보를 입력해 주세요.");
LoL_char me = new LoL_char();
String[] me_info = me.user_create();
me.user_print(me_info);
int[] me_info_int = me.user_info_int(me_info);
System.out.println("[안내] 상대 유닛 정보를 입력해 주세요.");
LoL_char enemy = new LoL_char();
String[] enemy_info = enemy.user_create();
enemy.user_print(enemy_info);
int[] enemy_info_int = enemy.user_info_int(enemy_info);
me.attack(me_info_int, enemy_info_int);
}
}
---------------------------------------------------------------------------------------
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
/**
* @LoL_char() : 게임정보를 담는 클래스
* @name : 유닛의 이름
* @ad : 유닛의 공격력
* @def : 유닛의 방어력
* @hp : 유닛의 체력
* */
class LoL_char {
//TODO:
// 사용자의 입력을 받기위한 객체 생성을 진행합니다.
String name, ad, def, hp;
// 게임에 필요한 변수 타입을 사전 정의합니다.
/**
* @user_info : 생성된 유닛의 정보를 담는 메서드
* @this : 해당 메서드가 입력받은 변수들은 this 를
* */
void user_info(String name, String ad, String def, String hp) {
this.name = name;
this.ad = ad;
this.def = def;
this.hp = hp;
}
/**
* @user_create() : 유닛을 생성하는 메서드이며, 입력된 값은 user_info() 메서드에게 전달 및 반환 처리합니다.
* 반환된 값은 시스템 정보창에 출력되도록 합니다.
* */
String[] user_create() throws IOException {
//TODO:
//입력 메시지와 함께, 게임에 필요한 유닛의 정보를 입력받습니다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] user = new String[4];
System.out.print("[시스템] 유닛 [이름] 을 입력해 주세요 : ");
user[0] = br.readLine();
System.out.print("[시스템] 유닛 [공격력] 을 입력해 주세요 : ");
user[1] = br.readLine();
System.out.print("[시스템] 유닛 [방어력] 을 입력해 주세요 : ");
user[2] = br.readLine();
System.out.print("[시스템] 유닛 [체력] 을 입력해 주세요 : ");
user[3] = br.readLine();
// 입력된 값은 user_info()에 전달하여 줍니다.
user_info(user[0], user[1], user[2], user[3]);
// 유저마다의 객체 생성을 위해 반환 과정 또한 정의하여 줍니다.
return user;
}
/**
* @user_print() : 입력된 배열을 통해 유닛 정보 출력
* */
void user_print(String[] user) {
System.out.println();
System.out.println("[안내] 생성된 유닛 정보는 다음과 같습니다. ");
System.out.println("[안내] "+user[0]+" 유닛이 게임에 참여하였습니다.");
System.out.println("[공격력] : "+user[1]);
System.out.println("[방어력] : "+user[2]);
System.out.println("[체력] : "+user[3]);
System.out.println("=".repeat(35));
}
/**
* @user_info_int() : 공격력과 방어력 등을 고려해 체력 감소를 위해 문자열을 정수형태로 전환합니다.
*/
int[] user_info_int(String[] info) {
//TODO:
// 같은 형식의 반환을 위해 배열 선언
// 배열의 값을 하나씩 꺼내 정수형태로 전환합니다.
int[] info_int = new int[3];
info_int[0] = Integer.parseInt(info[1]);
info_int[1] = Integer.parseInt(info[2]);
info_int[2] = Integer.parseInt(info[3]);
return info_int;
}
/**
* @attack() : 공격을 수행하는 메서드
* 아군 유닛 정보와 상대의 정보를 입력받습니다.
* */
void attack(int[] me_info_int, int[] enemy) {
// 조건 1. 적군의 체력이 0 이하면 [유닛 제거] 가 됩니다.
// 조건 2. 적군 체력이 0 이하가 아니라면 공격을 성공적으로 수행합니다.
// 공격 정책 수식 : 적군 체력 -= 아군 유닛 공격력 / 적군 유닛 방어력
int damage = me_info_int[0] / enemy[1];
while(enemy[2]>0) {
System.out.println("-".repeat(35));
System.out.println("[안내] ["+this.name+"] 유닛이 [공격]하였습니다.");
enemy[2] = enemy[2]-damage;
if(enemy[2]<0) enemy[2] = 0;
System.out.println("[안내] 상대 유닛의 남은 [체력]은 "+enemy[2]+" 입니다.");
if(enemy[2]<=0) {
System.out.println("[안내] 더 이상 공격할 수 없습니다.");
System.out.println();
System.out.println("[안내] 상대 유닛이 제거되었습니다.");
break;
}
}
}
}
결과
[안내] TRPG 스타크래프트 시작합니다.
[안내] 자신의 유닛 정보를 입력해 주세요.
[시스템] 유닛 [이름] 을 입력해 주세요 : 조하얀
[시스템] 유닛 [공격력] 을 입력해 주세요 : 500
[시스템] 유닛 [방어력] 을 입력해 주세요 : 100
[시스템] 유닛 [체력] 을 입력해 주세요 : 50
[안내] 생성된 유닛 정보는 다음과 같습니다.
[안내] 조하얀 유닛이 게임에 참여하였습니다.
[공격력] : 500
[방어력] : 100
[체력] : 50
===================================
[안내] 상대 유닛 정보를 입력해 주세요.
[시스템] 유닛 [이름] 을 입력해 주세요 : 문지원
[시스템] 유닛 [공격력] 을 입력해 주세요 : 400
[시스템] 유닛 [방어력] 을 입력해 주세요 : 120
[시스템] 유닛 [체력] 을 입력해 주세요 : 30
[안내] 생성된 유닛 정보는 다음과 같습니다.
[안내] 문지원 유닛이 게임에 참여하였습니다.
[공격력] : 400
[방어력] : 120
[체력] : 30
===================================
-----------------------------------
[안내] [조하얀] 유닛이 [공격]하였습니다.
[안내] 상대 유닛의 남은 [체력]은 26 입니다.
-----------------------------------
[안내] [조하얀] 유닛이 [공격]하였습니다.
[안내] 상대 유닛의 남은 [체력]은 22 입니다.
-----------------------------------
[안내] [조하얀] 유닛이 [공격]하였습니다.
[안내] 상대 유닛의 남은 [체력]은 18 입니다.
-----------------------------------
[안내] [조하얀] 유닛이 [공격]하였습니다.
[안내] 상대 유닛의 남은 [체력]은 14 입니다.
-----------------------------------
[안내] [조하얀] 유닛이 [공격]하였습니다.
[안내] 상대 유닛의 남은 [체력]은 10 입니다.
-----------------------------------
[안내] [조하얀] 유닛이 [공격]하였습니다.
[안내] 상대 유닛의 남은 [체력]은 6 입니다.
-----------------------------------
[안내] [조하얀] 유닛이 [공격]하였습니다.
[안내] 상대 유닛의 남은 [체력]은 2 입니다.
-----------------------------------
[안내] [조하얀] 유닛이 [공격]하였습니다.
[안내] 상대 유닛의 남은 [체력]은 -2 입니다.
[안내] 더 이상 공격할 수 없습니다.
[안내] 상대 유닛이 제거되었습니다.
728x90
반응형
'CodeStates_BE_44 > 과제' 카테고리의 다른 글
편의점 발주 프로그램 만들기 (0) | 2023.02.23 |
---|---|
피보나치 수열 프로그램 만들기 (0) | 2023.02.23 |
자막 순화 프로그램 만들기 (0) | 2023.02.22 |
구구단 프로그램 만들기 (0) | 2023.02.22 |
전기 요금 계산기 만들기 (0) | 2023.02.22 |