pygame贪吃蛇问题(又又是我)
import pygameimport sys
from pygame.locals import *
import 金币
pygame.init()
size = width, height = 600, 400
bg = (255, 255, 255)
YELLOW = (255, 255, 0)
snake = (0, 255, 0)
BLACK = (0, 0, 0)
fanxiang = 'right'
left = 300
top = 200
screen = pygame.display.set_mode(size)
pygame.display.set_caption('贪吃蛇')
move = USEREVENT
pygame.time.set_timer(move, 1 * 1000)
money = USEREVENT + 1
pygame.time.set_timer(money, 5 * 1000)
score = 0
score_font = pygame.font.Font(None, 20)
Money = pygame.sprite.Group()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == move:
if fanxiang == 'left':
left -= 11
elif fanxiang == 'top':
top -= 11
elif fanxiang == 'right':
left += 11
elif fanxiang == 'bottom':
top += 11
#生成金币
elif event.type == money:
m = 金币.money()
Money.add(m)
key_pressed = pygame.key.get_pressed()
#控制方向
if key_pressed or key_pressed:
fanxiang = 'top'
if key_pressed or key_pressed:
fanxiang = 'bottom'
if key_pressed or key_pressed:
fanxiang = 'right'
if key_pressed or key_pressed:
fanxiang = 'left'
#显示字迹
score_text = score_font.render(f'Score:{score}', True, BLACK)
screen.blit(score_text, (10, 5))
screen.fill(bg)
#金币机制
for i in Money:
pygame.draw.rect(screen, YELLOW, i.rect, 0)
if i.rect.colliderect(pygame.Rect(left, top, 10, 10)):
score+=1000
Money.remove(i)
#绘制贪吃蛇
pygame.draw.rect(screen, snake, (left, top, 10, 10), 0)
pygame.display.flip()
问,为什么无法显示字迹?谢谢 您好,根据您的代码,您需要将 screen.blit 和 pygame.display.flip 的顺序调换一下。将 screen.blit 放在 screen.fill(bg) 之后, pygame.display.flip 放在最后即可。这样做可以确保字迹能够显示在屏幕上。希望能帮到您。 问题分析:
你的代码中,在每一帧绘制画面之前,你使用screen.fill(bg)将屏幕背景填充为白色。然后在这之后,你绘制了金币、贪吃蛇和字迹。由于字迹是在最后绘制的,所以会被覆盖掉,导致无法显示。
解决方法:
你需要将screen.fill(bg)的位置放到绘制字迹之前,这样字迹就能显示在背景之上了。
修改后的代码如下所示:
# ...
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == move:
# 移动逻辑...
elif event.type == money:
# 生成金币...
key_pressed = pygame.key.get_pressed()
# 控制方向...
# 显示字迹
score_text = score_font.render(f'Score:{score}', True, BLACK)
screen.blit(score_text, (10, 5))
screen.fill(bg)# 将屏幕背景填充为白色
# 金币机制...
# 绘制贪吃蛇...
pygame.display.flip()
这样修改后,应该就可以正确显示字迹了。
希望能帮到你!如果还有其他问题,请随时提问。
页:
[1]