我正在阅读有关如何编程python的教程。其中有一款名为“馅饼游戏”的游戏。游戏是屏幕上弹出这4个数字的地方,你按相应的数字弹出弧线。按下所有数字后,所有弧线都会从圆圈中弹出,圆圈变为绿色。我按照书中的说法输入了代码。我跑了,弹出了四个数字,但是当我按下相应的数字时没有任何反应。 继承人代码:
import math
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((600,500))
pygame.display.set_caption("The Pie Game")
pygame.display.set_caption("The Pie Game - Press 1,2,3,4")
myfont = pygame.font.Font(None, 60)
color = 200, 80, 60
width = 4
x = 300
y = 250
radius = 200
poisition = x-radius, y-radius, radius*2, radius*2
piece1 = False
piece2 = False
piece3 = False
piece4 = False
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
elif event.type == KEYUP:
if event.key == pygame.K_ESCAPE:
sys.exit()
elif event.key == pygame.K_1:
piece1 = True
elif event.key == pygame.K_2:
piece2 = True
elif event.key == pygame.K_3:
piece3 = True
elif event.key == pygame.K_4:
piece4 = True
#clear the screen
screen.fill((0,0,200))
#draw the four numbers
textImg1 = myfont.render("1", True, color)
screen.blit(textImg1, (x+radius/2-20, y-radius/2))
textImg2 = myfont.render("2", True, color)
screen.blit(textImg2, (x-radius/2, y-radius/2))
textImg3 = myfont.render("2", True, color)
screen.blit(textImg3, (x-radius/2, y+radius/2-20))
textImg4 = myfont.render("4", True, color)
screen.blit(textImg4, (x+radius/2-20, y+radius/2-20))
#should the pieces be drawn?
if piece1:
start_angle = math.radians(0)
end_angle = math.radians(90)
pygame.draw.arc(screen, color, position, start_angle, end_angle, width)
pygame.draw.line(screen, color, (x,y), (x,y-radius), width)
pygame.draw.line(screen, color, (x,y), (x+radius,y), width)
if piece2:
start_angle = math.radians(90)
end_angle = math.radians(180)
pygame.draw.arc(screen, color, position, start_angle, end_angle, width)
pygame.draw.line(screen, color, (x,y), (x,y-radius), width)
pygame.draw.line(screen, color, (x,y), (x+radius,y), width)
if piece3:
start_angle = math.radians(180)
end_angle = math.radians(270)
pygame.draw.arc(screen, color, position, start_angle, end_angle, width)
pygame.draw.line(screen, color, (x,y), (x,y-radius), width)
pygame.draw.line(screen, color, (x,y), (x+radius,y), width)
if piece4:
start_angle = math.radians(270)
end_angle = math.radians(360)
pygame.draw.arc(screen, color, position, start_angle, end_angle, width)
pygame.draw.line(screen, color, (x,y), (x,y-radius), width)
pygame.draw.line(screen, color, (x,y), (x+radius,y), width)
#is the pie finished
if piece1 and piece2 and piece3 and piece4:
color = 0,255,0
pygame.display.update()
这就是我遇到的问题:
if piece1:
start_angle = math.radians(0)
end_angle = math.radians(90)
pygame.draw.arc(screen, color, position, start_angle, end_angle, width)
pygame.draw.line(screen, color, (x,y), (x,y-radius), width)
pygame.draw.line(screen, color, (x,y), (x+radius,y), width)
但通常所有的“if piece1,2,3,4部分因为我复制它们并稍作改动以节省时间。我试着去书籍网站寻找答案,但它没有答案。我我想知道当按下相应的数字时如何弹出圆弧。 任何帮助都可以! 谢谢!
答案 0 :(得分:1)
当出现问题时,您应该查看回溯。运行代码后,我收到以下错误:
Traceback (most recent call last):
File "C:\test.py", line 54, in <module>
pygame.draw.arc(screen, color, position, start_angle, end_angle, width)
NameError: name 'position' is not defined
在寻找位置的定义之后,我注意到你犯了错字。
poisition = x-radius, y-radius, radius*2, radius*2
将此问题解决到位,解决了问题。
还有一件事,你忘了导入sys
模块。您可以将其用于sys.exit()
。