こころぶん 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 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题