尝试将文本添加到矩形中,并使用箭头键在屏幕上移动矩形。我想让它这样的文字不会离开边缘。到目前为止,我没有把它放入一个Rect中,但我想让Rect函数工作。现在,文本只是反弹回来,我不知道要使与字体大小对应的原始矩形有多大
import pygame
import sys
pygame.init()
screen = pygame.display.set_mode((800,600),0)
pygame.display.set_caption("Basic Pygame Text With Rects")
width = screen.get_width()
height = screen.get_height()
x = int(width/2)
y = int(height/2)
dx = 0
dy = 0
speed = 10
oldx = x
oldy = y
WHITE = (255,255,255)
GREEN = (0,255,0)
RED = (255,0,0)
BLUE = (0,0,255)
BLACK = (0, 0, 0)
YELLOW = (255, 255, 0)
colour = BLACK
textRect = pygame.Rect(x, y, 30, 10)
screen.fill(WHITE)
pygame.display.update()
# first set up your font (typeface and size)
# I have created two different ones here that can be used later in the program
fontTitle = pygame.font.SysFont("arial",10)
main = True
while main:
for event in pygame.event.get():
if event.type ==pygame.QUIT:
main = False
if event.type ==pygame.KEYDOWN:
if event.key == pygame.K_UP:
dx = 0
dy = -speed
colour = RED
elif event.key == pygame.K_DOWN:
dx = 0
dy = speed
colour = BLUE
elif event.key == pygame.K_LEFT: # note: this section of code
dx = -speed # doesn't have to change from
dy = 0
colour = GREEN
elif event.key == pygame.K_RIGHT:
dx = speed
dy = 0
colour = YELLOW
elif event.key == pygame.K_c:
x = screen.get_width() / 2
y = screen.get_height() / 2
colour = BLACK
if event.type == pygame.KEYUP:
if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
dx = 0
dy = 0
elif event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
dx = 0
dy = 0
screen.fill(WHITE)
oldx = x
oldy = y
textRect.move_ip(dx,dy)
if (textRect.y <= 0) or (textRect.y >= height):
dy = 0
textRect.y = int(oldy)
if (textRect.x <= 20) or (textRect.x >= width - 20):
dx = 0
textRect.x = int(oldx)
# render the text into an image of the text, colour is red
# create a rect with it's centre placed at centre of screen
# blit the image to memory, it will display upon next update
textTitle = fontTitle.render("Go Huskies", True, colour)
drawText = textTitle.get_rect(center=(textRect.x, textRect.y))
screen.blit(textTitle, textRect)
pygame.display.update()
pygame.quit()
sys.exit()
您可以在开始时生成文本以获取其大小
以后只使用这个
rectTitle
来移动它并检查与边界的冲突-并且不创建新的textTitle.get_rect()
Rect
有.top
、.bottom
、.left
、.right
、.centerx
、.centery
可用于检查冲突如果你想用背景矩形移动文本,那么你可以创建
Surface()
,用一些颜色填充它,然后在它上面blit文本开始时:
循环中:
完整代码:
相关问题 更多 >
编程相关推荐