728x90
반응형
SMALL

String str1 = “abcde”

String str2 = “abcde”

str1 == str2;

 

public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "abcde";
String str2 = "abcde";
System.out.println(str1 == str2);

package Day06;

public class StringTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "abcde";
String str2 = "abcde";
System.out.println(str1 == str2);

	String str3 = new String("abcde");
	String str4 = new String("abcde");
	System.out.println(str3 == str4);

	}

}

true
false

//new가 붙지 않을경우 같은 내용으로 본다.
//new가 붙었다면, 동명이인을 생각하면 편하다.
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "abcde";
String str2 = "abcde";
System.out.println(str1 == str2);

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			String str1 = "abcde";
			String str2 = "abcde";
			System.out.println(str1 == str2);
	
package Day06;

	public class StringTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str1 = "abcde";
		String str2 = "abcde";
			System.out.println(str1 == str2);

	str2 = "abcdef"; //전혀 다른 곳에 abcdef를 새로 만든다면 기존의 str2 abcde는 버려진다. //StringBuffer String의 단점을 보완하기 위한것
	str2 = "ddddd";
	str2 = "abcde"; //기존의 abcde를 버리고 새로운 것을 취했어도 버린것을 다시 찾아서 적용한다.
	System.out.println(str1 == str2);

	String str3 = new String("abcde");
	String str4 = new String("abcde");
	System.out.println(str3 == str4);
	}

}

true
true
false

 

(1) final 클래스로 상속을 받아서 수정할 수 없다.

(2) new String 또는 " "로 생성 가능

(3) 많은 주요 메서드들이 있다.

  1) length() : 문자열의 길이를 return

     String a = "hello";

     a.length() = 5 // String에 .을 찍으면 length를 쓸수 있다.

 	// 1. legth()
 	String s1 = "efewterfirjisofeijifjiwoeivjdbnvjks";
 	String s2 = "한글은 몇글자로 침?";
 	System.out.println("s1 문자열의 길이 : " + s1.length());
 	System.out.println("s2 문자열의 길이 : " + s2.length());

 	s1 문자열의 길이 : 35
 	s2 문자열의 길이 : 11

 

  2) charAt(인덱스) : 인덱스 위치에 있는 글자를 return

     String jumin_bunho = "001234-3812367"

     jumin_bunho.charAt(7) -> 성별을 나타내는 숫자

// 2. charAt()
		String s3 = "abcdefghijkl";
		System.out.println(s3.charAt(9));

		2. j

 

  3) equals(str) : str과 동일한 값인지 check

     equalsIgnoreCase(str) : str 대소문자를 무시하고 비교를 한다

    대소문자 관계없이 동일한 문자열 값인지 check

		// 3. equals(), equalsIgnoreCase()
		String s4 = new String("aaaaa");
		String s5 = new String("aaaaa");
		String s6 = new String("AaaAA");
   //System.out.println(s4 == s5); 	   //s4와 s5가 같은지
		System.out.println("3." + (s4 == s5));
		System.out.println("3." + s4.equals(s5)); //값만 비교한것
		System.out.println("3." + s4.equals(s6));
		System.out.println("3." + s4.equalsIgnoreCase(s6));

		3.false
		3.true
		3.false
		3.true

 

  4) replace(찾을문자열, 대체할 문자열) : 특정 문자열을 찾아서 원하는 문자열로 대체

	// 4. replace()
	String s7 = "Heavern helps those";
	String s8 = "help";
	String s9 = s7.replace(s8,"    ");
	String s10 = s7.replace("t", "28352369382636");
	System.out.println("4." + s9);
	System.out.println("4." + s10);

	4.Heavern     s those
	4.Heavern helps 28352369382636hose

 

5) substring(sindex, eindex) : 기존 문자열에서 특정 부분을 잘라내어 retrun

	// 5. substring()
	String s11 = s7.substring(1,4);
	System.out.println("5." + s11);

	5.eav

 

6) trim() : 문자열 앞 뒤의 공백을 제거한다.

	// 6. trim()
	String s12 = "        angel1024         ";
	String s13 = s12.trim();
	System.out.println("6." + s13);

	6.angel1024

	String s14 ="AAAAAAAangel1024AAAAAA";
	String s15 = s14.trim("A");
	//오류가 뜸 trim은 공백만 되기 때문에 공백이 없기에 오류!
	//trim은 문자열을 줄 수 없음.
	//cf) python에서는 strip("쓰레기글자리스트") => strip("1234567890") 문자를 만날때까지 날린다. 해당하는 문자가 하나라고 있으면 지워버린다.

 

7) split(나눌문자) : 특정 문자로 앞 뒤를 나누어 리턴

String s15 = "Victory come from right";
String[] s16= s15.split("o");
for(int i=0; i<s16.length; i++) {
System.out.println(s16[i]);
}

Vict
ry c
me fr
m right

String s15 = "Victory come from right";
String[] s16= s15.split("o ");
for(int i=0; i<s16.length; i++) {
System.out.println(s16[i]);
}

Victory come from right

	String[] s17 = s15.split("[o ]");  // o 또는 space로 구분
	for(int i=0; i<s17.length; i++) {
		System.out.println(s17[i]);
	}
//Vict
//ry
//c
//me
//fr
//m
//right

 

8) mathches(정규표현식) : 문자열이 정규표현식 조건에 맞는지를 리턴

// 8. matches()
String s18 = "010785287322327-875327323";
// 숫자와 -으로만 25자리 이내로 구성되었는가?
System.out.println("8." + s18.matches("[0-9]{1ㅡ25}"));
//영대소문자 또는 한글로 5자 이내냐?
String nameRule = "[A-Za-z가 -힣]{6}";
System.out.println("8." +  "유미의 세포들".matches(s15));

String phoneRule = "[0][0-9]{2}[-][0,9]{3,4}[-][0-9]{4}";
System.out.println("8." + "010-3422-6323".matches(phoneRule));

// Test
// 사용자로부터 전화번호 입력을 받아서 전화번호 조건에 맞으면 마지막 4자리를 ****로 표시
// 규칙에 어긋나면 "올바른 형식이 아닙니다"
Scanner sc = new Scanner(System.in);
System.out.println("전화번호를 입력해라 : ");
String phone_num = sc.next();
if(phone_num.matches(phoneRule)) {
	// (1)
	phone_num = phone_num.substring(0,phone_num.length()-4) + "****";
	System.out.println(phone_num);
//		// (2)
//		String last4 = phone_num.substring(phone_num.length()-4, phone_num.length());
//		phone_num.replace(last4, "****"); //중간번호와 마지막번호가 같을 때 오동작
}
else {
System.out.println("올바른 형식이 아닙니다.");

 

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

예외(Exception) 처리  (0) 2023.01.09
인터페이스(Interface)  (0) 2023.01.09
상속  (0) 2023.01.09
클래스 심화  (0) 2023.01.09
함수(function)  (0) 2023.01.09
728x90
반응형
SMALL

(1) 정의

객체 지향 프로그램(이벤트 프로그램)의 가장 특성 → 재사용성 → 상속

예전 언어에서는 매크로(Macro), 인라인

클래스를 만들 때 처음부터 모드 것을 새로 만드는 것이 아니라

부모로부터 받고 추가되는 것만 새로 만드는 것

 

(2) 클래스 상속

  1) 용어 : 부모(클래스), 슈퍼(클래스), 상의(클래스), 베이스(클래스)

                자식(클래스), 서브(클래스), 하위(클래스), 파생(derived)(클래스)

 

   2) 클래스 상속 방법 (제일 안나옴)

    키워드 1개 :extenfs(O) // sxtend(X)

    class child extends Parent {

    }

  

  3) 상속의 특징

    단일 상속만 가능 - 부모는 한개만

    new Child() ⇒ Parant 객체 생성 ⇒ Child객체생성

    모든 클래스의 조상 - Object

 

  4) super

   Child 객체에서 Parent객체를 가리키는 변수

   super.변수명

   super.메서드명()

 

(3) 메서드 재정의 (Overriding)

  1) 부모 클래스의 메서드를 자식 클래스가 변경해서 정의하는 것

  2) 메서드 명 뿐 아니라 메서드에 들어갈 입력값까지 완벽하게 동일해야함

    → 메서드명이같고 입력값의 형태가 다르면 Overloading

  3) 동일한 형태의 메서드 일 때 자식 클래스의 메서드가 우선시

  4) 부모의 접근 권한보다 같거나 낮은 권한이어야 함

 

(4) 다형성 (Polymprlhism)

  i < d (O)  i < d (X)

  1) int i =10;

         double d = i;

 

        double b = 10.34;

        int j = (int)b;

  

  2) Parent p = new Child();  ⇒ 가능

       C 100 p 50

 

       Child c = new Parent(); ⇒ 불가능

       c.생떼쓰기(), c.산타에게 선물받기() 이런기능이 Parent에게는 없기 때문

       Child c = (Child) p; ⇒ 가능

 

      Parent p = new Parent();

      Child c = (Child) p; ⇒ ???

      c.생떼쓰기()

 

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

인터페이스(Interface)  (0) 2023.01.09
String Class  (0) 2023.01.09
클래스 심화  (0) 2023.01.09
함수(function)  (0) 2023.01.09
Colors (추후 수정 필요 !)  (0) 2023.01.09
728x90
반응형
SMALL

(1) Field(변수)

 

    1) 클래스 변수

    변수 앞에 static (모두가 공유하는 것) 키워드 사용

    모든 객체가 공유하는 변수

    객체를 생성하지 않아도 사용할 수 있음

 

    2) 인스턴스 변수

   변수 앞에서 static이 없는 변수(일반적인 변수) cf) self.변수명 in Python

   객체를 생성할 때 생성되며, 객체마다 다름

 

   3)로컬 변수

   함수 내, 제어문 내에서 선언된 변수

 

(2) Methon(메서드, 함수)

    클래스 내에 있는 함수

         public static void main(String[] args){

         }

         접근제한자 [static] 리턴타임 메서드명 (매개변수...){

         }

   

     1) 접근제한자

      메서드를 실행할 수 있는 권한, 가장 넓은 권한 public

     

     2) static

      객체 생성을 하지 않고도 사용할 수 있는지에 대한 keyword

      static이 붙으면 객체 생성을 하지 않고 사용 가능

     

     3) 리턴타입

      메서드는 값을 받기만 하지 않는다!!

      처리 후 값을 돌려줄 수도 있음!!

      돌려주는 값이 없을 때 void

      돌려주는 값이 숫자라면 int, float, double 등이고 문자열이라면 String

     

     4) 메서드명

      변수명 규칙과 동일

      동사 + 대문자로 시작하는 명사 + 대문자로 시작하는 명사

      printScreen, getPremium c에서는 get_Premiun1

     

     5) 매개변수(Parameter)

     매서드의 입력값을 의미

     메서드 입장에서는 외부에서 값을 받기 위해 사용

     입력값이 개수가 졍해져 있을 때에는 (int a, float b) 등으로 전체를 기술

     입력값이 개수가 정해져 있지 않을 때에는 (String[] args) 등으로 배열을 사용

   

    6) 리턴값

      메서드 선언할 때 void가 아닌 경우

      반드시 리턴값이 있어야 한다.

      return 값

     

    7) 메서드의 실행

      call(호출), 부른 쪽을 caller, 불린 쪽을 callee

     

    8) 실행 순서

      처음 실행한 메서드가 가장 늦게 종료된다.(FILO, Stack)

      cf) FIFO(First Out, Queue)

     

    9) 메서드 오버로딩(Overload)

     같은 이름으로 입력값의 종류에 따라 다르게 처리하고 싶을 경우

 

 

 

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

String Class  (0) 2023.01.09
상속  (0) 2023.01.09
함수(function)  (0) 2023.01.09
Colors (추후 수정 필요 !)  (0) 2023.01.09
배열 (Array)  (0) 2023.01.09
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
728x90
반응형
SMALL
  • Eclipse에서는 플러그인 필요

       install new software : https://www.mihai-nita.net/eclipse

 

My Eclipse Plugins & Java tools — Internationalization Cookbook

This is an Eclipse update page It is intended for Eclipse to install / update my plugins. There is no point in opening it in your browser. Sorry, yes, it was a real page before GitHub killed the “downloads” feature and I had to shuffle things around. T

www.mihai-nita.net

 

  • 많은 양의 데이터가 화면에 출력되며 중요 데이터를 강조하고 싶을 때
  • 내 프로그램은 내 자존심
  • 글자 색상을 지정하는 방법
  • 색을 바꾸고 싶은 구간 앞뒤에 이스케이프 시퀀스(Escape Sequence)를 따른 예약 문자를 붙어서 사용

//arj 압축 lha 압축풀기 zip

 

(1)기본 8색

'\033[색상코드m' + 문장 + '\033[0m'

색상코드 : 30~37 일반 8색, 90~97 밝은일반8색

40~47 배경-일반8색, 100~107 배경-밝은 일반 8색

 

(2)확장 256색

글자색 : '\033[38;5;색상코드m' + 문장 + '\033[0m'

배경색 : '\033[48;5;색상코드m' + 문장 + '\033[0m'

//구글에서 265color를 입력하면 색이 나옴

 

(3)True color(256X256X256) - RED, GREEN, BLUE

글자색 : '\033[38;2;색상코드m' + 문장 + '\033[0m'

배경색 : '\033[48;2;색상코드m' + 문장 + '\033[0m'

색상코드 : R;G;B 0xFF 255

 

 

package Myutil;

public class Colors {
public static String RED = "\\033[31m";
public static String GREEN = "\\033[32m";
public static String YELLOW = "\\033[33m";
public static String BLUE = "\\033[34m";
public static String MAGENTA = "\\033[35m";
public static String CYAN = "\\033[36m";
public static String WHITE = "\\033[37m";
public static String BLACK = "\\033[30m";

public static String REDBG = "\\\\033[101m";
public static String GREENBG = "\\\\033[102m";

public static String END = "\\\\033[0m";

public static void main(String[] args) {
//  TODO Auto-generated method stub
		System.out.println(RED + "RED" + END);
		//결과값 RED
		System.out.println(REDBG + "   " + END);
		//결과값 빨강색

}

}
package Day03;

import Myutil.Colors;

public class ColorTest {

	public static void main(String[] args) {
	//  TODO Auto-generated method stub
	//Colors cl = new Colors();
	//원래라면 이렇게 써야하지만, static를 썼다면 객체를 이렇게 만들지 않아도 됨
	System.out.println(Colors.RED + "Color Test" + Colors.END);
	//결과값 Color Test
	//Colors cl = new Colors();
	//cl = 5; 자바에서는 에러가 나지만, 파이썬에서는 가능함

	//int color =100;

	// basic 8 color

	for(int color=100; color<108; color++) {
		System.out.print("\\\\033[" + color + "m" + "   " +Colors.END);
	}

}

}
package Day03;

import Myutil.Colors;

public class ColorTest {	

	public static void main(String[] args) {
	//  TODO Auto-generated method stub
	//Colors cl = new Colors();
	//원래라면 이렇게 써야하지만, static를 썼다면 객체를 이렇게 만들지 않아도 됨
	System.out.println(Colors.RED + "Color Test" + Colors.END);
	//결과값 Color Test
	//Colors cl = new Colors();
	//cl = 5; 자바에서는 에러가 나지만, 파이썬에서는 가능함

	//int color =100;

	// basic 8 color

	for(int color=100; color<108; color++) {
		System.out.print("\\\\033[" + color + "m" + "   " +Colors.END);
	}

	System.out.println();

	//extended 256 color

	for(int color=0; color<256; color++) {
		System.out.print("\\\\033[48;5;" + color +"m"+ " ");

	}

	System.out.println(Colors.END);

	// true Color
	String[] str = new String[4];
	for(int color=128; color<256; color++) {
		str[0] +="\\\\033[48;2;" + color + ";0;0" + "m" + " ";
	}

}

}
컬러테스트
package Day03;

import Myutil.Colors;
import java.util.Random;

public class ColorTest {

	public static void main(String[] args) {
	//  TODO Auto-generated method stub
	//Colors cl = new Colors();
	//원래라면 이렇게 써야하지만, static를 썼다면 객체를 이렇게 만들지 않아도 됨
	System.out.println(Colors.RED + "Color Test" + Colors.END);
	//결과값 Color Test
	//Colors cl = new Colors();
	//cl = 5; 자바에서는 에러가 나지만, 파이썬에서는 가능함

	//int color =100;

	// basic 8 color

	for(int color=100; color<108; color++) {
		System.out.print("\\\\033[" + color + "m" + "   " +Colors.END);
	}

	System.out.println();

	//extended 256 color

	for(int color=0; color<256; color++) {
		System.out.print("\\\\033[48;5;" + color +"m"+ " ");

	}

	System.out.println(Colors.END);

	// true Color
	String[] str = {"","","",""};  //new String[4]; null이 붙어서 나옴
	for(int color=128; color<256; color++) {
		str[0] +="\\\\033[48;2;" + color + ";0;0" + "m" + " ";
		str[1] +="\\\\033[48;2;" + "0;" + color + ";0" + "m" + " ";
		str[2] +="\\\\033[48;2;" +  ";0;0"+ color + "m" + " ";
		str[3] +="\\\\033[48;2;" +  color + ";" + color + ";" + color + "m" + " ";
	}
	System.out.println(str[0]);
	System.out.println(str[1]);
	System.out.println(str[2]);
	System.out.println(str[3]);

}

public static void p(String title) {
	System.out.println("******************");
	Random rd = new Random();
	int color = rd.nextInt(0,256);
	System.out.print("\\\\033[38;5;" + color + "m" + title);
}

}

 

\\는 두개씩 인데 자꾸 4개로 불어나와요....

노션에서는 안그렇는데 추후 수정 필요!!

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

클래스 심화  (0) 2023.01.09
함수(function)  (0) 2023.01.09
배열 (Array)  (0) 2023.01.09
제어문(Control Statement)  (0) 2023.01.09
Random (임의의 수를 얻는 도구)  (0) 2023.01.09
728x90
반응형
SMALL
  • 동일한 특성을 갖는 변수의 모음
    • 0부터 시작(cf R, fortran, pascal에서는 1로 시작)
ex) 
student1
student2
student3
.......
student1000          //이렇게 하나하나 만드는 것이 아니라
 student[1000]  > student[38] = 'diogfoieh'
                      //대 괄호 안에 숫자를 넣어주면 알아서 만듬 //크기 x 떨어진 거리만큼 있겠다는 의미

 lista = [1, 3, 'jwlee', String str]

파이썬은 다 받아주지만, 자바와 C는 안됨! //참고사항
장점은 꺼낼때 어떤 타입인지 알 수 있다.
package Day03;

public class ArrayTest {	

	public static void main(String[] args) {
	//  TODO Auto-generated method stub
	System.out.println("**** Array Test ****");

	String[] student1 = new String[5];
	String[] student2 = {"A", "B", "C", "James", "E"};
	int[] student_score = new int[5]; //고정된 숫자는 중간에 바꾸지 못한다.

	for(int i=0; i<5; i++) {
		System.out.println(student2[i]);
	}

	System.out.println(student2.length);

	for(int i=0;i<student2.length;i++) {
		System.out.println(student2[i]);

	} //자주 나오는 문장

	for(String str : student2) {
		System.out.println(str);
	} //자주 나오지는 않지만 까먹을 수 있는 문장!

	}

}
package Day03;

public class ArrayTest {

	public static void main(String[] args) {
	//  TODO Auto-generated method stub
	System.out.println("**** Array Test ****");

	String[] student1 = new String[5];
	String[] student2 = {"A", "B", "C", "James", "E"};
	int[] student_score = new int[5]; //고정된 숫자는 중간에 바꾸지 못한다.

	for(int i=0; i<5; i++) {
		System.out.println(student2[i]);
	}

	System.out.println(student2.length);

	for(int i=0;i<student2.length;i++) {
		System.out.println(student2[i]);

	}

	for(String str : student2) {
		System.out.println(str);
	}

	// 2-d array
	int[][] m_array = new int[3][4];
	int[][] m_array2 = {{1,2,3},{4,5,6}};
	int[][] m_array3 = {{1,2,3},{4,5,6}};

	// 5를 선택하는 방법
	System.out.println(m_array2[1][1]);

	System.out.println(m_array2[0]);
	m_array2[0][2] = 100;
	System.out.println(m_array2[0]);

	System.out.println(m_array2);
	System.out.println(m_array3);

	System.out.println(m_array2 == m_array3);

	//System.out.println(m_array2 == m_array3);
	//2와 3이 같은 값을 가지고 있더라도 완전히 같지 않다. 동명이인이랑 같은 의미

	//System.out.println(m_array[0][0] == m_array3[0][0]);
	//단 위에 문장은 같음!!

	}

}

3차원 이상 배열 [][][]

정신적으로 만들지 않음...

2차원까지 하는 이유는 여기까지가 효율적이기 때문

int[][][][][] m_array = new int[3][4][5][6][7];

 

package Day03;

public class ArrayTest {

	public static void main(String[] args) {
	//  TODO Auto-generated method stub
	System.out.println("**** Array Test ****");

	String[] student1 = new String[5];
	String[] student2 = {"A", "B", "C", "James", "E"};
	int[] student_score = new int[5]; //고정된 숫자는 중간에 바꾸지 못한다.

	for(int i=0; i<5; i++) {
		System.out.println(student2[i]);
	}

	System.out.println(student2.length);

	for(int i=0;i<student2.length;i++) {
		System.out.println(student2[i]);

	}

	for(String str : student2) {
		System.out.println(str);
	}

	// 2-d array
	int[][] m_array = new int[3][4];
	int[][] m_array2 = {{1,2,3},{4,5,6}};
	int[][] m_array3 = {{1,2,3},{4,5,6}};

	// 5를 선택하는 방법
	System.out.println(m_array2[1][1]);

	System.out.println(m_array2[0]);
	m_array2[0][2] = 100;
	System.out.println(m_array2[0]);

	System.out.println(m_array2);
	System.out.println(m_array3);

	System.out.println(m_array2 == m_array3);

	//System.out.println(m_array2 == m_array3);
	//2와 3이 같은 값을 가지고 있더라도 완전히 같지 않다. 동명이인이랑 같은 이미

	//System.out.println(m_array[0][0] == m_array3[0][0]);
	//단 위에 문장은 같음!!

	}

}
728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

함수(function)  (0) 2023.01.09
Colors (추후 수정 필요 !)  (0) 2023.01.09
제어문(Control Statement)  (0) 2023.01.09
Random (임의의 수를 얻는 도구)  (0) 2023.01.09
User Input (사용자로부터 입력을 받는 기능)  (0) 2023.01.09

+ Recent posts