5 분 동안 Pygame 으로 간단 한 탐식 사 를 만 드 는 법 을 배 웠 습 니 다.

12462 단어 pygame탐식 사python
Pygame 은 게임 소프트웨어 개발 을 위 한 Python 프로그램 모듈 로 SDL 라 이브 러 리 를 기반 으로 개발 된다.우 리 는 오늘 그것 을 이용 하여 모두 가 기본적으로 했 던 작은 게임 인 뱀 을 탐식 할 것 이다.

가 져 올 가방

import pygame
import time
import random
pygame:그래 픽 구성 요소 구축 게임 가 져 오기
  • time:주로 프레임 율 을 설정 하 는 데 사 용 됩 니 다
  • random:주로 음식의 갱신 위 치 를 설정 하 는 데 사용 된다
  • 2.창 인터페이스 설정
    우선 게임 을 초기 화하 고 창 을 만 듭 니 다.
    
    pygame.init()
    그리고 우 리 는 게임 에서 사용 해 야 할 색 을 정의 합 니 다.이 예시 에서 우 리 는 여섯 가지 색 을 정 의 했 습 니 다.
    
    white = (255, 255, 255)
    yellow = (255, 255, 102)
    black = (0, 0, 0)
    red = (213, 50, 80)
    green = (0, 255, 0)
    blue = (50, 153, 213)
    다음은 창의 크기 와 제목 표시 줄 을 설정 합 니 다.이 예제 에서 창 을 800*600 으로 설정 합 니 다.
    
    dis_width = 800
    dis_height = 600
    
    dis = pygame.display.set_mode((dis_width, dis_height))
    pygame.display.set_caption('     ')
    3.게임 의 변수
    clock 변 수 를 초기 화하 고 시작 에 가 져 온 time 패 키 지 를 사용 합 니 다.이 변 수 는 게임 의 프레임 율 을 처리 하 는 데 사 용 될 것 이다.
    
    clock = pygame.time.Clock()
    뱀의 속도 와 크기 를 정의 합 니 다.마음대로 변경 할 수 있 습 니 다.적응 하 는 것 을 선택 하면 됩 니 다.
    
    snake_block = 10
    snake_speed = 12
    점수 표시 와 다른 정보의 글꼴 크기 와 스타일 을 설정 합 니 다.
    
    font_style = pygame.font.SysFont("bahnschrift", 25)
    score_font = pygame.font.SysFont("comicsansms", 35)
    4.기능 함수 설정
    세 개의 보조 기능 함 수 를 정의 하여 다음 과 같은 기능 을 실현 합 니 다.
    계산 점수

    4.567917.다른 소식 에 따 르 면 실패 후의 재 플레이 알림 등 이 있다우선,점 수 를 계산 하 는 함 수 를 정의 합 니 다.
    
    def Your_score(score):
      value = score_font.render("Your Score: " + str(score), True, yellow)
      dis.blit(value, [0, 0]
    다음은 뱀의 인 자 를 정의 합 니 다.우 리 는 뱀의 색깔,위치 와 크기,즉 snake 를 정의 했다.block。우 리 는 snake 를 추가 로 정의 했다.list 를 입력 으로 아래 에 사용 합 니 다.
    
    def our_snake(snake_block, snake_list):
     for x in snake_list:
     pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])
    
    마지막 으로 메시지 표시 함 수 를 정의 합 니 다.이 보조 함 수 는 msg 와 색상 을 입력 매개 변수 로 합 니 다.글꼴 을 설정 한 다음 필요 한 색상 으로 정 보 를 표시 합 니 다.게임 에 표 시 된 위 치 를 지정 해 야 합 니 다.
    
    def message(msg, colour):
     mesg = font_style.render(msg, True, colour)
     dis.blit(mesg, [width / 6, height / 3])
    게임 구축
    게임 이 실행 되 고 키보드 입력 에 응답 할 수 있 도록 게임 순환 을 시작 합 니 다.우선 두 개의 변 수 를 정의 합 니 다 gameover 와 gameclose,게임 의 상 태 를 설명 합 니 다.첫 번 째 힌트 게임 이 끝 났 는 지,다음 정 의 는 게임 을 닫 을 지 여부 입 니 다.false
    
    game_over = False
    game_close = False
    다음 단 계 는 뱀 이 게임 에서 의 위 치 를 나타 내 는 x1 과 y1 을 정의 할 것 이다.우 리 는 각각 그들의 너비/2 와 높이/2 를 초기 화 합 니 다.동시에,우 리 는 변수 x1 를 정의 할 것 이다change 와 y1change 는 뱀의 위치 가 사용자 가 제공 하 는 입력 에 따라 달라 지 는 것 을 나타 낸다.
    
    x1 = width / 2
    y1 = height / 2
    
    x1_change = 0
    y1_change = 0
    또한,우 리 는 snake 를 정의 해 야 합 니 다.List 와 snakelength 변 수 는 뱀의 모든 머리 위치 와 뱀의 길 이 를 각각 저장 합 니 다.
    
    snake_List = []
    snake_length = 1
    음식 을 먹고 새로운 음식 이 생기 는 위 치 를 random 모듈 로 구현 합 니 다.
    
    foodx = round(random.randrange(0, width ― snake_block) / 10.0) * 10.0
    foody = round(random.randrange(0, height ― snake_block) / 10.0) * 10.0
    다음,우 리 는 game 까지 순환 을 시작 할 것 입 니 다.오 버 가 트 루 될 때 까지
    이 순환 에서 우 리 는 먼저 gameclose 변수 가 True 일 때 실행 할 명령 입 니 다.
    아래 코드 는 game 를 처리 하 는 데 도움 이 될 것 입 니 다.close 는 True 때의 상황 과 같다.
    
    while game_close == True:
          dis.fill(blue)
          message("Lost! q quit or p again", red)
          Your_score(Length_of_snake - 1)
          pygame.display.update()
    
          for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
              if event.key == pygame.K_q:
                game_over = True
                game_close = False
              if event.key == pygame.K_p:
                gameLoop()
    보시 다시 피 우 리 는 이미 많은 것 을 정의 하 였 습 니 다.우 리 는 파란색 으로 채 워 서 표시 합 니 다.게임 이 끝 날 때,우 리 는 이 사용자 가 게임 에서 졌 다 는 메 시 지 를 표시 합 니 다.우 리 는 사용자 에 게 다시 하고 싶 은 지,아니면 게임 을 종료 하고 싶 은 지 물 어 봐 야 합 니 다.
    우리 도 사용자 의 점 수 를 표시 하여 뱀의 길이 가 1 로 줄 어드 는 것 과 같다.우 리 는 뱀 이 음식 을 먹 을 때마다 1 점 을 갱신한다.
    현재,사용자 가 그 가 다시 하고 싶 은 지,아니면 게임 을 종료 하고 싶 은 지 에 대한 입력 을 받 아들 이기 위해 서,우 리 는 for-loop 을 정의 합 니 다.우리 가 사용자 에 게 그 에 대한 결정 을 입력 하 라 고 요구 할 때,우 리 는 입력 의 가능성 을 정의 했다.
    사용자 가'p'를 입력 하면 우 리 는 게임 순환 을 계속 할 것 입 니 다.사용자 가'q'를 입력 하면 게임 을 종료 해 야 합 니 다.
    지금,game 를 처리 하고 있 습 니 다.close 의 조건 후,우 리 는 필요 한 모든 절 차 를 정의 할 것 입 니 다.이것 은 우리 의 뱀 이 사용자 의 입력 에 따라 이동 하 게 할 것 입 니 다.우 리 는 W,A,S,D 와 위,아래,왼쪽,오른쪽 단 추 를 조합 하여 게임 을 진행 할 것 이다.너 는 너의 버튼 을 자 유 롭 게 선택 하여 게임 을 할 수 있다.
    
    for event in pygame.event.get():
     if event.type == pygame.QUIT:
      game_over = True
     if event.type == pygame.KEYDOWN:
      if event.key == pygame.K_LEFT or event.key == pygame.K_a:
       x1_change = -snake_block
       y1_change = 0
      elif event.key == pygame.K_RIGHT or event.key == pygame.K_d:
       x1_change = snake_block
       y1_change = 0
      elif event.key == pygame.K_UP or event.key == pygame.K_w:
       y1_change = -snake_block
       x1_change = 0
      elif event.key == pygame.K_DOWN or event.key == pygame.K_s:
       y1_change = snake_block
       x1_change = 0
    위의 코드 에서 저 희 는 사용자 가 제공 한 입력 에 따라 x1 을 변경 합 니 다.change 와 y1change 의 값.또한 사용자 가 게임 을 종료 하려 면 저 희 는 게임 을 종료 합 니 다.
    다음 에 우 리 는 게임 에서 지 는 조건 을 정의 할 것 이다.동시에 우 리 는 x1change 와 y1change 는 x1 과 y1 의 값 을 업데이트 합 니 다.디 스 플레이 전 체 를 파란색 으로 채 우 고 디 스 플레이 에서 뱀 과 음식 을 전달 하 는 위 치 를 통 해 그 릴 예정 이다.
    
    if x1 >= width or x1 < 0 or y1 >= height or y1 < 0:
      game_close = True
     x1 += x1_change
     y1 += y1_change
     dis.fill(blue)
     pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])
    다음은 snake 라 는 이름 으로 정의 합 니 다.Head 의 목록 은 매번 교체 할 때마다 뱀 머리의 값 을 저장 합 니 다.우 리 는 x1 과 y1 의 값 을 그것 위 에 추가 할 것 이다.그리고 우 리 는 이 snakeHead 를 snake 에 추가리스트 중.
    그리고 조건 검사 snakeList 길이 가 snake 보다 클 지 여부length。그렇다면 snake 삭제List 의 첫 번 째 요소 입 니 다.
    그리고 현재 snakeHead 는 snakeList 의 모든 요 소 는 새로 추 가 된 요 소 를 제외 하고 검 사 된 snake 입 니 다.Head。만약 그렇다면,우 리 는 게임 을 닫 고,유 저 는 진다.
    이 건 snakeList 에 snakeHead 는 snake 에 추가 되 었 음 을 의미 합 니 다.List 에서 같은 값 을 다시 찾 은 것 은 뱀 이 자신 을 만 났 다 는 것 을 의미한다.그래서 이때 게임 소개.
    그리고 우 리 는 함수 our 를 호출 합 니 다.snake 와 Yourscore(앞에서 정 의 된)는 업 데 이 트 된 뱀 과 게이머 의 점 수 를 표시 하기 위해 필요 한 매개 변 수 를 이 함수 에 전달 합 니 다.
    
     snake_Head = []
     snake_Head.append(x1)
     snake_Head.append(y1)
     snake_List.append(snake_Head)
     if len(snake_List) > snake_length:
      del snake_List[0]
    
     for x in snake_List[:-1]:
      if x == snake_Head:
       game_close = True
    
     our_snake(snake_block, snake_List)
     Your_score(snake_length ― 1)
    
     pygame.display.update()
    이어서 우 리 는 뱀 이 앞의 음식 을 다 먹 은 후에 새로운 음식 을 만 들 것 이다.그래서 이 를 위해 서 는 디 스 플레이 에서 새로운 무 작위 위 치 를 찾 아 음식 을 만들어 야 한다.또 뱀 이 음식 을 막 먹 었 기 때문에 뱀의 길 이 를 1 늘 려 야 한다.
    마지막 으로 우 리 는 뱀의 속 도 를 매개 변수 로 clock.tick 에 게 게임 의 프레임 율 로 한다.
    
    if x1 == foodx and y1 == foody:
     foodx = round(random.randrange(0, width ― snake_block) / 10.0) * 10.0
     foody = round(random.randrange(0, height ― snake_block) / 10.0) * 10.0
     snake_length += 1
    
    clock.tick(snake_speed)
    기능 이 이미 완전히 실현 되 었 습 니 다.우 리 는 마지막 으로 게임 을 종료 하고 다시 게임 순환 을 호출 합 니 다.
    
    pygame.quit()
      quit()
    
    gameLoop()
    6.전체 코드
    
    import pygame
    import time
    import random
    
    pygame.init()
    
    white = (255, 255, 255)
    yellow = (255, 255, 102)
    black = (0, 0, 0)
    red = (213, 50, 80)
    green = (0, 255, 0)
    blue = (50, 153, 213)
    
    dis_width = 800
    dis_height = 600
    
    dis = pygame.display.set_mode((dis_width, dis_height))
    pygame.display.set_caption('   ')
    
    clock = pygame.time.Clock()
    
    snake_block = 10
    snake_speed = 15
    
    font_style = pygame.font.SysFont("bahnschrift", 25)
    score_font = pygame.font.SysFont("comicsansms", 35)
    
    def Your_score(score):
      value = score_font.render("Score: " + str(score), True, yellow)
      dis.blit(value, [0, 0])
    
    def our_snake(snake_block, snake_list):
      for x in snake_list:
        pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])
    
    def message(msg, color):
      mesg = font_style.render(msg, True, color)
      dis.blit(mesg, [dis_width / 6, dis_height / 3])
    
    def gameLoop():
      game_over = False
      game_close = False
    
      x1 = dis_width / 2
      y1 = dis_height / 2
    
      x1_change = 0
      y1_change = 0
    
      snake_List = []
      Length_of_snake = 1
    
      foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
      foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
    
      while not game_over:
    
        while game_close == True:
          dis.fill(blue)
          message("Lost! q quit or p again", red)
          Your_score(Length_of_snake - 1)
          pygame.display.update()
    
          for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
              if event.key == pygame.K_q:
                game_over = True
                game_close = False
              if event.key == pygame.K_p:
                gameLoop()
    
        for event in pygame.event.get():
          if event.type == pygame.QUIT:
            game_over = True
          if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT or event.key == pygame.K_a:
              x1_change = -snake_block
              y1_change = 0
            elif event.key == pygame.K_RIGHT or event.key == pygame.K_d:
              x1_change = snake_block
              y1_change = 0
            elif event.key == pygame.K_UP or event.key == pygame.K_w:
              y1_change = -snake_block
              x1_change = 0
            elif event.key == pygame.K_DOWN or event.key == pygame.K_s:
              y1_change = snake_block
              x1_change = 0
    
        if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:
          game_close = True
        x1 += x1_change
        y1 += y1_change
        dis.fill(blue)
        pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])
        snake_Head = []
        snake_Head.append(x1)
        snake_Head.append(y1)
        snake_List.append(snake_Head)
        if len(snake_List) > Length_of_snake:
          del snake_List[0]
    
        for x in snake_List[:-1]:
          if x == snake_Head:
            game_close = True
    
        our_snake(snake_block, snake_List)
        Your_score(Length_of_snake - 1)
    
        pygame.display.update()
    
        if x1 == foodx and y1 == foody:
          foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
          foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
          Length_of_snake += 1
    
        clock.tick(snake_speed)
    
      pygame.quit()
      quit()
    
    gameLoop()
    python 에 관 한 글 이 더 많 습 니 다.python 객 잔 에 관심 을 가 져 주 십시오.

    이상 은 5 분 동안 Pygame 으로 간단 한 탐식 뱀 을 만 드 는 법 을 배 웠 습 니 다.더 많은 pygame 탐식 뱀 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!

    좋은 웹페이지 즐겨찾기