티스토리 뷰

고뇌

왜지!? 스타그래프트 게임?

사재원 교수 2022. 6. 12. 00:05
package NewProject;

import java.security.PublicKey;

import Test.jaewon;

/*
 * 공격은 순서대로 단, 객체가 살아있는 경우
 * 타켓은 첫번째 객체를 집중적으로 공격을 하고 객체가 소멸하면 그 다음 객체로 이동
 */

//테란 클래스
class Tarren{
	//1. 마린 3마리
	Marine[] m = new Marine[3];
	//2. 턴 변수 담기
	int turn = 0;
	//3. 마린 객체 넣기
	Tarren(){
		for(int i=0;i<m.length;i++) {
			m[i] = new Marine();
			m[i].print();
		}
	}
	//4. 공격할 마린 선택
	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;
		}
	}
	//5. 공격당할 마린 선택
	public Marine WhoM() {
		for(int i=0;i<m.length;i++) {
			if(m[i] != null) {
				System.out.println(i+"번째 마린이 공격을 당합니다.");
				return m[i];
			}
		}
		return null;
	}
	//6. 죽은 마린 확인
	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;
			}
		}
	}
	//7. 게임종료 체크
	public boolean GameoverM() {
		for(int i=0;i<m.length;i++) {
			if(m[i] != null) {
				return true;
			}
		}
		System.out.println("마린이 모두 죽었습니다.");
		return false;
	}
	
}

class Zerg{
	//1. 저글링하고 히드라 생성
	Juggling j;
	Hydra h;
	//2. 턴 변수 생성
	int turn = 0;
	//3. 저글링하고 히드라 객체 넣기
	Zerg(){
		j = new Juggling();
		h = new Hydra();
		j.print();
		h.print();
	}
	public Juggling goJug() {
		return j;
	}
	public Hydra goHydra() {
		return h;
	}

	//4. 누가 마린에게 맞을 것인가?
	public void attackZ(Marine m) {
		if(j != null) {
			System.out.println("저글링이 공격당합니다 ! ");
			j.hp -= m.attack;
		}else if(h != null) {
			System.out.println("히드라가 공격당합니다 ! ");
			h.hp -= m.attack;
		}
	}
	//5. 누가 죽었는지 확인
	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;
		}
	}
	//6. 게임종료확인
	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();
	   
	   boolean chk = true;
	   int count = 1;
	   
	   while(chk) {
		   
		   //테란공격
		   System.out.println((count++) + "턴 테란팀이 공격합니다.");
		   Marine m = t.AttackM(); //공격할 마린 선택
		   z.attackZ(m); //마린이 저그 공격 ! 
		   z.CheckZ();
		   chk = z.GameoverZ();
		   if(chk == false) {
			   System.out.println("테란팀이 승리하였습니다.");
			   continue;
		   }
		   
		   //저그공격
		   System.out.println((count++) + "턴 저그팀이 공격합니다.");
		   if(z.turn % 2 == 0 && z.j != null) {
			   //저글링이 공격
			   m = t.WhoM(); //마린 누가 맞을래?
			   Juggling j = z.goJug(); //저글링 생성
			   m.hp -= j.attack; // 공격 !
			   t.CheckM();//누가 죽었니?
			   chk = t.GameoverM();
			   if(chk == false) {
				   System.out.println("저그팀이 승리하였습니다.");
			   }
			   
		   }if(z.turn % 2 == 1 && z.h != null) {
			   //히드라가 공격
			   m = t.WhoM(); //마린 누가 맞을래?
			   Hydra h = z.goHydra(); //히드라 생성
			   m.hp -= h.attack; // 공격 !
			   t.CheckM();//누가 죽었니?
			   chk = t.GameoverM();
			   if(chk == false) {
				   System.out.println("저그팀이 승리하였습니다.");
			   }
		   }
		   
		   
	   }
	   
   }

}

자기 전 마지막으로 연습할려고 스타그래프트 코드를 작성했는데 뭔가 왜 결과가 다르지...? 흠...

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함