[JavaScript] 승부차기 게임 만들기

DevHwanㅤ

·

2018. 8. 10. 00:19

이번 아시안 게임에서 한일전이 한번 나오지 않을까 하는 마음에 승부차기 게임을 만들었다.  순서대로 슛을 쏘아서 스코어를 갱신.

마지막엔 스코어를 비교해서 3가지의 결과를 도출하는 게임이다. 팀은 한국과 일본이며

우선 구조부터 보자.


HTML






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
32
33
34
35
36
<body>
  <div class="wrap">
    <div class="score-board">
      <div class="korea-shots">
        <span>한국 남은슛</span>
        <span id="kr-number">5</span>
        <span>번</span>
      </div>
      <div class="japen-shots">
        <span>일본 남은슛</span>
        <span id="jp-number">5</span>
        <span>번</span>
      </div>
      <div class="korea-score">
        <div class="score-name"><img src="./img/kor-flag.jpg" alt="flag" width="40%">한국<span id="kr-score" class="panel-score">0</span></div>        
      </div>
      <div class="japen-score">
        <div class="score-name"><span id="jp-score" class="panel-score">0</span>일본<img src="./img/japen-flag.jpg" alt="flag" width="40%"></div>        
      </div>
      <div id="score-text">
      Shoot 버튼을 클릭해서 진행합니다.
      </div>
    </div>
    <div class="control-panel">
      <div class="div-korea">
        <div class="panel-name">한국</div>
        <button onclick="onKoreaShoot()" class="btn-korea"> Shoot</button>
      </div>
      <div class="div-japen">
        <div class="panel-name">일본</div>
        <button onclick="onJapenShoot()" class="btn-japen" disabled> Shoot</button>
      </div>
    </div>
  </div>
</body>
 
cs


구성은 간단하다. 아래에 슛버튼을 누를수있는 컨트롤 패널이 있으며 위에는 스코어가 표시될 점수 , 남은슛 횟수 , 아래에 상황을

보여줄 상황판이 있다. 그리고 자세히 보면 컨트롤 패널에 일본 슛 버튼이 disabled 되있는걸 볼 수가 있다. 한국팀이 먼저 슈팅을

시작한다는 뜻이다. 레이아웃도 간단히 구성하였고 다음 CSS를 보자.


CSS



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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
body{
  font-family: sans-serif;
}
img{
  vertical-align: middle;
}
  .panel-score{
    font-size: 30px;
    margin: 25px;
  }
  .wrap{
    width: 100%;
  }
  .korea-shots{
    display: inline-block;
    width: 45%;
    text-align: center;
    background: white;
  }
  .japen-shots{
    display: inline-block;
    width: 45%;
    text-align: center;
    background: white;
  }
  .score-board{
    width: 500px;
    height: 400px;
    margin: 0 auto;
  }
  .korea-score{
    width: 45%;
    float: left;
    margin-top:20%;
    text-align: center;
    font-size: 18px;
  }
  .japen-score{
    width:45%;
    float: right;
    margin-top:20%;
    text-align: center;
    font-size: 18px;
    }
  #score-text{
    height: 30px;
    background-color: #fcfcfc;
    text-align: center;
    margin-top:60%;
    border-radius: 10px;
    border :2px solid steelblue;
  }
  .control-panel{
    width: 500px;
    margin: 0 auto;
    height: 200px;
  }
  .div-korea{
    width: 50%;
    float: left;
    margin: 0 auto;
    text-align: center;
    margin-top:10%;
  }
  .div-japen{
    width: 50%;
    float: left;
    margin: 0 auto;
    text-align: center;
    margin-top:10%;
  }
  button{
    padding: 20px 40px;
    border-radius: 10px;
    background-color: #fcfcfc;
    border: 1px solid #dddddd;
  }
  button:hover{
    border : 1px solid steelblue;
    color: steelblue;
    transition: 0.8s;
  }
  button:enabled{
    color: steelblue;
    font-weight: bold;
  }
 
cs

딱히 특별한건 없지만 처음에 시작할때 한국팀이 먼저 시작한다는걸 알리기 위해 enabled에 컬러와 bold를 주었다. 브라우저에서 

실행해 보자.

위와 같은 결과가 나온다. 배경으로 축구장 배경도 넣고 해봤는데.. 별로였다. 역시 디자인은 어려운 것 같다..

여튼 제법 승부차기 게임 같은 화면 구성을 가진다. 저기서 바뀌는건 상황판 , 스코어 , 남은슛 이다. 

Script는 다음에 조금 더 알아보자.

반응형