python 을 이용 한 뱀 탐식 게임 을 한 걸음 씩 가르쳐 드릴 게 요.
며칠 전에 별 에서 어떤 사람 이 뱀 을 탐식 한 다 는 말 을 하 자 단번에 나의 흥 미 를 끌 었 다.왜냐하면 노키아 가 패권 을 잡 았 던 시대 에 이 게임 은 명작 중의 명작 이 었 기 때문이다!파 이 썬(뱀)으로 뱀 놀 이 를 하 는 것 은 더 할 나 위 없 이 적합 하 다.🤣🤣🤣
먼저 아래 의 이 효과 도 를 통 해 느껴 보 세 요!
환경
운영 체제:Windows
파 이 썬 버 전:3.7.3
2 수요 분석
뱀 을 탐식 하 는 게임 요소 와 게임 규칙 을 살 펴 보 자.
우선 뱀 을 탐 내 고 음식 을 먹 어야 한다.뱀 을 잡 아 먹 으 려 면 위아래 로 이동 해 먹 이 를 구 해 야 한다;탐식 사 는 음식 을 먹 은 후 자신의 길이 가 증가 하 는 동시에 음식 이 사라 지고 무 작위 로 새로운 음식 을 생 성 한다.뱀 이 사방 벽 에 닿 거나 자신의 몸 에 닿 으 면 게임 이 끝난다.
게임 규칙 은 이렇게 간단 하 다.그 다음 에 우 리 는 제3자 라 이브 러 리 pygame 을 통 해 그것 을 실현 한다.
Pygame 은 SDL 라 이브 러 리 를 활용 한 게임 라 이브 러 리 로 게임 소프트웨어 개발 을 위 한 Python 프로그램 모듈 이다.
SDL(Simple DirectMedia Layer)은 컴퓨터 멀티미디어 하드웨어(사 운 드,동 영상,입력 등)접근 을 지원 하 는 크로스 플랫폼 라 이브 러 리 로 SDL 이 매우 강력 하지만,C 언어 에 기반 한 것 이 옥 에 티 다.
PyGame 은 SDL 라 이브 러 리 의 Python 패키지(wrapper)로 Pygame 은 SDL 라 이브 러 리 를 기반 으로 다양한 인 터 페 이 스 를 제공 하여 사용자 가 python 언어 로 다양한 게임 이나 멀티미디어 프로그램 을 만 들 수 있 도록 한다.
그것 의 설치 방법 은 매우 간단 하 다.다음 과 같다.
pip install pygame
더 많은 pygame 기능 을 알 고 싶 은 친구 도 공식 문 서 를 찾 아 볼 수 있 습 니 다.3 코드 구현
먼저 우리 가 사용 할 모듈 을 가 져 옵 니 다.제3자 라 이브 러 리 pygame 을 제외 하고 우 리 는 sys,random,time 등 Python 에 내 장 된 모듈 을 사용 하여 함께 가 져 오 면 됩 니 다.
import pygame, sys, random, time
# pygame
from pygame.locals import *
3.1 일부 전역 매개 변수의 초기 화다음 에 우 리 는 전역 적 인 파 라 메 터 를 설명 해 야 한다.pygame 초기 화,게임 창의 크기 정의,창의 제목 정의,전역 색상 변수 정의 등 정보.
# Pygame
pygame.init()
#
DISPLAY = pygame.display.set_mode((640, 480))
#
pygame.display.set_caption(' Pythonista - Snake')
#
FPSCLOCK = pygame.time.Clock()
#
BASICFONT = pygame.font.SysFont("SIMYOU.TTF", 80)
#
BLACK = pygame.Color(0, 0, 0)
WHITE = pygame.Color(255, 255, 255)
RED = pygame.Color(255, 0, 0)
GREY = pygame.Color(150, 150, 150)
3.2 탐식 뱀 및 음식 초기 화게임 에 서 는 뱀 과 음식 을 게 걸 스 럽 게 먹 어야 합 니 다.우 리 는 초기 값 을 정 합 니 다.우 리 는 전체 화면 을 많은 20*20 의 작은 사각형 으로 보고 모든 작은 사각형 은 하나의 표준 작은 칸 을 대표 하 며 뱀의 길 이 를 탐식 하면 몇 개의 표준 작은 칸 으로 표시 할 수 있다.우 리 는 뱀 을 탐식 하 는 몸 을 목록 으로 저장 하여 편리 한 후에 삭제 할 것 이다.
'뱀 과 음식 을 탐식 하 는 초기 화'.
#
snake_Head = [100,100]
# ( : 20*20 )
snake_Body = [[80,100],[60,100],[40,100]]
# ,
direction = "right"
#
food_Position = [300,300]
# :0 ;1 。
food_flag = 1
3.3 탐식 사의 상하 좌우 이동 실현탐식 사의 상하 좌우 이동 을 통제 해 감청 키보드 입력 을 통 해 이 뤄 져 야 한다.키보드 의 상하 좌우 키 나 WASD 키 를 이용 해 뱀 을 게 걸 스 럽 게 먹 는 운동 을 제어 한다.
# Pygame
for event in pygame.event.get():
if event.type == QUIT:
# ,
pygame.quit()
sys.exit()
# , wsad
elif event.type == KEYDOWN:
if (event.key == K_UP or event.key == K_w) and direction != DOWN:
direction = UP
if (event.key == K_DOWN or event.key == K_s) and direction != UP:
direction = DOWN
if (event.key == K_LEFT or event.key == K_a) and direction != RIGHT:
direction = LEFT
if (event.key == K_RIGHT or event.key == K_d) and direction != LEFT:
direction = RIGHT
다음은 뱀의 전진 방향 을 키보드 의 입력 에 따라 커 브 작업 을 하고 뱀의 머리 현재 위 치 를 뱀 몸의 목록 에 넣 는 것 이다.
# , ,
if direction == LEFT:
snake_Head[0] -= 20
if direction == RIGHT:
snake_Head[0] += 20
if direction == UP:
snake_Head[1] -= 20
if direction == DOWN:
snake_Head[1] += 20
#
snake_Body.insert(0, list(snake_Head))
3.4 음식 을 먹 었 는 지 판단뱀 머리 가 음식의 위치 와 겹 치면 음식 을 먹 었 는 지 판정 하고 음식 수 를 0 으로 정리한다.음식 을 먹 지 못 하면 뱀 몸 은 뱀 머리 를 따라 움 직 이 고,뱀 몸의 마지막 절 은 리스트 에서 차 인 다.
#
if snake_Head[0]==food_Position[0] and snake_Head[1]==food_Position[1]:
food_flag = 0
else:
snake_Body.pop()
3.5 다시 음식 생 성게임 인터페이스의 음식 수가 0 일 때 음식 을 다시 만들어 야 한다.random 함 수 를 이용 하여 무 작위 위 치 를 생 성 합 니 다.
#
if food_flag == 0:
# x, y
x = random.randrange(1,32)
y = random.randrange(1,24)
food_Position = [int(x*20),int(y*20)]
food_flag = 1
3.6 뱀,음식,점수 등 을 탐식 하 는 정 보 를 그립 니 다.탐식 사의 그리 기 함수 정의
#
def drawSnake(snake_Body):
for i in snake_Body:
pygame.draw.rect(DISPLAY, WHITE, Rect(i[0], i[1], 20, 20))
#
def drawFood(food_Position):
pygame.draw.rect(DISPLAY, RED, Rect(food_Position[0], food_Position[1], 20, 20))
#
def drawScore(score):
#
score_Surf = BASICFONT.render('%s' %(score), True, GREY)
#
score_Rect = score_Surf.get_rect()
score_Rect.midtop = (320, 240)
#
DISPLAY.blit(score_Surf, score_Rect)
이것들 이 모두 정 의 된 후에 우 리 는 게임 의 주 논리 에서 그것들 을 호출 하고 Pygame 의 디 스 플레이 층 을 새로 고 쳐 야 한다.뱀 과 음식 을 탐식 하 는 모든 이동 은 디 스 플레이 층 을 새로 고 치 는 동작 으로 표시 된다.마지막 으로 우 리 는 게임 의 실행 속 도 를 합 리 적 으로 제어 할 수 있 는 속도 치 를 설정 할 수 있다.
DISPLAY.fill(BLACK)
#
drawSnake(snake_Body)
#
drawFood(food_Position)
#
drawScore(len(snake_Body) - 3)
# Pygame , , 。
pygame.display.flip()
#
FPSCLOCK.tick(7)
3.7 게임 종료 화면 을 정의 하고 게임 종료 여 부 를 판단 한다.게임 이 끝 난 화면 을 보 여주 고 프로그램 을 종료 하 는 함수 정의
#
def GameOver():
# GameOver
GameOver_Surf = BASICFONT.render('Game Over!', True, GREY)
# GameOver
GameOver_Rect = GameOver_Surf.get_rect()
GameOver_Rect.midtop = (320, 10)
#
DISPLAY.blit(GameOver_Surf, GameOver_Rect)
pygame.display.flip()
# 3
time.sleep(3)
#
pygame.quit()
#
sys.exit()
게임 의 주 논리 에 판단 을 넣 고 게임 이 끝 났 는 지 여 부 를 판단 합 니 다.
''' '''
#
if snake_Head[0]<0 or snake_Head[0]>620:
GameOver()
if snake_Head[1]<0 or snake_Head[1]>460:
GameOver()
#
for i in snake_Body[1:]:
if snake_Head[0]==i[0] and snake_Head[1]==i[1]:
GameOver()
후기본 고 는 Pygame 모듈 을 이용 하여 가장 간단 한 탐식 뱀 버 전 을 실현 하 였 다.물론 최적화 해 야 할 부분 도 많다.예 를 들 어 무 작위 로 음식 을 만 들 때 뱀 을 게 걸 스 럽 게 먹 는 자신 에 게 나타 나 는 것 을 어떻게 피 하 는 지,뱀 을 게 걸 스 럽 게 먹 는 길 이 를 통 해 게임 속 도 를 자동 으로 조절 하 는 지 등 이다.좀 더 고 급 스 러 운 것 은 AI 를 통 해 뱀 탐식,뱀 탐식 을 자동 으로 하 는 2 인 대전 등 입 니 다.파 이 썬 을 이용 해 뱀 탐식 을 새로운 높이 로 끌 어 올 릴 수 있 기 를 기대 합 니 다!😎😎😎
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.