링크 에서 스네이크 게임 튜토리얼을 구현하려고 시도했지만 .py 파일을 실행 한 후 화면이 즉시 닫힙니다. 화면이 즉시 닫히는 오류를 찾아서 실행 블록을 추가하여 수정을 시도했지만 이제 직사각형을 그리려고 할 때마다 화면이 검게 변합니다.
import os
os.environ['SDL_AUDIODRIVER'] = 'dsp'
import pygame
import sys
import random
import subprocess
import pygame
pygame.init()
display_width = 500
display_height = 500
display = pygame.display.set_mode((display_width,display_height))
window_color= (200,200,200)
red = (255,0,0)
black = (0,0,0)
apple_image = pygame.image.load('apple.jpg')
snake_head = [250,250]
pygame.display.set_caption("Snake AI")
snake_position = [[250,250],[240,250],[230,250]]
apple_position = [random.randrange(1,50)*10,random.randrange(1,50)*10]
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run =False
if event.type == pygame.KEYDOWN:
command = "python sample.py"
subprocess.call(command)
def display_snake(snake_position):
for position in snake_position:
pygame.draw.rect(display,red,pygame.Rect(position[0],position[1],10,10))
def display_apple(display,apple_position, apple):
display.blit(apple,(apple_position[0], apple_position[1]))
pygame.display.update()
pygame.quit()
당신은 그들에 대한 당신의 정의 display_apple()
와 display_snake()
호출이 있어야 할 위치를 가지고 있습니다.
while 루프 에서 display_apple()
및 display_snake()
함수 의 정의를 가져 와서 어딘가로 이동하십시오. 정의되던 곳에서는 대신 호출하십시오. 화면에 뱀과 사과가 나타나는 것을 볼 수 있습니다.
def display_snake(snake_position):
for position in snake_position:
pygame.draw.rect(display,red,pygame.Rect(position[0],position[1],10,10))
def display_apple(display,apple_position, apple):
display.blit(apple,(apple_position[0], apple_position[1]))
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run =False
if event.type == pygame.KEYDOWN:
command = "python sample.py"
subprocess.call(command)
display_apple(display, apple_position, apple_image)
display_snake(snake_position)
pygame.display.update()
while
루프 바로 위에 정의를 배치하여 볼 수 있지만 일반적으로 pygame.init()
호출이 좋은 장소가 되기 전에 더 높은 수준으로 정의합니다 .
일반적으로 함수 정의 및 클래스 정의 (있는 경우 현재는없는 경우)를 실행 된 코드와 분리하기를 원합니다.
실제로 실행 코드의 본문을 함수 안에 넣는 것을 선호합니다. 일반적으로 해당 함수가 호출 된 main()
다음 해당 함수를 호출합니다. 즉, 함수 호출 외에는 최상위 수준에서 실제 실행 코드가 없습니다 main()
. 그렇게하려면 전역 변수에주의해야하며 여기에서 몇 가지 문제가 발생할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다