Python을 사용하여 Excitebike에 대한 오마주 만들기

Python을 사용하여 Excitebike에 대한 오마주 만들기

Excitebike는 점프를 통해 오토바이를 탐색하고, 장애물을 우회하고, 결승선을 향해 속도를 내는 횡스크롤 게임입니다.





Nintendo는 NES용으로 이 BMX 레이싱 게임을 처음 출시했습니다. 거기에서 회사는 Excitebike를 현대화하여 N64와 결국 Wii에 출시했습니다.





NES 콘솔이 더 이상 존재하지 않아 Excitebike를 다시 플레이하기 어렵습니다. Wireframe Magazine의 일부 복고풍 팬 덕분에 Python 코드 스니펫으로 이 NES 클래식을 Raspberry Pi 또는 가정용 PC에서 몇 시간 동안 재미있게 재현할 수 있습니다.





MAKEUSEOF 오늘의 비디오

코드 가져오기 및 설정

nano 또는 vim을 사용하여 파이썬 코드를 편집할 수 있지만 모든 기능을 활용하고 싶을 것입니다. 텍스트 편집기 또는 IDE .

Excitebike에 대한 이 경의에서 구축된 기능을 지원하려면 Pygame Zero를 설치해야 합니다. Pygame Zero에는 게임 제작자가 간단한 기초를 반복할 필요 없이 집중할 수 있는 Python 모듈이 포함되어 있습니다.



PC에 python3이 설치되어 있지 않은 경우 다음을 수행할 수 있습니다. 최신 버전 다운로드 파이썬에서 직접. 당신은 또한 원할 것입니다 PIP가 설치되어 있는지 확인 도.

최신 버전의 Python 및 PIP가 설치된 상태에서 PowerShell 또는 Linux 터미널을 열고 다음을 입력합니다.





pip3 install pgzero 

마지막으로 Wireframe 매거진의 GitHub 리포지토리에서 Python 코드 사본을 가져와야 합니다. 터미널에 다음 명령을 입력합니다.

git clone https://github.com/Wireframe-Magazine/Wireframe-66.git

또는 다음을 수행할 수 있습니다. 압축 코드를 다운로드 Wireframe GitHub 페이지에서 직접.





코드 분해

코드가 하는 일을 이해하려면 먼저 Excitebike 게임을 실행하세요. 소스 코드로 이동한 다음 Pygame Zero를 사용하여 실행하면 됩니다.

cd Wireframe-66/source-code-excitebike/ 
pgzrun exitebike.py

그런 다음 텍스트 편집기로 exitebike.py 파일을 열어 코드를 볼 수 있습니다.

  excitebike 파이썬 코드 스니펫

그만큼 그리다 함수는 자전거 이미지가 움직일 때 배경을 그립니다. ㅏ ' 머무르다 '는 화면에 그려지는 블록을 의미합니다. '라는 단어는 배경,' 배경 이미지를 나타냅니다(이미지를 배경 블록에 연결하는 것은 가져온 Pygame Zero 모듈 덕분입니다).

def draw(): 
screen.blit("background", (0, 0))
drawTrack()
bike.draw()
screen.draw.text("LAP TIME: "+str(int(time.time() - startTime)), (20, 555),color=(255,255,255) , fontsize=50)
screen.draw.text("LAST LAP: "+str(lastLap), topright = (780, 555),color=(255,255,255) , fontsize=50)

또한 랩 시간과 마지막 랩에 대한 계산을 확인할 수 있습니다(이는 화면 하단의 시간 카운터로 표시됨). 랩 타임은 초기 오른쪽 화살표 키 누름(시작 시간)과 현재 시간 간의 차이를 지속적으로 계산합니다.

마지막 랩도 비슷한 계산입니다. 시작 시간 대신 오토바이가 미리 정의된 트랙 위치( 트랙포스 코드에서 < -4800). 아래 따옴표로 묶인 항목은 이미지를 나타냅니다.

이 코드는 화면의 특정 간격과 화면의 특정 위치에 이미지 블록을 그립니다. 제공된 군중 이미지는 너비가 100픽셀에 불과합니다. 그러나 아래의 코드는 컴퓨터에 이미지를 그려야 할 때를 알려줌으로써 마치 오토바이가 움직일 때 뒤에 시뮬레이션된 군중이 있는 것처럼 보이게 합니다.

바위 이미지는 화면에 두 부분으로 표시됩니다. 아래 코드의 두 번째 및 세 번째 줄은 함께 작동하여 깔끔한 방식으로 풍경을 시뮬레이션합니다.

파이썬 코드의 백업 복사본을 만든 후에는 화면의 바위에 어떤 일이 일어나는지 보려면 아래 숫자를 변경해 보세요!

screen.blit("crowd1", ((t*100)+trackOffset-100, 0)) 
screen.blit("rock1", ((t*100)+trackOffset-100, 270))
screen.blit("rock1", ((t*100)+trackOffset-50, 270))

오토바이를 몬스터 트럭, 사륜차 또는 다른 차량으로 교체하시겠습니까? 결승선까지 유니콘을 경주하고 싶습니까?

50x50px 이미지(투명 배경 포함)를 그리기만 하면 됩니다. 그런 다음 이 파일(picture.png)을 ' 이미지 ' 폴더(내 소스 코드-excitebike 폴더). 사실감을 더하기 위해 두 개의 이미지(하나는 높이가 약간 높아짐)를 만들고 싶을 것입니다. 참조를 '로 변경하기만 하면 됩니다. 여기:

bike = Actor('bike0', center=(150, 350), anchor=('center', 'bottom'))
  트럭으로 excitebike 파이썬 게임

또한 찾기 및 바꾸기 작업을 그림 이름(이미지 확장자 제외)으로 수행해야 합니다.

체크바이크 램프() 당신의 오토바이(또는 트럭)가 경사로를 올라갈 수 있도록 Y축을 계산하는 작업을 하는 기능입니다. 그만큼 키보드.오른쪽 그리고 키보드.왼쪽 매개변수는 업데이트() 기능.

이 코드 비트는 (사용자가 키보드에서 누르는 키에 따라) 오토바이 속도를 줄이거나 속도를 높이도록 컴퓨터에 지시합니다. 번역: 오토바이가 더 빨리 움직일수록 Y축의 수가 더 높아집니다(또는 매우 큰 점프).

횡으로, on_key_down(키) 기능은 오토바이를 급강하로 보냅니다.

ps4 게임 환불해주실 수 있나요?
if key.name == "DOWN": 
bike.direction = 1
bike.laneY = limit(bike.laneY + 50, 375, 525)
bike.y += bike.direction

그만큼 먹 레인 매개변수는 다음 계산을 사용하여 오토바이 속도를 줄입니다.

muckLane = int((bike.laneY-375)/50)+1

코드의 66행은 화면에 'muck' 이미지를 표시할 시점을 결정합니다. 이제 컴퓨터는 오토바이가 진흙탕을 지날 때를 알고 있으므로 트랙의 흙탕물 위로 이동할 때 오토바이 속도를 절반으로 줄입니다. muckLane 값을 /50에서 /25 또는 /75로 변경하여 다음에 어떤 일이 발생하는지 확인하십시오.

레이서(에헴, 파이썬 프로그래머)! 엔진을 시작하십시오!

Excitebike에 대한 경의를 처음부터 프로그래밍하는 것이 익숙하지 않더라도 이 코드는 여전히 훌륭한 입문서입니다. 그것을 조정하고 변경 사항의 시각적 영향을 깨닫고 많은 것을 배울 수 있습니다. 게임에 더 많은 기능이나 AI 레이서를 추가하려고 하시겠습니까? 그것을 위해 가십시오!

약간의 Python 연습을 통해 시도해 볼 수 있는 또 다른 아이디어는 4~5회 후에 결승선을 통과하면 다른 레벨을 추가하는 것입니다. 또한 1등, 2등, 3등에 대한 보상을 추가할 수도 있습니다. 1위라면 군중 응원 오디오 파일도 추가하세요! 많은 가능성이 있습니다.

Excitebike 개선 사항이 만족스러우면 텍스트 어드벤처 게임 제작에 도전해 보시지 않겠습니까? 몇 시간, 며칠, 심지어 몇 주 동안 흥미진진한 무언가를 배울 수 있도록 도와줄 다양한 부분이 있습니다!