使用pygame画移动的矩形时想要实现:当矩形碰到边界时,矩形改变颜色并保留。
在触碰边界时,矩形改变为负速度并转向的条件下加入随机改变颜色,但是不知道该颜色如何保留
当矩形碰到边界时,矩形改变颜色并保留。
以下是我的代码
import pygame,sys
from pygame.locals import *
import random
pygame.init()
screen = pygame.display.set_mode((800,600))
pygame.display.set_caption('game')
#矩形的初始位置
pos_x = 300
pos_y = 250
val_x = 2
val_y = 1
#退出游戏快捷键设置
while True:
for event in pygame.event.get():
if event.type in (QUIT,KEYDOWN):
sys.exit()
screen.fill((255,255,255))
#矩形绘制参数设置
color = 0,0,0
pos= pos_x,pos_y,50,50
width =8
pos_x += val_x
pos_y += val_y
#检验矩形是否触碰边界
if pos_x >750 or pos_x <0:
val_x = -val_x
#这是我尝试的解决方法
** color = ((random.randint(1, 255), random.randint(1, 255), random.randint(1, 255)))**
if pos_y >550 or pos_y < 0:
val_y = -val_y
** color= ((random.randint(1, 255), random.randint(1, 255), random.randint(1, 255)))**
pygame.draw.rect(screen, color, pos, width)
pygame.display.update()
你可以在检测矩形是否触碰边界的 if 语句中,对矩形的颜色进行修改。
import pygame,sys
from pygame.locals import *
import random
pygame.init()
screen = pygame.display.set_mode((800,600))
pygame.display.set_caption('game')
# 矩形的初始位置和移动方向
pos_x = 300
pos_y = 250
val_x = 2
val_y = 1
# 矩形的初始颜色
color = (0, 0, 0)
while True:
for event in pygame.event.get():
if event.type in (QUIT, KEYDOWN):
sys.exit()
screen.fill((255,255,255))
# 矩形绘制参数设置
pos = pos_x, pos_y, 50, 50
width = 8
pos_x += val_x
pos_y += val_y
# 检测矩形是否触碰边界
if pos_x > 750 or pos_x < 0:
# 如果矩形触碰到右边界或左边界,改变矩形的颜色
color = (random.randint(1, 255), random.randint(1, 255), random.randint(1, 255))
val_x = -val_x
if pos_y > 550 or pos_y < 0:
# 如果矩形触碰到上边界或下边界,改变矩形的颜色
color = (random.randint(1, 255), random.randint(1, 255), random.randint(1, 255))
val_y = -val_y
pygame.draw.rect(screen, color, pos, width)
pygame.display.update()