본문 바로가기

오늘 하루도 열심히 살자

#Pixel #Art #HTML #CSS #JavaScript #Vue.Js #C #C++ #Python #Java #React

HTML,CSS,JavaScript/HTMLGAME

[HTML, JAVASCRIPT] 클릭커, 방치형 게임 제작해보기 (3) _ 구매 제작

반응형

 [HTML, JAVASCRIPT]  클릭커, 방치형 게임 제작해보기 ( 3 ) _ 구매 아이템 만들기  

 

안녕하세요.

 

 오늘은 구매 가능 아이템을 만들어서 한번 클릭시 추가적으로 클릭하게 해주는 기능을 구현해보도록 하겠습니다. (디자인은 하지않겠습니다.. 이쁘게 할 자신이 없습니다.)

 

2021.11.03 - [HTML.CSS.JAVASCRIPT] - [HTML, JAVASCRIPT] 클릭커, 방치형 게임 제작해보기 (2) _ Save, Load

 

 

[HTML, JAVASCRIPT] 클릭커, 방치형 게임 제작해보기 (2) _ Save, Load

 [HTML, JAVASCRIPT] 클릭커, 방치형 게임 제작해보기 ( 2 ) _ 저장, 불러오기 만들기  안녕하세요.  오늘은 저장, 불러오기를 만들어서 새롭게 추가하는 항목들을 좀 더 편하게 테스트 하기 위해 만들

jjaeho.tistory.com

2021.11.01 - [HTML.CSS.JAVASCRIPT] - [HTML, JAVASCRIPT] 클릭커, 방치형 게임 제작해보기 (1) _ 기본 제작

 

 

[HTML, JAVASCRIPT] 클릭커, 방치형 게임 제작해보기 (1) _ 기본 제작

 [HTML, JAVASCRIPT]  클릭커, 방치형 게임 제작해보기 ( 1 ) _ 기본틀 만들기  안녕하세요. 지금부터 첫 번째 프로젝트인 클릭커 게임(clicker game) 을 제작해 보도록 하겠습니다.  여러 다양한 제작 방

jjaeho.tistory.com

 

 시작해볼까요?

 

1. 상점을 추가하기 (button 추가하기)

 

<button class="꾸미기" onclick="store()">Store</button>

 

style태그는 편하신데로 하시면 되겠습니다. onclick으로 상점 클릭을 구현할예정입니다.

 

 

2. 기능 구현하기 (JavaScript 구현하기)

 

var plusScore = 0;

function store(){
    if(score >= 20){
    score = score - 20;
    plusScore = plusScore + 1;
    update();
    } else {
    alert("저리가");
    }
}

 

 

이렇게 새로운 항목을 추가해주시면 됩니다. [ 점수 20에 추가 클릭수 1 증가 ] 를 만들었습니다.

 

끝입니다.

 

정말 간단하죠? 

 

그럼 새롭게 현재 한번 클릭시 증가하는 Score를 표시하는 칸을 만들어보겠습니다.

 

 

3. 추가 클릭수 확인가능한 문구 추가해보기 (메세지 추가)

 

<div>
<p class="now" id="nowPlusScore">현재 추가 클릭수는 0 입니다.</P>
</div>

 

 HTML파일에 한 줄 추가해주겠습니다. 여기서 끝나면 변경되지 않기에 실시간으로 알기위해서는 자바스크립트로 구현을 해야합니다.

 

4. 실시간으로 볼 수 있게 바꾸자

 

// 기존 update 함수에 새로운 항목을 넣으시면 됩니다.

function update(){
 document.querySelector("#countNum").value = score;
 //저는 여기에 추가하겠습니다.
 document.querySelector("#nowPlusScore").innerHTML = "현재 추가 클릭수는 "+ plusSocre + " 입니다.";
}

 

이렇게 되면 현재 추가로 클릭되는 숫자를 파악할수 있습니다. 

 

구매 전과 후에 사진입니다.

 

자 여기서 확실히 알고 가셔야 할게 있습니다.

 

// 저장을 하시고 새로고침을 한 후에 불러오기를 할 경우 Score만 불러오기 성공하고 추가 클릭수는 불러와지지 않습니다. 그 이유는 애초에 저장 항목을 추가해주지 않았기 때문입니다. 새롭게 저장 항목을 추가해주겠습니다.

 

5. Store도 저장슬릇에 추가해주자

 

//기존 함수에 추가하시면 됩니다.

function save(){
    localStorage.setItem("score",score);
    localStorage.setItem("plusScore",plusScore);
}

function load(){
    score = localStorage.getItem("score");
    score = parseInt(score);
    plusScore = localStorage.getItem("plusScore");
    plusScore = parseInt(plusScore);
    update();
}

 

정말 간단하지 않습니까?

 

앞으로는 반복적인 작업만 해주시면 다 만드실 수 있는 실력이 됩니다.

 

코드를 추가하시고, 클릭을 잔뜩 해보시고 저장하고 불러와보시면 잘 되는 것을 알 수 있습니다.

 

끝~

앞으로 제작하게 될 부분은 컨셉, 아이템 구매시 요구로 하는 Score 증가 입니다.

 

* 번외 CSS를 조금 수정했습니다.

+ 종합본 올려드리겠습니다.

 

- HTML -

<body>
    <div>
        <button class="saveAndLoad" onclick="save()">저장하기</button>
        <button class="saveAndLoad" onclick="load()">불러오기</button>
    </div>
    <div >
        <p class="now" id="nowPlusScore">현재 추가 클릭수는 +0 입니다.</p>
    </div>
    <div class="position">
        <input id="countNum" class="counting" disabled  type="text" value="0">
        <div  class="count" >
            <button style="font-size:2em;" onclick="add()">Click</button>
            <button style="font-size:2em;" onclick="store()">Store</button>
        </div>
    </div>
    <script src="app.js"></script>
</body>

- CSS -

* {
  padding: 0;
  margin: 0;
}

body {
  display: flex;
  align-items: center;
  flex-direction: column;
}

.saveAndLoad {
  width: 10vh;
  height: 3vh;
  margin: 2vh;
  border-radius: 15px;
}

.now {
  font-size: 2em;
  text-align: center;
}

.position {
  display: flex;
  flex-direction: column;
}

.counting {
  margin: 12vh auto;
  text-align: center;
  height: 10vh;
  font-size: 2em;
  width: auto;
  font-weight: 800;
}

.count {
  display: flex;
  justify-content: space-around;
}

- JAVASCRIPT -

var score = 0;
var plusScore = 0;

function add() {
    score = score + 1 + plusScore;
    update()
}

function update() {
    document.querySelector("#countNum").value = score;
    document.querySelector("#nowPlusScore").innerHTML = "현재 추가 클릭수는 +"+plusScore+" 입니다.";
}

function store(){
    if(score >= 20){
        score = score - 20;
        plusScore = plusScore + 1;
        update()
    } else {
        alert("저리가");
    }
}



function save(){
    localStorage.setItem("score",score);
    localStorage.setItem("plusScore",plusScore);

}

function load(){
    score = localStorage.getItem("score");
    score = parseInt(score);
    plusScore = localStorage.getItem("plusScore");
    plusScore = parseInt(plusScore);
    update()
}

 

( 굳이? 이지만 ) 혹시 몰라서 파일 업로드 해두겠습니다. 용량이 매우 작아요~~

 

app.js
0.00MB

 

index.html
0.00MB

 

style.css
0.00MB

 

반응형