鱼C论坛

 找回密码
 立即注册
查看: 75|回复: 1

[技术交流] 能否将这组代码改成鼠标漂浮在上面不动,方块一直都变换颜色

[复制链接]
发表于 2024-11-30 15:34:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import random
import pygame
#定义的一些参数
BLOCKSIZE = 60#方块的大小
color = (0,0,0)#背景颜色
#随机生成方块颜色的函数
def getRandomColor():
    btcolor = (random.randint(0,255),random.randint(0,255),random.randint(0,255))
    return btcolor
bgcolor = color#背景颜色
FPSCLOCK = pygame.time.Clock()#创建clock对象
FPS = 60

#初始化
pygame.init()
#窗口的大小
winset = pygame.display.set_mode((640, 480))
#背景填充颜色
winset.fill(bgcolor)
baseSurf = winset.copy()#将背景复制一遍存一个备份
#窗口标题
pygame.display.set_caption("随鼠标移动的彩色小方块")

#游戏主体
while True:
    for event in pygame.event.get():#获取用户的事件
        print(event.type)
        if event.type in (pygame.MOUSEMOTION,pygame.MOUSEBUTTONUP ,pygame.MOUSEBUTTONDOWN):#判断获取的鼠标动作是否在鼠标三个动作中间
            blockRect = pygame.Rect(event.pos[0],event.pos[1],BLOCKSIZE, BLOCKSIZE)#小方块的x,y,width,height
            pygame.draw.rect(winset,getRandomColor(), blockRect)#描绘小方块
            pygame.display.update()#更新之后才能看到新画面
            winset.blit(baseSurf, (0, 0))#使用原背景覆盖之前的图片
        elif event.type == pygame.QUIT:#鼠标退出操作
            pygame.quit()#退出
            exit()#正确退出
    #控制帧率
    FPSCLOCK.tick(FPS)

我尝试过鼠标漂浮在上面方块不断变换颜色,但是不成功,鼠标不移动的时候,窗口无法获得事件,将方块做一整个循环又不好插入新值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-30 15:34:50 | 显示全部楼层
要实现鼠标指针不动时方块颜色仍然不断变化,我们可以通过以下方式实现:使用一个标志来判断鼠标是否在方块区域内部,当鼠标进入这个区域时,让颜色不断变化,而不是仅仅在移动或点击时变化。
import random
import pygame

# 定义的一些参数
BLOCKSIZE = 60  # 方块的大小
color = (0, 0, 0)  # 背景颜色

# 随机生成方块颜色的函数
def getRandomColor():
    return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))

bgcolor = color  # 背景颜色
FPSCLOCK = pygame.time.Clock()  # 创建clock对象
FPS = 60

# 初始化
pygame.init()
winset = pygame.display.set_mode((640, 480))
winset.fill(bgcolor)
baseSurf = winset.copy()  # 背景复制
pygame.display.set_caption("随鼠标彩色方块")

# 初始化方块的初始位置
blockRect = pygame.Rect(100, 100, BLOCKSIZE, BLOCKSIZE)

# 游戏主体循环
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
    
    # 获取鼠标位置
    mouse_pos = pygame.mouse.get_pos()

    # 判断鼠标是否在方块里
    if blockRect.collidepoint(mouse_pos):
        # 更新方块颜色
        pygame.draw.rect(winset, getRandomColor(), blockRect)
    else:
        # 重置为背景色,如果鼠标不在方块里
        winset.blit(baseSurf, (0, 0))
    
    pygame.display.update()
    FPSCLOCK.tick(FPS)

这样通过不断绘制和更新窗口,你就可以实现一个不断变化颜色的方块。当鼠标移动到方块区域时,即使不动,方块颜色仍然会变化。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 09:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表