diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 14746e7..2a65317 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,5 +1,6 @@
+
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/documentation.md b/documentation.md
new file mode 100644
index 0000000..a252d58
--- /dev/null
+++ b/documentation.md
@@ -0,0 +1,101 @@
+soccer game middle
+
+Player {
+name ( VO )
+final static Integer chance
+}
+
+Attacker Extends Player {
+Integer goals
+
+shoot ( )
+}
+
+Striker extends Attacker {
+chance = 2
+}
+
+Midfielder extends Attacker {
+chance = 1
+
+shoot ( )
+}
+
+GoalKeeper extends Player {
+chance = 3
+
+saves ( 3 ~ 7 )
+}
+
+SoccerGame {
+winner
+List attackers;
+GoalKeeper goalkeeper;
+final matchpoint = 0;
+final Winner winner;
+
+ init(){
+ settingPlayer()
+ }
+
+ setMatchPoint() {
+ matchpoint = set
+ }
+
+ start(){
+ while(matchpoint != 0) {
+ shooting()
+ checkMatch()
+ printshooting()
+
+ }
+ }
+
+
+ printshooting(){
+
+ }
+
+ shootings () {
+ forEach Attackers {
+ checkGoals()
+ checkMatchPoints()
+ }
+ }
+
+ checkMatchPoints() {
+ if matchpoint == goals {
+ winner = name
+ }
+ }
+
+ checkGoals(Attackers) {
+ shoot = [ ]
+ for attackers.shoot
+ goalkeepr.keep
+
+ if shoot != keep {
+ attackers.goal()
+ }
+ }
+
+ setMatchPoint( matchpoint ){ this.matchpoint = matchpoint }
+
+ setting {
+ setStriker()
+ setMidfielder()
+ setGoalkeeper()
+ }
+
+ set … {
+ input(“입력”)
+ new
+
+ attackers add
+ }
+
+ setGoalkeeper {
+ goalkeeper = new GoalKeeper(“오예스”);
+ }
+
+}
diff --git a/src/main/java/SoccerGameApplication.java b/src/main/java/SoccerGameApplication.java
index 6185014..097f15a 100644
--- a/src/main/java/SoccerGameApplication.java
+++ b/src/main/java/SoccerGameApplication.java
@@ -1,5 +1,8 @@
+import game.SoccerGameController;
+
public class SoccerGameApplication {
public static void main(String[] args) {
-
+ SoccerGameController soccerGameController = new SoccerGameController();
+ soccerGameController.start();
}
}
diff --git a/src/main/java/entity/Attacker.java b/src/main/java/entity/Attacker.java
new file mode 100644
index 0000000..0773fbc
--- /dev/null
+++ b/src/main/java/entity/Attacker.java
@@ -0,0 +1,23 @@
+package entity;
+
+import vo.Name;
+import vo.Winner;
+
+public abstract class Attacker extends Player {
+ private Integer goals = 0;
+ public Attacker(String name, Integer chance) {
+ super(name, chance);
+ }
+
+ public Integer shoot(){
+ return (int)(Math.random()*10);
+ }
+
+ public Integer getGoals() {
+ return goals;
+ }
+
+ public void addGoals() {
+ goals += 1;
+ }
+}
diff --git a/src/main/java/entity/GoalKeeper.java b/src/main/java/entity/GoalKeeper.java
new file mode 100644
index 0000000..c4c14f7
--- /dev/null
+++ b/src/main/java/entity/GoalKeeper.java
@@ -0,0 +1,13 @@
+package entity;
+
+import vo.Name;
+
+public class GoalKeeper extends Player{
+ public GoalKeeper(String name) {
+ super(name, 3);
+ }
+
+ public Integer saves() {
+ return (int)(Math.random()*10);
+ }
+}
diff --git a/src/main/java/entity/Midfielder.java b/src/main/java/entity/Midfielder.java
new file mode 100644
index 0000000..ee804ff
--- /dev/null
+++ b/src/main/java/entity/Midfielder.java
@@ -0,0 +1,10 @@
+package entity;
+
+import vo.Name;
+
+public class Midfielder extends Attacker{
+
+ public Midfielder(String name) {
+ super(name, 1);
+ }
+}
diff --git a/src/main/java/entity/Player.java b/src/main/java/entity/Player.java
new file mode 100644
index 0000000..47e7610
--- /dev/null
+++ b/src/main/java/entity/Player.java
@@ -0,0 +1,22 @@
+package entity;
+
+import vo.Name;
+import vo.Winner;
+
+public class Player {
+ private Name name;
+ private Integer chance = 0;
+
+ public Player(String name, Integer chance) {
+ this.name = new Name(name);
+ this.chance = chance;
+ }
+
+ public Name getName() {
+ return name;
+ }
+
+ public Integer getChance() {
+ return chance;
+ }
+}
diff --git a/src/main/java/entity/Striker.java b/src/main/java/entity/Striker.java
new file mode 100644
index 0000000..a8c31e6
--- /dev/null
+++ b/src/main/java/entity/Striker.java
@@ -0,0 +1,9 @@
+package entity;
+
+import vo.Name;
+
+public class Striker extends Attacker {
+ public Striker(String name) {
+ super(name, 2);
+ }
+}
diff --git a/src/main/java/game/SoccerGameController.java b/src/main/java/game/SoccerGameController.java
new file mode 100644
index 0000000..bc62029
--- /dev/null
+++ b/src/main/java/game/SoccerGameController.java
@@ -0,0 +1,45 @@
+package game;
+
+import entity.Attacker;
+import entity.GoalKeeper;
+import vo.Name;
+import vo.Winner;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SoccerGameController {
+ private Winner winner;
+ private Integer currentpoint = 0;
+ private SoccerGameManager soccerGameManager = new SoccerGameManager();
+ private SoccerGameLogger soccerGameLogger = new SoccerGameLogger();
+ private SoccerGameScoreManager soccerGameScoreManager = new SoccerGameScoreManager();
+ private void shooting() {
+ for(Attacker attacker : soccerGameManager.getAttackers()){
+ soccerGameScoreManager.tryGoal(attacker, soccerGameManager.getGoalKeeper());
+ updateCurrentPoints(attacker);
+ }
+ }
+
+ private void updateCurrentPoints(Attacker attacker){
+ if(currentpoint < attacker.getGoals()){
+ currentpoint = attacker.getGoals();
+ setWinner(attacker.getName());
+ }
+ }
+
+ private void setWinner(Name name) {
+ this.winner = new Winner(name.getName());
+ }
+
+ public void start() {
+ soccerGameManager.init();
+
+ Integer cnt = 1;
+ while(soccerGameManager.getMatchpoint() > currentpoint){
+ shooting();
+ soccerGameLogger.printShooting(soccerGameManager.getAttackers(), cnt++);
+ }
+ soccerGameLogger.printWinner(winner);
+ }
+}
diff --git a/src/main/java/game/SoccerGameLogger.java b/src/main/java/game/SoccerGameLogger.java
new file mode 100644
index 0000000..1f6388c
--- /dev/null
+++ b/src/main/java/game/SoccerGameLogger.java
@@ -0,0 +1,27 @@
+package game;
+
+import entity.Attacker;
+import vo.Winner;
+
+import java.util.List;
+
+public class SoccerGameLogger {
+ public void printShooting(List attackers, Integer cnt){
+ System.out.println("\n" + cnt + "번째 슈팅결과");
+ for(Attacker attacker : attackers){
+ printAttackerGoals(attacker);
+ }
+ }
+
+ public void printAttackerGoals(Attacker attacker){
+ System.out.print(attacker.getName().getName() + ": ");
+ for(int i = 0; i < attacker.getGoals(); i++){
+ System.out.print("-");
+ }
+ System.out.println();
+ }
+
+ public void printWinner(Winner winner){
+ winner.printWinner();
+ }
+}
diff --git a/src/main/java/game/SoccerGameManager.java b/src/main/java/game/SoccerGameManager.java
new file mode 100644
index 0000000..e833369
--- /dev/null
+++ b/src/main/java/game/SoccerGameManager.java
@@ -0,0 +1,74 @@
+package game;
+
+import entity.Attacker;
+import entity.GoalKeeper;
+import entity.Midfielder;
+import entity.Striker;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Scanner;
+import java.util.stream.Collectors;
+
+public class SoccerGameManager {
+ Scanner sc = new Scanner(System.in);
+ private List attackers = new ArrayList<>();
+ private GoalKeeper goalKeeper;
+ private Integer matchpoint = 0;
+ private void setStrikers() {
+ System.out.print("공격수의 이름을 입력하세요: ");
+ List strikers = Arrays.stream(sc.nextLine().split(", "))
+ .collect(Collectors.toCollection(ArrayList::new));
+
+ for(String player : strikers){
+ attackers.add(new Striker(player));
+ }
+ }
+
+ private void setMidfielders() {
+ System.out.print("미드필더의 이름을 입력하세요: ");
+ List midfielders = Arrays.stream(sc.nextLine().split(", "))
+ .collect(Collectors.toCollection(ArrayList::new));
+
+ for(String player : midfielders){
+ Midfielder midfielder = new Midfielder(player);
+ attackers.add(midfielder);
+ }
+ }
+
+ private void setGoalKeepers() {
+ System.out.print("골키퍼의 이름을 입력하세요: ");
+ String player = sc.next();
+
+ goalKeeper = new GoalKeeper(player);
+ }
+
+ private void settingPlayers() {
+ setStrikers();
+ setMidfielders();
+ setGoalKeepers();
+ }
+
+ private void settingMatchPoint() {
+ System.out.print("매치포인트를 입력하세요: ");
+ matchpoint = sc.nextInt();
+ }
+
+ public void init(){
+ settingPlayers();
+ settingMatchPoint();
+ }
+
+ public List getAttackers() {
+ return attackers;
+ }
+
+ public GoalKeeper getGoalKeeper() {
+ return goalKeeper;
+ }
+
+ public Integer getMatchpoint() {
+ return matchpoint;
+ }
+}
diff --git a/src/main/java/game/SoccerGameScoreManager.java b/src/main/java/game/SoccerGameScoreManager.java
new file mode 100644
index 0000000..03c9e27
--- /dev/null
+++ b/src/main/java/game/SoccerGameScoreManager.java
@@ -0,0 +1,56 @@
+package game;
+
+import entity.Attacker;
+import entity.GoalKeeper;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SoccerGameScoreManager {
+
+ private boolean checkGoal(Attacker attacker, List keeps, List shoots){
+ Integer chance = 0;
+ for(Integer shoot : shoots){
+ chance += isKeepShoot(keeps, shoot);
+ }
+
+ if(chance == shoots.size()){
+ return true;
+ }
+ return false;
+ }
+
+ private Integer isKeepShoot(List keeps, Integer shoot){
+ if(!keeps.contains(shoot)){
+ return 1;
+ }
+ return 0;
+ }
+
+ private List tryShoot(Attacker attacker){
+ List shoots = new ArrayList<>();
+ for(int i = 0; i < attacker.getChance(); i++){
+ Integer shoot = (int)(Math.random()*10);
+ shoots.add(shoot);
+ }
+ return shoots;
+ }
+
+ private List tryKeep(GoalKeeper goalKeeper){
+ List keeps = new ArrayList<>();
+ for(int i = 0; i < goalKeeper.getChance(); i++){
+ Integer keep = (int)((Math.random()*4)+3);
+ keeps.add(keep);
+ }
+ return keeps;
+ }
+
+ public void tryGoal(Attacker attacker, GoalKeeper goalkeeper){
+ List shoots = tryShoot(attacker);
+ List keeps = tryKeep(goalkeeper);
+
+ if(checkGoal(attacker, keeps, shoots)){
+ attacker.addGoals();
+ }
+ }
+}
diff --git a/src/main/java/vo/Name.java b/src/main/java/vo/Name.java
new file mode 100644
index 0000000..bf3da5f
--- /dev/null
+++ b/src/main/java/vo/Name.java
@@ -0,0 +1,13 @@
+package vo;
+
+public class Name {
+ private final String name;
+
+ public Name(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+}
diff --git a/src/main/java/vo/Winner.java b/src/main/java/vo/Winner.java
new file mode 100644
index 0000000..45075b8
--- /dev/null
+++ b/src/main/java/vo/Winner.java
@@ -0,0 +1,17 @@
+package vo;
+
+public class Winner {
+ private final String winner;
+
+ public Winner(String winner) {
+ this.winner = winner;
+ }
+
+ public String getWinner() {
+ return winner;
+ }
+
+ public void printWinner() {
+ System.out.println("승리자는 " + winner + "입니다.");
+ }
+}