【发布时间】:2016-06-14 10:25:08
【问题描述】:
所以我在 Pygame 中制作了这个简单的游戏,但是当我尝试在屏幕上显示死亡结束文本时,我收到错误消息 nameError: global name font is not defined。请帮忙,因为我看不到其他人在互联网上报告此问题。 错误出现在第 57 行。 代码如下:
import pygame
import time
pygame.font.init()
x = pygame.init()
FPS = 15
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
yellow = (255,255,0)
magenta = (255,0,255)
screenWidth = 600
screenHeight = 600
userX = 350
userY = 250
carX = 250
carY = -20
car2X = 300
car2Y = -80
car3X = 350
car3Y = -160
busX = 300
busY = -280
gameDisplay = pygame.display.set_mode((screenWidth,screenHeight))
pygame.display.set_caption("Highway")
clock = pygame.time.Clock()
block_size = 10
gameOver = False
gameExit = False
def _cars_():
pygame.draw.rect(gameDisplay, green, ((carX, carY), (10,20))) #car
pygame.draw.rect(gameDisplay, red, ((car2X, car2Y), (10,20))) #car
pygame.draw.rect(gameDisplay, yellow, ((car3X, car3Y), (10,20))) #car
pygame.draw.rect(gameDisplay, blue, ((busX, busY), (10, 40))) #bus
def message_to_screen(msg,color):
screen_text = font.render(msg, True, color)
gameDisplay.blit(screen_text, [screenWidth/2, screenHeight/2])
while not gameExit:
message_to_screen("CRASH! Try again? [Y/N]", magenta)
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_y:
gameOver = False
while not gameOver:
gameDisplay.fill(green)
pygame.draw.rect(gameDisplay, black, ((225,0),(150,600)))
pygame.draw.rect(gameDisplay, blue, ((userX, userY), (10,20)))
pygame.draw.rect(gameDisplay, white, ((275,0), (2.5,600)))
pygame.draw.rect(gameDisplay, white, ((325,0), (2.5,600)))
_cars_()
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT or event.key == pygame.K_a:
userX -= 50
if event.key == pygame.K_RIGHT or event.key == pygame.K_d:
userX += 50
if event.key == pygame.K_UP or event.key == pygame.K_w:
userY -= 20
if event.key == pygame.K_DOWN or event.key == pygame.K_s:
userY += 20
carY += 10
car2Y += 10
car3Y += 10
busY += 10
#car move
if carY > 600 and carX == 250:
carY = -20
carX = 350
if carY > 600 and carX == 350:
carY = -20
carX = 300
if carY > 600 and carX == 300:
carY = -20
carX = 250
#car2 move
if car2Y > 600 and car2X == 250:
car2Y = -10
car2X = 350
if car2Y > 600 and car2X == 350:
car2Y = -20
car2X = 300
if car2Y > 600 and car2X == 300:
car2Y = -20
car2X = 250
#car3 move
if car3Y > 600 and car3X == 350:
car3Y = -30
car3X = 300
if car3Y > 600 and car3X == 300:
car3Y = -30
car3X = 250
if car3Y > 600 and car3X == 250:
car3Y = -30
car3X = 350
#bus move
if busY > 600 and busX == 300:
busY = -40
busX = 350
if busY > 600 and busX == 350:
busY = -40
busX = 250
if busY > 600 and busX == 250:
busY = -40
busX = 300
if userX == carX and userY == carY:
gameExit = True
if userX == car2X and userY == car2Y:
gameOver = True
if userX == car3X and userY == car3Y:
gameOver = True
if userX == busX and userY == busY:
gameOver = True
clock.tick(FPS)
pygame.quit()
【问题讨论】:
-
你永远不会定义一个名为
font的变量
标签: python-2.7 pygame