[연습한 코드]
/*
1.체력 : hp 100, 모드 : (0 : 일반, 1 : 흥분)
2. 공격 attack()
1회 공격 당 적 체력 (0 : -10, 1 : -15)
모드변경 changeMode()
내체력 -25;
내체력 40이하일 경우는 모드 변경 불가.
*/
public class Marine {
boolean who;
int hp ;
int mode;
public Marine(){
who=false;
hp=100;
mode=0;
}
void attack(int count) {
if (who == false)
{
if (mode == 0){
hp-=10*count;
}else {
hp-=15*count;
}
}
}
void changeMode() {
if (who ==true){
if (hp>40){
mode = 1;
hp-=25;
} else {
mode =0;
}
} else if (who == false){
mode=1;
}
}
}
public class StarCraft {
public static void main(String[] args) {
Marine my=new Marine();
Marine com=new Marine();
System.out.println("내체력 : "+my.hp+" 적체력 : "+com.hp);
my.who = true;
com.who = false;
int count = 2;
System.out.println("내가 적을 "+count+"회 공격!!!");
my.attack(count);
com.attack(count);
System.out.println("내체력 : "+my.hp+" 적체력 : "+com.hp);
my.who = false;
com.who = true;
count = 4;
System.out.println("적이 나를 "+count+"회 공격!!!");
my.attack(count);
com.attack(count);
System.out.println("내체력 : "+my.hp+" 적체력 : "+com.hp);
//내체력 : 60 적체력 : 80
System.out.println("모드 변경!!!");
my.who = true; com.who = false;
my.changeMode();
com.changeMode();
System.out.println("내체력 : "+my.hp+" 적체력 : "+com.hp);
//내체력 : 35 적체력 : 80
count = 3;
System.out.println("내가 적을 "+count+"회 공격!!!");
my.attack(count);
com.attack(count);
System.out.println("내체력 : "+my.hp+" 적체력 : "+com.hp);
//내체력 : 35 적체력 : 35
System.out.println("모드 변경!!!");
my.changeMode();
com.changeMode();
if (my.hp<40)
{
System.out.println("경고 : 모드 변경 불가!!!");
}
System.out.println("내체력 : "+my.hp+" 적체력 : "+com.hp);
//경고 : 모드 변경 불가!!!
//내체력 : 35 적체력 : 35
count = 3;
System.out.println("내가 적을 "+count+"회 공격!!!");
my.attack(count);
com.attack(count);
System.out.println("내체력 : "+my.hp+" 적체력 : "+com.hp);
//내체력 : 35 적체력 : die
}
}
정답)
★인자값 자리에 Marine의 틀을 가진 객체를 넣을 수 있다.
★println 안에서 method 도 실행 가능
★숫자에 문자열 더하면 문자열 됨 ex) 15+""
call by reference : 주소값으로 부름
인자값으로 (Object)class타입이 전달될 때는 무조건 call by reference!
call by value : 값으로 부름
기본데이타 타입은 value를 전달
/*
1.체력 : hp 100, 모드 : (0 : 일반, 1 : 흥분)
2. 공격 attack()
1회 공격 당 적 체력 (0 : -10, 1 : -15)
모드변경 changeMode()
내체력 -25;
내체력 40이하일 경우는 모드 변경 불가.
call by value
call by reference
*/
public class Marine {
int hp ;
int mode;
int power;
public Marine(){
hp=100;
mode=0;
power =10;
}
void attack(Marine enemy,int count) {
if (mode==0){
for (int i=0;i<count ;i++ )
enemy.hp-=power;
} else {
for (int i=0;i<count ;i++ )
enemy.hp-=power;
}
}
void changeMode() { //mode 바꾸는 method
if (hp>40){
hp-=25;
mode =1;
power=15;
} else{
System.out.println("경고 : 모드변경불가!!!");
}
}
String getStatus() { //현재 상태 표시하는 method
return hp <0 ? "die" : hp + ""; //숫자에 문자열 더하면 문자열 됨.
}
}
public class StarCraft {
public static void main(String[] args) {
Marine my=new Marine();
Marine com=new Marine();
System.out.println("내체력 : "+my.getStatus()+" 적체력 : "+com.getStatus());
int count = 2;
System.out.println("내가 적을 "+count+"회 공격!!!");
my.attack(com,count);
System.out.println("내체력 : "+my.getStatus()+" 적체력 : "+com.getStatus());
count = 4;
System.out.println("적이 나를 "+count+"회 공격!!!");
com.attack(my,count);
System.out.println("내체력 : "+my.getStatus()+" 적체력 : "+com.getStatus());
//내체력 : 60 적체력 : 80
System.out.println("모드 변경!!!");
my.changeMode();
System.out.println("내체력 : "+my.getStatus()+" 적체력 : "+com.getStatus());
//내체력 : 35 적체력 : 80
count = 3;
System.out.println("내가 적을 "+count+"회 공격!!!");
my.attack(com,count);
System.out.println("내체력 : "+my.getStatus()+" 적체력 : "+com.getStatus());
//내체력 : 35 적체력 : 35
System.out.println("모드 변경!!!");
my.changeMode();
System.out.println("내체력 : "+my.getStatus()+" 적체력 : "+com.getStatus());
//경고 : 모드 변경 불가!!!
//내체력 : 35 적체력 : 35
count = 3;
System.out.println("내가 적을 "+count+"회 공격!!!");
my.attack(com,count);
System.out.println("내체력 : "+my.getStatus()+" 적체력 : "+com.getStatus());
//내체력 : 35 적체력 : die
}
}
결과)
[출처] 빡쏘끼룩
'IT > JAVA' 카테고리의 다른 글
[Java]택시요금 code (0) | 2020.07.20 |
---|---|
[Java]상속 (inheritance)/overriding(재정의)/super (0) | 2020.07.18 |
[Java]사각형과 원 넓이, 둘레 구하기 code (0) | 2020.07.08 |
[Java]method 오버로딩 (0) | 2020.07.05 |
[Java]생성자 사용 (0) | 2020.07.04 |