본문 바로가기

대학교 과제/웹 프로그래밍 기초 [ 2 - 2 ]

[명품 HTML5+CSS3+Javascript 웹 프로그래밍] - Open Challenge 08

반응형

1. 문제 안내


교재 8 Open Challenge 08를 구현하시오.


 드디어 한 학기가 끝났다. 제일 어리석은 변명은 "시간이 없어서"라는 변명이라지만, 개인적으로 바쁜 한학기를 보내 블로그 업로드에 신경을 쓰지 못하였다. 지금이라도 과제들을 정리하여 한번에 꾸준하게 업로드 했으면 좋겠다.

 

2. 코드 작성

 

- CSS

 

 과제를 제출하고 나서 알게 된 사실이지만, 교수님께서 CSS를 따로 주셨다고 한다... (심지어 몇가지 기능의 답까지.) 점수취득이 목적이 아니라 공부를 위한 것이기에 상관 없었지만 화면구성과 기능 구현에 많은 어려움을 느낀 것은 사실이다. 다음은 CSS코드이다.

 

<style>
      .num {
        color: blue;
        margin: 0px;
        padding: 0px;
        display: inline-block;
        font-size: 100px;
        height: 150px;
        width: 150px;
        text-align: center;

      }

      .display{
        padding: 0px;
        background-color: pink;
        width: 465px;
        border: 3px solid red;
      }

    </style>

 

 각각의 카드들을 div태그로 구현하였다. 따라서 세개의 div태그를 옆에 나란히 두어야 하기에 display를 inline-block으로 설정하였다. 또한 카드가 붙어있는 것처럼 보이기 위해 margin과 padding을 0px로 두어 서로 붙어 있게 하였다. 다음은 HTML 코드이다.

 

- HTML코드

 

<body>
    <h1>갬블링 게임</h1>
    <p>각 숫자를 클릭하면 0에서 2사이의 난수로 바뀝니다. 모두 같은 수가 나오면 승리합니다.</p>
    <hr>
    <div id="test">

    </div>
    <div class="display">
      <div onclick='change(this)' class='num' id='num1'>0</div>
      <div onclick='change(this)' class='num' id='num2'>0</div>
      <div onclick='change(this)' class='num' id='num3'>0</div>
    </div>
    <p id="result"></p>
  </body>

 

 id가 test인 div태그는 디버깅을위한 확인용 태그이니 신경스지 않아도 좋다. p태그는 결과를 출력하기 위한 태그이다. 다음은 JavaScript태그이다.

 

- JavaScript

 

 각 div태그의 리스너에 다른 함수를 넣는 방법도 생각했지만, 다른 id값을 주고 이를 함수안에서 비교해 구별하는 방법을 생각하였다. 다음은 JavaScript코드이다.

 

    <script>
      var num = new Array();
      var numInt1;
      var numInt2;
      function randomInt(){
        return Math.floor(Math.random()*3);
      }
      function change(obj){
        var t = document.getElementById("test");
        var divTag = document.getElementById("test");
        var tag = document.getElementById("num3");
        var num = randomInt();
        divTag.innerHTML = "실행됨 ㅋ" + divTag.innerHTML;

        if(obj == tag){
          divTag.innerHTML = "실행됨3";
          var pTag = document.getElementById("result");
          obj.innerHTML ="<div onclick='change(this)' class='num' id='num3'>" + String(num) + "</div>";

          if(numInt1 == numInt2 && num == numInt1){
            divTag.innerHTML = String(numInt1);
            var pTag = document.getElementById("result");
            pTag.innerHTML = "승리!";
          }else{
            pTag.innerHTML = "패배!";
          }

        }
        if(obj == document.getElementById("num2")){
          divTag.innerHTML = "실행됨2";
          obj.innerHTML = "<div onclick='change(this)' class='num' id='num2'>" + String(num) + "</div>";
          numInt2 = num;
          divTag.innerHTML = String(numInt2);
        }
        if(obj == document.getElementById("num1")){
          divTag.innerHTML = "실행됨1";
          obj.innerHTML = "<div onclick='change(this)' class='num' id='num1'>" + String(num) + "</div>";
          numInt1 = num;

        }
      }
    </script>

 

 

3. 결어

 

 코드를 보면 알겠지만, 중구난방의 코드이다. 그래도 과제를 푸는 과정 그대로를 올리기위해 많이 고치지는 않았다. 조금씩 코드를 깔끔하게 작성해나가는 방법을 스스로 터득하고 그 과정을 올리고 싶다.

반응형