CSS [크리스마스 해커톤] 공부하려고 스케이트 게임을 만들었어요
9421 단어 vueskateboardcssjavascript
이것은 진행 중인 작업이며 다른(더 나은) 방법으로 수행할 수 있었다는 것을 알고 있습니다. 내 계획은 "완벽"할 때까지 이 작업을 계속하는 것입니다. 플레이해보시면 가끔 버그가 있는걸 보실수도... 음 🤷♀️
게임 뒤에 숨겨진 생각
하루는 스케이트장에서 사람들이 스케이트장에서 돌을 던지는 이유를 생각했습니다. 스쿠터 꼬마들은 왜 차례를 기다리는 스케이트장 규칙을 지키지 않는 걸까? 그래서 바위와 스쿠터 꼬마를 피해야 하는 게임이 있으면 재미있을 것 같아요! 한동안 머릿속에 그런 생각이 들었지만 그렇게 할 동기가 없었습니다. 그러다 보니 Hashnode Christmas Hackathon ! 얼마나 좋은 기회입니까!
나는 어떻게 게임을 만들었는가
가능한 한 CSS를 고수하려고 최선을 다했습니다. Vue.js 프로젝트를 만들고 몇 가지 아이콘을 추가한 다음 페이지에 배치합니다. 다음은?
글쎄, 나는 스케이터 올리(점프)를 만드는 방법을 배워야 했기 때문에 조사를 좀 한 후에 다음과 같이 했습니다.
id = skater
로 div를 추가했습니다. #skater {
background-image: url("../../assets/skater.png");
width: 60px;
height: 60px;
background-size: 60px;
top: 190px;
position: relative;
}
.ollie {
animation: ollie 0.5s linear;
}
@keyframes ollie {
0% {
top: 190px;
background-image: url("../../assets/skater-ollie.png");
display: none;
}
30% {
top: 160px;
background-image: url("../../assets/skater-ollie.png");
}
50% {
top: 80px;
background-image: url("../../assets/skater-ollie.png");
}
80% {
top: 175px;
background-image: url("../../assets/skater-ollie.png");
}
100% {
top: 190px;
background-image: url("../../assets/skater-ollie.png");
display: none;
}
}
그런 다음 바위와 스쿠터에 대해 기본적으로 동일한 작업을 수행했지만 애니메이션이
infinite
여야 한다는 차이점이 있습니다(장식으로 추가한 '하늘'의 구름 포함).모든 것이 계획대로 움직이고 있었다. 충돌을 일으키는 방법을 알아내야 했습니다! 그래서 한동안 노력하고 노력한 끝에 다음 코드를 생각해 냈습니다.
setInterval(() => {
let skateTop = parseInt(window.getComputedStyle(this.skater).getPropertyValue("top"));
let rockLeft = parseInt(window.getComputedStyle(this.rock).getPropertyValue("left"));
let scooterLeft = parseInt(window.getComputedStyle(this.scooter).getPropertyValue("left"));
//collisions
//rock
if (rockLeft < 50 && rockLeft > 0 && skateTop >= 175) {
this.pause();
this.collidedRock = true;
}
//scooter
if (scooterLeft < 50 && scooterLeft > 0 && !this.skaterDown) {
this.pause();
this.collidedScooter = true;
}
}, 10);
따라서 10ms마다 스케이터가 스쿠터 또는 바위를 치고 있는지(중첩) 확인합니다. 그렇다면 게임을 일시 중지하고 필요한 경우 가장 높은 점수를 업데이트하고 "다시 시도"버튼을 추가합니다.
나는 무엇을 배웠는가
나는
animations
와 @keyframes
에 대해 그리고 그것이 얼마나 강력하고 재미있을 수 있는지에 대해 조금 배웠습니다. 나는 항상 사람들이 웹사이트에서 물건을 어떻게 움직이게 하는지 궁금했습니다! 한 번도 안 써본(😱) position: relative
도 조금 가지고 놀았어요.내 계획은 더 복잡한 페이지를 만들기 위해 계속 연구하는 것입니다. 재미로.
게임의 다음 단계
게임은 아직 끝나지 않았습니다. 아직 할 일이 많습니다. 가장 중요한 것은 테스트 추가입니다. 예, 테스트를 추가하지 않았고 짜증납니다. 내가 한 일을 테스트하는 방법을 모르겠습니다. 나는 아직도 그것을 알아 내려고 노력하고 있습니다. 건의사항이 있으시면 말씀해주세요!
추가하고 싶은 기능
게임
게임here을 할 수 있습니다. Vercel을 사용하여 배포했습니다.
Github 저장소here를 확인할 수 있습니다.
메모
내 코드를 개선하는 방법, 추가할 수 있는 새로운 기능 등에 대한 제안을 추가해 주세요! 나에게 연락하거나 Github에서 문제를 열 수 있습니다!
Reference
이 문제에 관하여(CSS [크리스마스 해커톤] 공부하려고 스케이트 게임을 만들었어요), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/evelynstender/i-made-a-skate-game-to-study-css-christmas-hackathon-1pf4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)