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

+ Recent posts