5 분 동안 Pygame 으로 간단 한 탐식 사 를 만 드 는 법 을 배 웠 습 니 다.
가 져 올 가방
import pygame
import time
import random
pygame:그래 픽 구성 요소 구축 게임 가 져 오기우선 게임 을 초기 화하 고 창 을 만 듭 니 다.
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 탐식 뱀 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
완전히 처음부터 시작하는 보드 게임의 프로그래밍과 기계 학습 [4 일째]평소 Python의 기본적인 사용법을 배웠으므로, 드디어 Pygame을 사용하여 게임 제작의 입구로 발길을 가고 싶습니다. Pygame은 Simple DirectMedia Layer (SDL)라고 불리는 다른 게임 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.