绘制应用程序-python

绘制应用程序-python,python,pygame,Python,Pygame,我想在pygame中制作一个画笔游戏。我已经画好了,但我希望用户点击一个图像,这将改变画笔的画笔。如果用户单击蓝色图像,画笔将变为蓝色。到目前为止,我已经设法显示蓝色图像,我有一个默认的红色画笔。仅当触摸蓝色图像的位置时,画笔颜色才会改变。我希望当用户单击屏幕的任何其他区域时,画笔颜色保持不变 有什么建议吗 这是我的密码: import sys, pygame from pygame.locals import * pygame.init() screen = pygame.display

我想在pygame中制作一个画笔游戏。我已经画好了,但我希望用户点击一个图像,这将改变画笔的画笔。如果用户单击蓝色图像,画笔将变为蓝色。到目前为止,我已经设法显示蓝色图像,我有一个默认的红色画笔。仅当触摸蓝色图像的位置时,画笔颜色才会改变。我希望当用户单击屏幕的任何其他区域时,画笔颜色保持不变

有什么建议吗

这是我的密码:

import sys, pygame
from pygame.locals import *


pygame.init()

screen = pygame.display.set_mode((1000,600))

screen.fill((255,255,255))

brush = pygame.image.load("redbrush.png")
brush = pygame.transform.scale(brush,(45,45))

brush2 = pygame.image.load("bluebrush.png")
brush2 = pygame.transform.scale(brush2,(45,45))


pygame.display.update()

clock = pygame.time.Clock()

z = 0

while 1:
    screen.blit(brush2, (0,10))
    pygame.display.update()
    clock.tick(60)
    x,y = pygame.mouse.get_pos()


    for event in pygame.event.get():
        if event.type ==pygame.QUIT:
            pygame.quit()
            sys.exit() 
        elif event.type ==MOUSEBUTTONDOWN:
            z=1
        elif event.type ==MOUSEBUTTONUP:
            z=0
        if z==1:
            screen.blit(brush, (x -23.5,y-23.5))
            pygame.display.update()
            if brush2.get_rect().collidepoint(pygame.mouse.get_pos()):
                screen.blit(brush2, (x -23.5,y-23.5))
                pygame.display.update()
替换您的线路:

if brush2.get_rect().collidepoint(pygame.mouse.get_pos()):
    screen.blit(brush2, (x -23.5,y-23.5))
    pygame.display.update()
与:

编辑:我看到了您的评论,下面是您代码的编辑版本:

import sys, pygame
from pygame.locals import *

pygame.init()

screen = pygame.display.set_mode((1000,600))

screen.fill((255,255,255))

brush1 = pygame.image.load("redbrush.png")
brush1 = pygame.transform.scale(brush1,(45,45))
pos1 = (0, 32)

brush2 = pygame.image.load("bluebrush.png")
brush2 = pygame.transform.scale(brush2,(45,45))
brush2 = pygame.transform.scale(brush2,(45,45))
pos2 = (0, 64)

brush = brush1

pygame.display.update()

clock = pygame.time.Clock()

z = 0

while 1:
    screen.blit(brush1, pos1)
    screen.blit(brush2, pos2)
    pygame.display.update()
    clock.tick(60)
    x,y = pygame.mouse.get_pos()

    for event in pygame.event.get():
        if event.type ==pygame.QUIT:
            pygame.quit()
            sys.exit() 
        elif event.type ==MOUSEBUTTONDOWN:
            z=1
        elif event.type ==MOUSEBUTTONUP:
            z=0
        if z==1:
            if brush1.get_rect(center=pos1).collidepoint(pygame.mouse.get_pos()):
                brush = brush1
            if brush2.get_rect(center=pos2).collidepoint(pygame.mouse.get_pos()):
                brush = brush2
            screen.blit(brush, (x -23.5,y-23.5))
            pygame.display.update()

现在有一个bug,如果你从蓝色画笔转到红色画笔,用红色画笔点击红色,它就会转到blue@Pro-格拉默我以为你想要这样的转换。但是,您可以使用另一种方法:使用两个蓝色/红色变量,同时引入一个新变量
default\u brush
,并在单击图标时进行设置。如果你需要我显示任何其他代码,请告诉我。我明白你的意思,但我无法逻辑地计算出来。你能给我看一下吗?谢谢
import sys, pygame
from pygame.locals import *

pygame.init()

screen = pygame.display.set_mode((1000,600))

screen.fill((255,255,255))

brush1 = pygame.image.load("redbrush.png")
brush1 = pygame.transform.scale(brush1,(45,45))
pos1 = (0, 32)

brush2 = pygame.image.load("bluebrush.png")
brush2 = pygame.transform.scale(brush2,(45,45))
brush2 = pygame.transform.scale(brush2,(45,45))
pos2 = (0, 64)

brush = brush1

pygame.display.update()

clock = pygame.time.Clock()

z = 0

while 1:
    screen.blit(brush1, pos1)
    screen.blit(brush2, pos2)
    pygame.display.update()
    clock.tick(60)
    x,y = pygame.mouse.get_pos()

    for event in pygame.event.get():
        if event.type ==pygame.QUIT:
            pygame.quit()
            sys.exit() 
        elif event.type ==MOUSEBUTTONDOWN:
            z=1
        elif event.type ==MOUSEBUTTONUP:
            z=0
        if z==1:
            if brush1.get_rect(center=pos1).collidepoint(pygame.mouse.get_pos()):
                brush = brush1
            if brush2.get_rect(center=pos2).collidepoint(pygame.mouse.get_pos()):
                brush = brush2
            screen.blit(brush, (x -23.5,y-23.5))
            pygame.display.update()