图图代码没报错 发表于 2024-11-30 15:34:27

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

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,event.pos,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)

我尝试过鼠标漂浮在上面方块不断变换颜色,但是不成功,鼠标不移动的时候,窗口无法获得事件,将方块做一整个循环又不好插入新值

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 能否将这组代码改成鼠标漂浮在上面不动,方块一直都变换颜色