Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 4-way handshake
- 함수형
- 프로젝트 계확
- 개발 모델
- 다단계 큐
- 인터넷계층
- 선언형
- CPU 스케줄링
- 관계형 데이터베이스
- 메모리
- 페이징 교체 알고리즘
- PERT/CPM
- 프로그래머스 데브코스
- 요구사항 분석
- 다크모드
- MVVM
- 지연시간
- nosql
- 프록시패턴
- 노출모듈패턴
- 링크계층
- modebit
- redis
- 럼바우
- 3-way handshake
- MongoDB
- 처리량
- 스레싱
- M/M
- 절차형
Archives
- Today
- Total
노트
[클라우딩 어플리케이션 엔지니어링 TIL] - 6주차 퍼즐 게임 본문
퍼즐 게임 명세서 기반 실습
1. 메인 페이지
게임 시작 버튼 구현
startButton.addEventListener('click', function () {
// 게임 페이지 show
const gameScreen = document.querySelector('.game-screen')
gameScreen.classList.remove('hide')
// 시작 페이지 hide
const startScreen = document.querySelector('.start-screen')
startScreen.classList.add('hide')
}
2. 게임 페이지
1) 원본 이미지 로드
startButton.addEventListener('click', function () {
...
// 원본 이미지 번호 선택
imageSet = Math.floor(Math.random() * 3) + 1
const originalImage = document.getElementById('originalImage')
originalImage.setAttribute('src', `./data/image${imageSet}/originalImage.png`)
}
2) 조각난 이미지 로드
startButton.addEventListener('click', function () {
...
const uniqueNumber = new Set()
while (uniqueNumber.size < 9) {uniqueNumber.add(Math.ceil(Math.random() * 9))}
imageIndexesArray = [...uniqueNumber]
for (let i = 0; i < 9; i++) {
const div = document.createElement('div')
div.classList.add('image-container')
const img = document.createElement('img')
img.setAttribute('src', `./data/image${imageSet}/image${imageIndexesArray[i]}.jpg`)
div.appendChild(img)
}
}
3) 조각난 이미지로 퍼즐 맞추기
startButton.addEventListener('click', function () {
...
div.addEventListener('click', (event) => {
const currentElement = event.target
// 이전에 선택한 이미지가 없다면
if (!previouslySelecetedElement) {
previouslySelecetedElement = currentElement
previouslySelecetedElement.style.opacity = 0.3
// 선택한 이미지가 있다면
} else {
// 이전에 선택한 이미지와 현재 선택한 이미지가 같을 경우
if (previouslySelecetedElement === currentElement) {
previouslySelecetedElement.style.opacity = 1
previouslySelecetedElement = null
// 이전에 선택한 이미지와 다를 경우
} else {
// 서로 위치 교체
const parent1 = previouslySelecetedElement.parentNode
const parent2 = currentElement.parentNode
parent1.removeChild(previouslySelecetedElement)
parent2.removeChild(currentElement)
parent1.appendChild(currentElement)
parent2.appendChild(previouslySelecetedElement)
previouslySelecetedElement.style.opacity = 1
}
}
})
puzzleContainer.appendChild(div)
}
4) 이미지 교체 버튼 구현
changeImageButton.addEventListener('click', function () {
imageSet = Math.floor(Math.random() * 3) + 1
const originalImage = document.getElementById('originalImage')
originalImage.setAttribute('src', `./data/image${imageSet}/originalImage.png`)
const puzzleImages = document.querySelectorAll('.container img')
puzzleImages.forEach((img, index) => {
img.setAttribute('src', `./data/image${imageSet}/image${imageIndexesArray[index]}.jpg`)
})
})
구현된 퍼즐 게임
'TIL' 카테고리의 다른 글
[클라우딩 어플리케이션 엔지니어링 TIL] - 7주차 퍼즐게임 추가 요구사항 (0) | 2024.05.29 |
---|---|
[클라우딩 어플리케이션 엔지니어링 TIL] - 7주차 리팩토링 (0) | 2024.05.28 |
[클라우딩 어플리케이션 엔지니어링 TIL] - 6주차 프로젝트 명세서 (0) | 2024.05.24 |
[클라우딩 어플리케이션 엔지니어링 TIL] - 6주차 피그마3 (0) | 2024.05.24 |
[클라우딩 어플리케이션 엔지니어링 TIL] - 6주차 피그마2 (0) | 2024.05.21 |