こころぶん 2022-12-29 12:21 采纳率: 100%
浏览 16
已结题

pygame 矩形绘制问题

问题遇到的现象和发生背景

使用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()


  • 写回答

2条回答 默认 最新

  • ShowMeAI 2022-12-29 12:45
    关注

    你可以在检测矩形是否触碰边界的 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()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月6日
  • 已采纳回答 12月29日
  • 创建了问题 12月29日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵