back

  • person_pin
  • calendar_today
  • remove_red_eye

[JS/jQuery] 야구 게임 / PHP 간단한 숫자 야구 게임

페이지 정보

작성자 webpaper 댓글 0건 조회 6,939회 작성일 19-02-20 09:49

본문


PHP 웹페이지로 만든 간단한 숫자 야구게임 


 

방식 

1. 1~9 사이의 숫자 중 중복되지 않는 3자리의 숫자를 입력한다. 

2. 세자리의 숫자 중 숫자와 자리가 모두 맞으면 스트라이크 

3. 숫자는 맞고, 자리가 틀리면 볼 

4. 1번 숫자를 입력하는 것이 1회가 되며, 9회까지 기회가 제공됨.

5. 입력된 숫자 중 스트라이크와 볼이 모두 없으면 아웃이 되며, 3아웃이 되면 게임이 종료된다. 
 

#1. 정답이 될 3자리 숫자를 랜덤 함수를 이용해서, 만든다. 

function makeNum(){
    //중복없는 3자리 숫자 생성
    var numbers = [];
    var pickNumbers = 3;
 
    for(insertCur = 0; insertCur < pickNumbers ; insertCur++){
        numbers[insertCur] = Math.floor(Math.random() * 9) + 1;
 
        for(searchCur = 0; searchCur < insertCur; searchCur ++){
            if(numbers[insertCur] == numbers[searchCur]){
                insertCur--; // insertCur를 앞으로 민다
                break;
            }
        }
    }
    return numbers;
}

#2. 입력된 숫자와 정답숫자를 비교 

function setGame(a,b){
//  console.log(a);//공격번호
//  console.log(b);//맞출번호
     
    var sCnt = 0; // 스트라이크
    var bCnt = 0; // 볼
 
    for(var i = 0; i<3; i++){
         
        if(a[i] == b[i]){
            //자리와 숫자가 맞으면 Strike 증가
            sCnt++;
        }else{
            for(var j = 0; j<3; j++){
                //자리가 맞지 않고 숫자만 맞을 경우 Ball 증가
                if(a[j] == b[i]){
                    bCnt++;
                }
            }
        }
    }
 
    gameCnt++; // 실행횟수 증가
 
        // Strike 도 Ball 도 없는 경우 Out Count 증가
    if(sCnt == 0 && bCnt == 0){
        gameOutCnt++;
    }
 
    // Outdl 3일 경우 // 9번의 기회가 종료될때까지 3Strike가 되지 않은 경우
    if(gameOutCnt > 2 || gameCnt == 9 && sCnt != 3){
        chkGameOver = true; 
    }
 
        if(sCnt == 3){
 
              // win
 
        }
 
}

#3. 게임의 재미를 위해 최초로 숫자를 입력한 후에는 다음 입력시까지 30초의 제한을 둔다. 

function statrTimer(){
    //타이머 
    if(setTimer == null){
        timer = 30;
        setTimer = setInterval(function() { 
             
            // 10초 이하일 경우 숫자에 색상 추가
            if(timer < 10 ){
                if($(".timer").hasClass() != 'on'){
                    $(".timer").addClass('on');
                }
            }
             
            if(timer == 0 ){
                // 제한시간 종료 시 숫자는 000 으로 입력됨
                stopTimer('end');
                statrTimer();
            }else if(chkGameOver == true){
                // 게임종료시 타이머 종료
                stopTimer();
            }else{
                // 타이머 화면 표출 영역
                $(".timer").html(timer); 
                timer--; 
            }
        }, 1000);
    }
 
}
 
 
function stopTimer(a){
    // 타이머 중지
    if(a=='end'){
        // 타이머 오버 시 000 입력
        setGame('000',rndNum);
    }
 
    // 타이머 색상 초기화
    $(".timer").removeClass('on');
 
    // 타이머 종료설정
    clearInterval(setTimer);
    setTimer = null;
    $(".timer").html('30');
}

그렇게 만들어진 게임