고뇌
코드를 칠때마다 값이 달라지는 진귀한 현상
사재원 교수
2022. 6. 12. 16:12
분명 똑같이 친것 같은데 매번 다른 값이 나온다
feat. 스타그래프트 게임
package NewProject;
import java.security.PublicKey;
import Test.jaewon;
/*
* 공격은 순서대로 단, 객체가 살아있는 경우
* 타켓은 첫번째 객체를 집중적으로 공격을 하고 객체가 소멸하면 그 다음 객체로 이동
*/
//테란 클래스
class Tarren{
//마린 3마리
Marine[] m = new Marine[3];
//턴 변수 생성
int turn = 0;
//마린 3마리 생성자로 객체 넣기
Tarren(){
for(int i=0;i<m.length;i++) {
m[i] = new Marine();
m[i].print();
}
}
//누가 공격할지?
public Marine AttackM() {
if(m[0] != null || m[1] != null || m[2] != null) {
while(m[turn%3] == null) {
turn ++;
}
System.out.println(turn%3 + "번째 마린이 공격합니다.");
return m[turn++%3];
}else {
return null;
}
}
//누가 맞을건지?
public Marine WhoM() {
for(int i=0;i<m.length;i++) {
if(m[i] != null) {
System.out.println(i + "번째 마린이 공격당합니다.");
return m[i];
}
}
return null;
}
//죽은 마린 확인
public void CheckM() {
for(int i=0;i<m.length;i++) {
if(m[i] != null && m[i].hp <= 0) {
System.out.println(i + "번째 마린이 죽었습니다 !!!!!!!!");
m[i] = null;
}
}
}
//게임종료 확인
public boolean GameoverM() {
for(int i=0;i<m.length;i++) {
if(m[i] != null) {
return true;
}
}
return false;
}
}
//저그 클래스
class Zerg{
//저글링1마리 히드라1마리
Juggling j;
Hydra h;
//턴 변수
int turn = 0;
//객체 넣기
Zerg(){
j = new Juggling();
h = new Hydra();
j.print();
h.print();
}
public Juggling goJug() {
return j;
}
public Hydra goHydra() {
return h;
}
//마린에게 공격 당하기
public void WhoZ(Marine m) {
if(j != null) {
System.out.println("저글링이 공격을 당합니다.");
j.hp -= m.attack;
}else {
System.out.println("히드라가 공격을 당합니다.");
h.hp -= m.attack;
}
}
//죽은 개체 확인
public void CheckZ() {
if(j != null && j.hp <= 0) {
System.out.println("저글링이 죽었습니다 !!!!!!!!!!");
j = null;
}else if(h != null && h.hp <= 0){
System.out.println("히드라가 죽었습니다 !!!!!!!!!!");
h = null;
}
}
//게임종료 확인
public boolean GameoverZ() {
if(j != null) {
return true;
}
if(h != null) {
return true;
}
return false;
}
}
public class Q2 {
public static void main(String[] args) {
Tarren t = new Tarren();
Zerg z = new Zerg();
int count = 1;
boolean chk = true;
while(chk) {
//테란 공격
System.out.println((count ++)+ "턴 테란이 공격합니다.");
Marine m = t.AttackM(); //누가 공격?
z.WhoZ(m); //선정된 마린이 저그 공격
z.CheckZ(); //죽은 저그 확인
chk = z.GameoverZ();
if(chk == false) {
System.out.println("테란이 승리했습니다 ! ");
continue;
}
Marine m1 = t.WhoM(); //누가 맞을래
//저그 공격
if(z.turn % 2 == 0 && z.j != null) {
System.out.println("저글링이 공격합니다 ~~");
//저글링 공격
Juggling j = z.goJug(); //내가 공격하겠다
m1.hp -= j.attack; //공격!
t.CheckM();
chk = t.GameoverM();
if(chk == false) {
System.out.println("저그가 승리하였습니다 !");
}
}else if(z.turn % 2 == 1 && z.h != null) {
System.out.println("히드라가 공격합니다 ~~");
//히드라 공격
Hydra h = z.goHydra();
m1.hp -= h.attack;
t.CheckM();
chk = t.GameoverM();
if(chk == false) {
System.out.println("저그가 승리하였습니다 !");
}
}
z.turn ++;
}
}
}