기억저장소

기억저장소

카테고리 없음

GWP 및 행사에 사용하기 좋은 뽑기판 (5x5)

roaminpixel 2023. 4. 3. 22:25
728x90

GWP나 행사에서 이벤트 진행할 때,

상품이 많이 없지만 재미를 살리기 위한 방법을 생각해보고, 만들어봤다.

다시 뽑기, 꽝이 있는 랜덤 뽑기 판을 만들면 될 것!

 

// 말이 랜덤이지만, 이미 세팅 됨.

 

다시뽑기

다음 기회에...

상품 보기

 

 

실제로 사용했고,
팀원들이 매우 재밌어했다.
그래서 나도 나름 뿌듯한 게임판을 만들었다고 생각했다 ^^


누구나 쉽게 사용하게 만들자! 라는 생각으로 아래와 같이 JS 코드를 만들었다.
images/image1~25.jpg 파일만 잘 만들면 된다 ^^!

아래는 JS  코드, HTML, CSS 다.

 

document.addEventListener("DOMContentLoaded", function () {
    const table = document.getElementById("imageTable");
    const numberOfRows = 5;
    const numberOfColumns = 5;
  
    // 이미지 경로를 저장하는 배열을 만듭니다.
    const imagePaths = [
      "images/image1.jpg", "images/image2.jpg", "images/image3.jpg", "images/image4.jpg", "images/image5.jpg",
      "images/image6.jpg", "images/image7.jpg", "images/image8.jpg", "images/image9.jpg", "images/image10.jpg",
      "images/image11.jpg", "images/image12.jpg", "images/image13.jpg", "images/image14.jpg", "images/image15.jpg",
      "images/image16.jpg", "images/image17.jpg", "images/image18.jpg", "images/image19.jpg", "images/image20.jpg",
      "images/image21.jpg", "images/image22.jpg", "images/image23.jpg", "images/image24.jpg", "images/image25.jpg"
    ];
  
    const isOpens = [];

    let cellNumber = 1;
  
    for (let i = 0; i < numberOfRows; i++) {
      const row = document.createElement("tr");
  
      for (let j = 0; j < numberOfColumns; j++) {
        const cell = document.createElement("td");

        cell.textContent = cellNumber;

        cell.addEventListener("click", function () {

            console.log(isOpens[cell.textContent]);

            if(isOpens[cell.textContent] != "1") {
                var imagePathTmp = "images/image" + `${cell.textContent}` + ".jpg";

                console.log(imagePathTmp);
                this.innerHTML = `<img src="`+imagePathTmp+`" alt="Image" >`;
      
                isOpens[cell.textContent] = "1";
            }
        });
  
        row.appendChild(cell);
        cellNumber++;
      }
  
      table.appendChild(row);
    }

});
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Image Table</title>
  <link rel="stylesheet" href="styles.css">
  
</head>
<body>
  <table id="imageTable">
  </table>

  <script src="script.js"></script>
</body>
</html>
html, body {
  height: 100%;
  margin: 0;
  padding: 0;
  font-family: Arial, sans-serif;
  overflow: auto;
}

header {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  text-align: center;
  background-color: rgba(255, 255, 255, 0.8); /* 배경색을 추가하고 약간 투명하게 만듭니다. */
  padding: 10px;
}

h1 {
  font-size: 2em;
  margin: 0;
}

body {
  display: flex;
  justify-content: center;
  align-items: center;
  
}

table {
  border-collapse: collapse;
  width: 100%;
  max-width: 100vh; /* 높이에 맞춰 테이블의 최대 너비를 설정합니다. */
  height: 80vh

}

td {
  width: 20%; /* 100% / 5 columns */
  height: 20%; /* 초기 높이를 0으로 설정합니다. */
  /*padding-top: 20%; /* 각 셀의 높이를 가로 크기에 맞춰 비율로 설정합니다. */
  border: 1px solid black;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  position: relative;
  font-size: 2em; /* 숫자의 크기를 조절합니다. */
}

img {
  max-width: 100%;
  max-height: 100%;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  transition: transform 0.3s; /* 효과를 추가합니다. */
}

 

728x90
반응형