728x90
반응형
SMALL
- 어떤 행동을 하는 것을 별도로 만들어놓은 것
main
initialize();
main_loop();
//자바는 클래스 기반으로 호출
-static
객체 생성을 하지 않고도 사용할 수 있는 keyword!!
-return type
돌려주는 값이 없다면 void !
돌려주는 값이 있으면 int, float, double, String, String[]
어떤 타입을 돌려줄 것인지 지정을 해야한다.
수업에서 매번 쓰는 main이 void type
//자바는 'public static void main(String[]' 이 고정!
-함수명
동사 + 대문자로 시작하는 명사
printScreen, getMemberVariables
-매개 변수(parameter)
함수가 외부로부터 값을 받기 위해 사용
입력값의 개수가 정해져 있을 때는 (int a, int b) 등으로 전체를 기술
입력값의 개수가 정해져 있지 않을 때 (String[] args)
-리턴값
return 값 // 돌려주는 값인 double 과 같음
void도 return을 사용할 수 있으며, 중단하고 아래 부분을 실행하지 않음
package Day04;
public class MinProject {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] str = {"a","b","c"};
int a = getArrayLength(str);
System.out.println("str element 개수는 " + a);
}
public static int getArrayLength(String[] str) {
int result = 0;
result = str.length;
return result;
}
}
//배열의 길이를 돌려주라
//결과값 str elemet 개수는 3
// 1-0. 게임시작을 알려준다.
// 1-1. 보물상자를 발견했다는 메시지를 출력하고 아무키 + 엔터를 기다린다. 색상은 옐로우
// 1-2. 보물상자에서 랜덤으로 1개의 무기를 획득한다.
// 각 무기는 무기이름, 최소데미지, 최대데미지를 가짐
String[] weapon_name = { "휴지", "목검", "대검", "대포", "에픽밸붕검"};
int[] weapon_min_dam = {1, 3, 5, 0, 50};
int[] weapon_max_dam = {3, 5, 10, 50, 100};
package Day04;
import Myutil.Colors;
import java.util.Random;
import java.util.Scanner;
/*
- 보물상자에서 무기를 5종류 중 하나 랜덤으로 획득한다.
- 길을 가다가 늑대, 산적, 드래곤 중 하나를 만난다.
- 무기를 가지고 둘 중 하나의 에너지가 0이하가 될 때까지 싸운다. (가장어려운)
- 승리 또는 패배에 따라 메시지를 출력하다.
*/
public class MinProject {
public static void main(String[] args) {
// TODO Auto-generated method stub
// System.out.println("가나다라");
String[] str = {"a","b","c"};
int a = getArrayLength(str);
System.out.println("str element 개수는 " + a);
// 1-0. 게임시작을 알려준다.
Colors.p("운명의 데스티니 게임 start");
// 1-1. 보물상자를 발견했다는 메시지를 출력하고 아무키 + 엔터를 기다린다. 색상은 옐로우
System.out.println("길을 가다가" + Colors.YELLOW + "[보물상자]" + Colors.END + "를 발견했다.");
// 1-2. 보물상자에서 랜덤으로 1개의 무기를 획득한다.
// 각 무기는 무기이름, 최소데미지, 최대데미지를 가짐
String[] weapon_name = { "휴지", "목검", "대검", "대포", "에픽밸붕검"};
int[] weapon_min_dam = {1, 3, 5, 0, 50};
int[] weapon_max_dam = {3, 5, 10, 50, 100};
Random rd = new Random();
int sel = rd.nextInt(0,5);
String my_weapon = weapon_name[sel];
int my_min_dam = weapon_min_dam[sel];
int my_max_dam = weapon_max_dam[sel];
System.out.println(my_weapon + "(" + my_min_dam + "-" + my_max_dam + ")" + "을 획득하였습니다.");
//String str1 = "3";
//int a1 = Integer.parseInt(str1);
//파이썬에서는 이렇게 쓰임
float critical_ratio = rd.nextFloat() * 100;
System.out.println("Critical Ratio : " + critical_ratio + "%");
// 2. 몬스터를 만난다.
String[] mon_name = {"늑대", "산적", "드래곤"};
int[] mon_min_dam = {1, 5, 1};
int[] mon_max_dam = {3, 10, 100};
Random rd1 = new Random();
int sel1 = rd1.nextInt(0,3);
String my_mon = mon_name[sel1];
int my_mon_min_dam = mon_min_dam[sel1];
int my_mon_max_dam = mon_max_dam[sel1];
System.out.println("당신은 길을 가다가 "+ my_mon + "을 만났습니다.");
package Day04;
import Myutil.Colors;
import java.util.Random;
import java.util.Scanner;
/*
- 보물상자에서 무기를 5종류 중 하나 랜덤으로 획득한다.
- 길을 가다가 늑대, 산적, 드래곤 중 하나를 만난다.
- 무기를 가지고 둘 중 하나의 에너지가 0이하가 될 때까지 싸운다. (가장어려운)
- 승리 또는 패배에 따라 메시지를 출력하다.
*/
public class MinProject {
public static void main(String[] args) {
// TODO Auto-generated method stub
// System.out.println("가나다라");
String[] str = {"a","b","c"};
int a = getArrayLength(str);
System.out.println("str element 개수는 " + a);
// 1-0. 게임시작을 알려준다.
Colors.p("운명의 데스티니 게임 start");
// 1-1. 보물상자를 발견했다는 메시지를 출력하고 아무키 + 엔터를 기다린다. 색상은 옐로우
System.out.println("길을 가다가" + Colors.YELLOW + "[보물상자]" + Colors.END + "를 발견했다.");
// 1-2. 보물상자에서 랜덤으로 1개의 무기를 획득한다.
// 각 무기는 무기이름, 최소데미지, 최대데미지를 가짐
String[] weapon_name = { "휴지", "목검", "대검", "대포", "에픽밸붕검"};
int[] weapon_min_dam = {1, 3, 5, 0, 50};
int[] weapon_max_dam = {3, 5, 10, 50, 100};
Random rd = new Random();
int sel = rd.nextInt(0,5);
String my_weapon = weapon_name[sel];
int my_min_dam = weapon_min_dam[sel];
int my_max_dam = weapon_max_dam[sel];
System.out.println(my_weapon + "(" + my_min_dam + "-" + my_max_dam + ")" + "을 획득하였습니다.");
//String str1 = "3";
//int a1 = Integer.parseInt(str1);
//파이썬에서는 이렇게 쓰임
float critical_ratio = rd.nextFloat() * 100;
System.out.println("Critical Ratio : " + critical_ratio + "%");
// 2. 몬스터를 만난다.
String[] mon_name = {"늑대", "산적", "드래곤"};
int[] mon_min_dam = {1, 5, 1};
int[] mon_max_dam = {3, 10, 100};
Random rd1 = new Random();
int sel1 = rd1.nextInt(0,3);
String my_mon = mon_name[sel1];
int my_mon_min_dam = mon_min_dam[sel1];
int my_mon_max_dam = mon_max_dam[sel1];
System.out.println("당신은 길을 가다가 "+ my_mon + "을 만났습니다.");
// 3-1. 전투를 시작한다. 초기 양쪽의 에너지는 100이다.
int my_energy = 100;
int mon_energy = 100;
// 3-2. 무한루프로 전투를 한다. 둘 중 하나의 에너지가 0이하가 되면 탈출
// 유저는 1. 공격 또는 2. 회복을 선택한다.
// 공격인 경우는 최소-최대 데미지로 공격, 회복은 0~30사이의 에너지가 회복된다.
// 몬스터는 공격만 하며, 유저와 한 번씩 교대로 행동한다.
int user_input;
int damage;
while(true) {
// 유저입력
//유저입력(무용서 버전)
//Scanner sc = new Scanner(System.in);
//System.out.println("행동을 입력하십시오(1.공격, 2.회복) :");
//user_input = sc.nextInt();
//유저입력(무용서 버전)
while(true) {
Scanner sc = new Scanner(System.in);
System.out.println("행동을 입력하십시오(1.공격, 2.회복) :");
user_input = sc.nextInt();
if(user_input == 1 || user_input == 2) break;
}
// 공격
if(user_input == 1) {
damage = cal_damage(my_min_dam, my_max_dam, critical_ratio);
mon_energy -= damage;
if(mon_energy < 0 ) mon_energy = 0;
// 데미지를 입혔다는 메시지와 남은 에너지를 출력한다.
System.out.println("당신의 공격으로 " + my_mon + "에게 " + damage + "의 피해를 입혔습니다.");
System.out.println("당신의 에너지 " + my_energy + " ");
//몬스터의 에너지가 0이면 탈출한다.
if(mon_energy == 0 ) break;
}
// 회복
else if(user_input == 2){
}
//몬스터 공격
}
}
public static int getArrayLength(String[] str) {
int result = 0;
result = str.length;
return result;
}
public static int cal_damage(int min_dam, int max_dam, float cri_ratio) {
// min - max 사이의 데미지를 랜덤하게 획득
Random rd = new Random();
int base_dam = rd.nextInt(min_dam, max_dam +1);
int final_dam = base_dam;
// 크리티컬율에 따라 1.5배 적용 여부 결정
if(rd.nextFloat() * 100 <= cri_ratio ) {
final_dam *= 1.5;
}
return final_dam;
}
}
문제!!
에너지칸 만들기
유저 20칸 한칸 띄고 (for문)몬스터 20칸
ex) 유저 10칸 빈칸 11칸 몬스터 n칸
에너지 >30초
빨간색
package Day04;
import Myutil.Colors;
import java.util.Random;
import java.util.Scanner;
/*
- 보물상자에서 무기를 5종류 중 하나 랜덤으로 획득한다.
- 길을 가다가 늑대, 산적, 드래곤 중 하나를 만난다.
- 무기를 가지고 둘 중 하나의 에너지가 0이하가 될 때까지 싸운다. (가장어려운)
- 승리 또는 패배에 따라 메시지를 출력하다.
*/
public class MinProject {
public static void main(String[] args) {
// TODO Auto-generated method stub
// System.out.println("가나다라");
String[] str = {"a","b","c"};
int a = getArrayLength(str);
System.out.println("str element 개수는 " + a);
// 1-0. 게임시작을 알려준다.
Colors.p("운명의 데스티니 게임 start");
// 1-1. 보물상자를 발견했다는 메시지를 출력하고 아무키 + 엔터를 기다린다. 색상은 옐로우
System.out.println("길을 가다가" + Colors.YELLOW + "[보물상자]" + Colors.END + "를 발견했다.");
// 1-2. 보물상자에서 랜덤으로 1개의 무기를 획득한다.
// 각 무기는 무기이름, 최소데미지, 최대데미지를 가짐
String[] weapon_name = { "휴지", "목검", "대검", "대포", "에픽밸붕검"};
int[] weapon_min_dam = {1, 3, 5, 0, 50};
int[] weapon_max_dam = {3, 5, 10, 50, 100};
Random rd = new Random();
int sel = rd.nextInt(0,5); //아무상자도 선택하지 않을 수 잇고, 최대 5개까지 선택가능하기에 0,5입력!
String my_weapon = weapon_name[sel];
int my_min_dam = weapon_min_dam[sel];
int my_max_dam = weapon_max_dam[sel];
System.out.println(my_weapon + "(" + my_min_dam + "-" + my_max_dam + ")" + "을 획득하였습니다.");
//String str1 = "3";
//int a1 = Integer.parseInt(str1);
//파이썬에서는 이렇게 쓰임
float critical_ratio = rd.nextFloat() * 100;
System.out.println("Critical Ratio : " + critical_ratio + "%");
// 2. 몬스터를 만난다.
String[] mon_name = {"늑대", "산적", "드래곤"};
int[] mon_min_dam = {1, 5, 1};
int[] mon_max_dam = {3, 10, 100};
Random rd1 = new Random();
int sel1 = rd1.nextInt(0,3);
String my_mon = mon_name[sel1];
int my_mon_min_dam = mon_min_dam[sel1];
int my_mon_max_dam = mon_max_dam[sel1];
System.out.println("당신은 길을 가다가 "+ my_mon + "을 만났습니다.");
// 3-1. 전투를 시작한다. 초기 양쪽의 에너지는 100이다.
int my_energy = 100;
int mon_energy = 100;
// 3-2. 무한루프로 전투를 한다. 둘 중 하나의 에너지가 0이하가 되면 탈출
// 유저는 1. 공격 또는 2. 회복을 선택한다.
// 공격인 경우는 최소-최대 데미지로 공격, 회복은 0~30사이의 에너지가 회복된다.
// 몬스터는 공격만 하며, 유저와 한 번씩 교대로 행동한다.
int user_input;
int damage;
while(true) {
// 유저입력
//유저입력(무용서 버전)
//Scanner sc = new Scanner(System.in);
//System.out.println("행동을 입력하십시오(1.공격, 2.회복) :");
//user_input = sc.nextInt();
//유저입력(용서 버전)
while(true) {
Scanner sc = new Scanner(System.in);
System.out.println("행동을 입력하십시오(1.공격, 2.회복) :");
user_input = sc.nextInt();
if(user_input == 1 || user_input == 2) break;
}
// 공격
if(user_input == 1) {
damage = cal_damage(my_min_dam, my_max_dam, critical_ratio);
mon_energy -= damage;
if(mon_energy < 0 ) mon_energy = 0;
// 데미지를 입혔다는 메시지와 남은 에너지를 출력한다.
System.out.println("당신의 공격으로 " + my_mon + "에게 " + damage + "의 피해를 입혔습니다.");
System.out.println("당신의 에너지 " + my_energy + " ");
printEnergy(my_energy, mon_energy);
// 몬스터의 에너지가 0이면 탈출한다.
if(mon_energy == 0 ) break;
}
// 회복
else if(user_input == 2){
int heal = rd.nextInt(0, 31);
my_energy += heal;
if(my_energy > 100) my_energy = 100;
System.out.println(heal + "의 에너지가 회복되어" + my_energy + "가 되었습니다.");
printEnergy(my_energy, mon_energy);
}
//몬스터 공격
damage = cal_damage(my_mon_min_dam, my_mon_max_dam, 0);
my_energy -= damage;
if(my_energy <0) my_energy = 0;
System.out.println(my_mon + "의 공격으로 " + damage + "의 피해를 입었습니다.");
System.out.println("당신의 에너지 " + my_energy + "의 피해를 입었습니다." + my_mon
+ "의 에너지" + mon_energy );
printEnergy(my_energy, mon_energy);
if(my_energy == 0) break;
}
printReslt(my_energy);
}
public static int getArrayLength(String[] str) {
int result = 0;
result = str.length;
return result;
}
public static int cal_damage(int min_dam, int max_dam, float cri_ratio) {
// min - max 사이의 데미지를 랜덤하게 획득
Random rd = new Random();
int base_dam = rd.nextInt(min_dam, max_dam +1);
int final_dam = base_dam;
// 크리티컬율에 따라 1.5배 적용 여부 결정
if(rd.nextFloat() * 100 <= cri_ratio ) {
final_dam *= 1.5;}
return final_dam;
}
public static void printReslt(int my_energy) {
if(my_energy == 0) { //패배
System.out.println("몬스터가 말했습니다. \\\\"상대도 안되네 ㅋㅋㅋㅋ\\\\"");
System.out.println("내 명품가방을 가져갔습니다.");
}
else { // 승리
System.out.println("\\\\"당신 정말 강하군.\\\\" 몬스터가 말했습니다.");
System.out.println("하지만 암흑대륙에는 나보다 강한 자가 2314명 더 있다.");
}
}
public static void printEnergy(int my_energy, int mon_energy) {
if(my_energy > 30 ) {
System.out.print(Colors.GREENBG); }
else {
System.out.print(Colors.REDBG);
}
for(int i=0; i<my_energy/5;i++) {
System.out.print(" ");
}
System.out.print(Colors.END);
for(int i=0;i<(21-my_energy/5);i++)
System.out.print(" ");
if(mon_energy > 30 ) {
System.out.print(Colors.GREENBG);
}
else {
System.out.print(Colors.REDBG);
}
for(int i=0; i<mon_energy/5;i++) {
System.out.print(" ");
}
System.out.print(Colors.END);
System.out.println();
}
}
728x90
반응형
LIST
'개발 > JAVA' 카테고리의 다른 글
상속 (0) | 2023.01.09 |
---|---|
클래스 심화 (0) | 2023.01.09 |
Colors (추후 수정 필요 !) (0) | 2023.01.09 |
배열 (Array) (0) | 2023.01.09 |
제어문(Control Statement) (0) | 2023.01.09 |