Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URLs added here will be added as <link>s in order, and before the CSS in the editor. You can use the CSS from another Pen by using its URL and the proper URL extension.

+ add another resource

JavaScript

Babel includes JSX processing.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Packages

Add Packages

Search for and use JavaScript packages from npm here. By selecting a package, an import statement will be added to the top of the JavaScript editor for this package.

Behavior

Auto Save

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

HTML

              
                <html>
    <head>
        <title>숫자야구</title>
        <link href="style.css" rel="stylesheet">
    </head>
    <body>
        <div class="wrapper">
            <h1>숫자야구, 하지 않겠는가? ⚾</h1>
            <div class="rule">
                <h2>규칙</h2>
                <p>1. 컴퓨터가 생각하고 있는 숫자 세 개를 맞추시면 됩니다. (단, 숫자 세 개는 중복되지 아니함) 범위는 1부터 9까지입니다. </p>
                <p>2. 여러분은 숫자를 입력하면 되고요. </p>
                <p>3. 입력한 숫자 중 자리와 숫자를 맞춘 것은 스트라이크입니다. 3스트라이크를 해야 성공이예요.  </p>
                <p>4. 입력한 숫자 중 자리는 틀렸지만 숫자를 맞춘 것은 볼입니다. </p>
                <p>5. 다 없으면 아웃입니당. </p>
                <p>6. 횟수 제한은 없으니까 편하게 맞춰보세요. </p>
            </div>
            <div class="input">
                <h2>세 자리 숫자를 입력하고 버튼을 눌러주세용! </h2>
                <input type="text" class="ballinput">
                <button class="ballbutton">눌러서 제출!</button>
                <button class="newgame">새 게임</button>
            </div>
            <div class="answer">

            </div>
        </div>
    </body>
    <script src="script.js"></script>
</html>
              
            
!

CSS

              
                @font-face {
    font-family: 'KyoboHandwriting2023wsa';
    src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/2404-2@1.0/KyoboHandwriting2023wsa.woff2') format('woff2');
    font-weight: normal;
    font-style: normal;
}

:root {
    --main-color: #234E70;
    --sub-color: #FBF8BE;
    --red: #cc0000;
    --green: #046307;
    --white: #ffffff;
}

body {
    font-family: 'KyoboHandwriting2023wsa';
    color: var(--main-color);
}

div div {
    margin-top: 10px;
    margin-bottom: 30px;
}

h1 {
    margin-bottom: 40px;
}

.wrapper {
    width:960px;
    margin: 0 auto;
}

p {
    font-size: 14pt;
    line-height: 1.5em;
    margin: 0;
}

input[type="text"] {
    font-family: 'KyoboHandwriting2023wsa';
    font-size: 14pt;
    border: 2px dotted var(--main-color);
    border-radius: 5px;
    width: 300px;
    height: 35px;
    background-color: var(--white);
}

button {
    font-family: 'KyoboHandwriting2023wsa';
    font-size: 14pt;
    border: 2px dotted var(--main-color);
    padding:10px;
    border-radius: 5px;
    color: var(--main-color);
    background-color: var(--sub-color);
    margin: 0 10px 0 10px;
    width: 100px;
}

.newgame:disabled {
    display: none;
}

.nohit {
    color: var(--red);
}

.homerun {
    color: var(--green);
}
              
            
!

JS

              
                const ballInput = document.querySelector('.ballinput');
const ballButton = document.querySelector('.ballbutton');
const ballNewgame = document.querySelector('.newgame');
const ballAnswer = document.querySelector('.answer');
// 입력창이랑 버튼은 바뀌는거 없으니깐 const로 가져왔습니다. 

ballNewgame.disabled = true;
let round = 0;
let strike = 0;
let ball = 0;
// 몇트째인가, 스트라이크, 볼

let numberArray = ['1','2','3','4','5','6','7','8','9'];
let ballQuestion = [];
for (let i = 0;i < 3;i++) {
    let ballPick = [];
    ballPick = numberArray.splice(Math.floor(Math.random() * (numberArray.length - i)),1)[0];
    ballQuestion.push(ballPick);
}
// 배열 만들기

ballButton.addEventListener('click',()=>{
    if (ballInput.value.length != 3) {
        strike = 0; //스트라이크
        ball = 0; //볼
        alert('세 자리 숫자를 입력해주세요! ');
        ballInput.value = '';
    }
    else if (new Set(ballInput.value).size < 3) {
        strike = 0; //스트라이크
        ball = 0; //볼
        alert('숫자는 중복되지 않는 세 자리 숫자입니다. ');
        ballInput.value = '';
    }
    else {
        strike = 0; //스트라이크
        ball = 0; //볼
        round ++;
        for (let i = 0;i < 3;i++) {
            if (ballQuestion[i] == ballInput.value[i]) {
                strike ++;
            }
            else if (ballInput.value.indexOf(ballQuestion[i]) != -1) {
                ball ++;
            }
        };
        if (ball == 0 && strike == 0) {
            let ballText = document.createElement('p');
            ballText.innerText = `Round ${round}: ${ballInput.value}, Out! 😥`;
            ballText.classList.add('nohit');
            ballAnswer.appendChild(ballText);
        }
        else if (strike == 3) {
            let ballText = document.createElement('p');
            ballText.innerText = `Round ${round}: ${ballInput.value}, ${strike}S ${ball}B ⚾`;
            ballText.classList.add('homerun');
            ballAnswer.appendChild(ballText);
            ballNewgame.disabled = false;
            ballNewgame.addEventListener('click',()=>{
                history.go(0);
            });
            
        }
        else {
            let ballText = document.createElement('p');
            ballText.innerText = `Round ${round}: ${ballInput.value}, ${strike}S ${ball}B`;
            ballAnswer.appendChild(ballText);
        }
        ballInput.value = '';
    }
});
//아 정말 힘들다... 

              
            
!
999px

Console