我制作了一个程序,只要单击空格键,就会显示一个单词并播放声音效果。我的问题是,有时当屏幕上的文字被点亮时,它会在屏幕中途或屏幕中间点亮一半。我尝试使用一个声明,如果x> 800我知道必须有一个更好的方法来做到这一点,我只是不知道任何帮助非常感谢!
import pygame, random, sys
from pygame.locals import *
pygame.init()
screen_size = ((800,600))
pygame.mixer.music.load("Derp.wav")
screen = pygame.display.set_mode(screen_size)
while True:
newSat = random.randint(1,100)
r = random.randint(1,255)
g = random.randint(1,255)
b = random.randint(1,255)
newSize = random.randint(1,50)
myfont = pygame.font.SysFont("Ubuntu", newSize)
derp = myfont.render("Derp",newSat,(r,g,b))
newX = random.randint(1,800)
newY = random.randint(1,600)
newSpot = random.randint(1,800)
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
if event.type == KEYDOWN:
if event.key == K_SPACE:
screen.blit(derp,(newX,newY))
pygame.mixer.music.play(0)
if event.key == K_ESCAPE:
sys.exit()
pygame.display.update()
答案 0 :(得分:2)
右键!因此,为了确保您的blitted表面(在这种情况下是渲染文本)将始终在屏幕内,您需要在随机世代中设置一些限制!
derp = myfont.render("Derp",newSat,(r,g,b))
newX = random.randint(1,800 - derp.get_width())
newY = random.randint(1,600 - derp.get_height())
不管文本的大小如何,随机位置总是在你的屏幕内:) 然后你可以安全地blit你的文字:
screen.blit(derp,(newX,newY))
希望有所帮助!,
干杯,亚历克斯