gpt4 book ai didi

python - Pygame 在不同颜色的矩形上移动图像

转载 作者:行者123 更新时间:2023-12-01 02:25:58 25 4
gpt4 key购买 nike

我是 python 和 pygame 的新手,我正在尝试在绘制的矩形上移动图像并改变颜色。每当我运行此代码时,图像都会移动,但它会创建图像的轨迹。

我知道我需要在游戏循环中对图像的背景进行位图传输,但是如果背景不是图像,我如何对背景进行位图传输?

或者我需要以不同的方式绘制矩形?

完整代码:

import pygame


pygame.init()
screen = pygame.display.set_mode((600,200))
pygame.draw.rect(screen, (175,171,171), [0, 0, 600, 200])
pygame.draw.rect(screen, (255,192,0), [200, 0, 200, 200])
clock = pygame.time.Clock()
# load your own image here (preferably not wider than 30px)
truck = pygame.image.load('your_image.png').convert_alpha()


class Truck:
def __init__(self, image, x, y, speed):
self.speed = speed
self.image = image
self.pos = image.get_rect().move(x, y)

def move(self):
self.pos = self.pos.move(self.speed, 0)




def game_loop():
newTruck = Truck(truck, 0, 50, 1)
gameExit = False
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True

newTruck.move()
screen.blit(newTruck.image, newTruck.pos)
clock.tick(60)
pygame.display.update()

game_loop()

最佳答案

每次更新时,您都必须以某种方式重新绘制背景中的所有对象(矩形)。

最简单的方法是在更新前景对象之前再次调用所有绘图代码。另一种方法是,如果背景在创建后没有改变,则将这些背景对象位图传输到一个单独的 Surface 对象中,并在每次更新时将该背景对象位图传输到屏幕。

更复杂的方法是在绘制前景对象之前将背景保存在前景对象下,然后在下一次重绘时,首先重绘背景,然后再次保存背景并在新位置上绘制前景对象。使用前一种方法更容易。

你的代码可以这样写:

import pygame

pygame.init()
SIZE = (600,200)

screen = pygame.display.set_mode(SIZE)

bg_image = None

def draw_background(screen):
global bg_image
if not bg_image:
bg_image = pygame.Surface((SIZE))
pygame.draw.rect(bg_image, (175,171,171), [0, 0, 600, 200])
pygame.draw.rect(bg_image, (255,192,0), [200, 0, 200, 200])
...
# Draw whatever you want inside this if body

screen.blit(bg_image, (0, 0))

...

class Truck:
...

def game_loop():
newTruck = Truck(truck, 0, 50, 1)
gameExit = False
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True

newTruck.move()
draw_background()
screen.blit(newTruck.image, newTruck.pos)
clock.tick(60)
pygame.display.update()

game_loop()

关于python - Pygame 在不同颜色的矩形上移动图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47400056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com