python 을 이용 한 뱀 탐식 게임 을 한 걸음 씩 가르쳐 드릴 게 요.

7798 단어 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 인 대전 등 입 니 다.파 이 썬 을 이용 해 뱀 탐식 을 새로운 높이 로 끌 어 올 릴 수 있 기 를 기대 합 니 다!😎😎😎
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기