페널티킥 게임(과정1)

문건우·2023년 2월 7일
0

JAVA 토이 프로젝트

목록 보기
2/4
post-thumbnail

골키퍼 클래스

public class Goalkeeper{

	private String Awayteam;	// 원정팀 이름
	private String Goalkeeper;	// 골키퍼 이름
	
	public Goalkeeper(String awayteam, String goalkeeper) {
		super();
		Awayteam = awayteam;
		Goalkeeper = goalkeeper;
	}
	public String getAwayteam() {
		return Awayteam;
	}
	public void setAwayteam(String awayteam) {
		Awayteam = awayteam;
	}
	public String getGoalkeeper() {
		return Goalkeeper;
	}
	public void setGoalkeeper(String goalkeeper) {
		Goalkeeper = goalkeeper;
	}
	@Override
	public String toString() {
		return   Awayteam + " [골키퍼 " + Goalkeeper + "]";
	}
	
}

키커 클래스

public class Kicker {
	
	private String Hometeam;	// 홈팀 이름
	private String order;	// 순번
	private String name;	// 키커 이름 
	
	public Kicker(String hometeam, String order, String name) {
		super();
		Hometeam = hometeam;
		this.order = order;
		this.name = name;
	}
	public String getHometeam() {
		return Hometeam;
	}
	public void setHometeam(String hometeam) {
		Hometeam = hometeam;
	}
	public String getOrder() {
		return order;
	}
	public void setOrder(String order) {
		this.order = order;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override	
	public String toString() {
		return Hometeam + "["+order+ " " + name + "]";
	}
	
}

메인 메서드를 가진 클래스

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class MainGame {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);	// 스캐너 메소드 
		
		Goalkeeper gk = new Goalkeeper("Liverpool", "Alisson Becker");	// 원정팀 이름, 골키퍼 이름 할당
	    
		List<Kicker> homeKicker = new ArrayList<Kicker>();	// 홈팀 이름, 순번, 키커 이름 할당
	
		homeKicker.add(new Kicker("Manchester United","1번 키커", "Marcus Rashford"));
		homeKicker.add(new Kicker("Manchester United","2번 키커", "Bruno Fernands"));
		homeKicker.add(new Kicker("Manchester United","3번 키커", "Casemiro"));
		homeKicker.add(new Kicker("Manchester United","4번 키커", "Christian Eriksen"));
		homeKicker.add(new Kicker("Manchester United","5번 키커", "Antony"));
		
		int kWin = 0;	// 키커 승리
		int gWin = 0;	// 골키퍼 승리
	
	      for(int i = 0; i< homeKicker.size(); i++) {	// 명단에 포함된 선수들의 수 만큼 반복
	    	  int ddirection = (int)(Math.random()*3);	// 골키퍼가 다이빙 뛸 방향을 1~3까지의 난수
	    	  String[] arr = { "좌측", "중앙", "우측" };	// 위의 난수를 배열을 통해 문자열로 설정
	    	  
	    	  System.out.println(arr[ddirection]);	// !!테스트를 위해서 넣었음. 추후에 삭제할 메소드!!
	    	  
	    	  System.out.println(homeKicker.get(i));	// 홈팀의 첫번째 키커부터 
	    	  System.out.println("슛팅할 방향 입력 : ");
	    	  String str1 = scanner.nextLine();
	    	  System.out.println(homeKicker.get(i)+ str1 +"으로 슛팅!");

	    	  try {
				Thread.sleep(800);	// 공이 날아가는 시간을 표현하기 위해 지연 메소드를 넣었다.
	    	  } catch (InterruptedException e) {
				e.printStackTrace();
	    	  }
	    	  
	    	  if(str1.equals(arr[ddirection])) {
	    		  System.out.println("골키퍼 " + arr[ddirection] +"으로 뜁니다!");	
	    		  System.out.println(gk + "선방입니다!!");
	    		  gWin += 1;
	    	  }else {
	    		  System.out.println("골키퍼 " + arr[ddirection] +"으로 뜁니다!");
	    		  System.out.println(homeKicker.get(i) + "득점 성공합니다!");
	    		  kWin += 1;
	    	  }
	    	  
	    	  System.out.println("------------------------------------");
	    	  
	      }
	      
	      if(kWin >= 4) {
	      	System.out.println("맨체스터 유나이티드가 승리를 가져갑니다!!");
	      } else {
	      	System.out.println("리버풀이 승리를 가져갑니다...");
	      }
	     System.out.println("---최종 스코어---");
	     System.out.println("득점 횟수 : " + kWin);
	     System.out.println("선방 횟수 : " + gWin);
	     
	}

}

📍 보완해야할 점

  • 좌측, 중앙, 우측이 아닌 다른 값을 입력했을 때 득점으로 인정되는 오류.

  • 경기 결과를 출력할 때 팀 이름을 직접 입력해야 했는데,
    ArrayList 첫 번째 값에 할당한 홈팀의 이름을 출력하는 방법 찾아보기

  • 처음 구상했던 키커와 골키퍼의 대결만으로 진행되는 게임이 부족하게 느껴졌음.
    키커와 골키퍼를 각각 포함한 홈팀과 어웨이 팀의 경기로 게임을 발전시켜보자.

  • 골키퍼와 키커 클래스의 생성자에 this가 들어간 것과 안 들어간 것에 대한 차이를 공부하자...


🍀 느낀점

게임의 코드를 짜는 과정에서, 처음 구상했던 기능들이 하나씩 구현되는 것을 보고 자신감이 많이 생겼다.
그러다보니 게임에 더 다양한 기능을 구현하고 싶은 욕심이 생긴다.
한편으론 지금 짠 코드들이 효율적으로 짜여진 코드일지에 대한 의문이 계속 생기기도 한다.
그래도 자신감을 잃지 않고 원하는 기능을 다 구현해낸 게임을 개발하여, 주위 사람들과 내 코드에 대해 피드백을 받으며 같이 공부해봐야겠다.

profile
반드시 해내야지

0개의 댓글