diff --git a/src/main/java/Attacker.java b/src/main/java/Attacker.java new file mode 100644 index 0000000..3e3feb8 --- /dev/null +++ b/src/main/java/Attacker.java @@ -0,0 +1,21 @@ +import java.util.Random; + +public class Attacker extends SoccerPlayer{ + Attacker(String name){ + super(name); + } + + @Override + public void shoot(Keeper keeper){ + Random random = new Random(); + + int shoot1 = random.nextInt(11); + int shoot2 = random.nextInt(11); + + if (keeper.block(shoot1) || keeper.block(shoot2)){ + goal(); + } + + printScore(); + } +} diff --git a/src/main/java/Keeper.java b/src/main/java/Keeper.java new file mode 100644 index 0000000..b46c4d2 --- /dev/null +++ b/src/main/java/Keeper.java @@ -0,0 +1,38 @@ +import java.util.Random; + +public class Keeper { + private String name; + private int keep_count; + Keeper(String name){ + this.name = name; + this.keep_count = 3; + } + + public boolean block(int shoot){ + Random random = new Random(); + int blockShoot = random.nextInt(5) + 3; + if (shoot >= 2 && shoot <= 7 && keep_count > 0){ + boolean bool = check(shoot, blockShoot); + return bool; + } + if (shoot >= 2 && shoot <= 8){ + return true; + } + return false; + } + + + public void setCount(){ + keep_count = 3; + } + + public boolean check(int shoot, int blockShoot){ + if (shoot == blockShoot){ + keep_count--; + return false; + } + return true; + } + + +} diff --git a/src/main/java/Midfielder.java b/src/main/java/Midfielder.java new file mode 100644 index 0000000..5b98b53 --- /dev/null +++ b/src/main/java/Midfielder.java @@ -0,0 +1,21 @@ +import java.util.Random; + +public class Midfielder extends SoccerPlayer { + Midfielder(String name) { + super(name); + } + + public void shoot(Keeper keeper) { + Random random = new Random(); + + int shoot = random.nextInt(11); + + boolean shootBool = keeper.block(shoot); + + if (shootBool){ + goal(); + } + + printScore(); + } +} diff --git a/src/main/java/SoccerGameApplication.java b/src/main/java/SoccerGameApplication.java index 6185014..4733a80 100644 --- a/src/main/java/SoccerGameApplication.java +++ b/src/main/java/SoccerGameApplication.java @@ -1,5 +1,71 @@ +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Scanner; + public class SoccerGameApplication { public static void main(String[] args) { + List names = inputNames("공격수"); + Attacker attacker1 = new Attacker(names.get(0)); + Attacker attacker2 = new Attacker(names.get(1)); + + names = inputNames("미드필더"); + Midfielder midfielder1 = new Midfielder(names.get(0)); + Midfielder midfielder2 = new Midfielder(names.get(1)); + + names = inputNames("골키퍼"); + Keeper keeper = new Keeper(names.get(0)); + + int matchPoint = inputMatchPoint(); + boolean isNotGameDone = true; + + int count = 1; + + List players = new ArrayList(); + players.add(attacker1); + players.add(attacker2); + players.add(midfielder1); + players.add(midfielder2); + + while(isNotGameDone){ + System.out.printf("\n%d번째 슈팅결과", count); + printResult(players, keeper); + count++; + isNotGameDone = players.stream() + .allMatch(player -> check(player, matchPoint)); + keeper.setCount(); + } + + } + static void printResult(List players, Keeper keeper){ + for (SoccerPlayer soccer : players){ + System.out.printf("\n%s: ", soccer.getName()); + soccer.shoot(keeper); + } } + + static boolean check(SoccerPlayer player , int matchPoint){ + if (player.getScore() == matchPoint){ + System.out.printf("\n\n승리자는 %s 입니다.", player.getName()); + return false; + } + return true; + } + + static int inputMatchPoint(){ + Scanner sc = new Scanner(System.in); + System.out.print("매치포인트를 입력하세요 : "); + + return sc.nextInt(); + } + + static List inputNames(String position){ + Scanner sc = new Scanner(System.in); + System.out.printf("%s의 이름을 입력하세요 : ", position); + List names = Arrays.asList(sc.nextLine().split(", ")); + + return names; + } + } diff --git a/src/main/java/SoccerPlayer.java b/src/main/java/SoccerPlayer.java new file mode 100644 index 0000000..a2d07c9 --- /dev/null +++ b/src/main/java/SoccerPlayer.java @@ -0,0 +1,28 @@ +public abstract class SoccerPlayer{ + private String name; + private int score; + + SoccerPlayer(String name){ + this.name = name; + this.score = 0; + } + public String getName(){ + return name; + } + + public void goal(){ + this.score += 1; + } + + abstract void shoot(Keeper keeper); + + public int getScore() { return score; } + + public void printScore(){ + for(int i = 0; i < score; i++){ + System.out.print("-"); + } + } + + +}