python - 我的点击计数器程序无法运行

标签 python python-2.7 pygame pycharm

导入模块并声明变量后,我的代码是这样开始的:

while True:

    pygame.display.flip()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        if event.type == MOUSEBUTTONDOWN:
            dibujarCirculo()
            cont += 1
    contador = texto.render("Clicks: " + str(cont), 1, green)
    ventana.blit(contador, CONT_POS)
    pygame.display.update()

当我运行它时,屏幕充满黑色,并显示一些文本“Clicks :0”,当我单击鼠标时,而不是转动“Clicks: 1”,1 叠加在零上,变得一团糟。 我的意图很简单:当您单击窗口中的某个位置时,它会向单击计数器添加 1。它实际上画了一个圆圈,但这并不重要。

如果您想看一下,我将发布整个代码。

import sys
import pygame
from pygame.constants import *


pygame.init()

ventana = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Basics")

red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)
darkBlue = (0, 0, 128)
white = (255, 255, 255)
black = (0, 0, 0)
pink = (255, 200, 200)

cont = 0
CONT_POS = (50, 100)

texto = pygame.font.SysFont("monospace", 15)

def dibujarCirculo():
    pos = pygame.mouse.get_pos()
    radius = 10
    pygame.draw.circle(ventana, white, pos, radius)


cont = 0

while True:

    pygame.display.flip()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        if event.type == MOUSEBUTTONDOWN:
            dibujarCirculo()
            cont += 1
    contador = texto.render("Clicks: " + str(cont), 1, green)
    ventana.blit(contador, CONT_POS)
    pygame.display.update()

注意:这是我第二次发布这些内容,因为人们无缘无故地投票否决,并且当我试图以我所知道的最好方式解释我的问题时,还将该帖子标记为偏离主题......

最佳答案

您需要清除屏幕以避免在旧文本上绘图

while True: 
    pygame.display.flip()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        if event.type == MOUSEBUTTONDOWN:
            dibujarCirculo()
            cont += 1
    ventana.fill((0,0,0)) # clear the screen
    contador = texto.render("Clicks: " + str(cont), 0, green)
    ventana.blit(contador, CONT_POS)
    pygame.display.update()

您可以在第一个函数中使用黑色添加 blit,以便每次都覆盖 blit。

def dibujarCirculo():
    pos = pygame.mouse.get_pos()
    radius = 10
    pygame.draw.circle(ventana, white, pos, radius)
    contador = texto.render("Clicks: " + str(cont), 0, black) # set background to black
    ventana.blit(contador, CONT_POS)


while True:
    pygame.display.flip()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        if event.type == MOUSEBUTTONDOWN:
            dibujarCirculo()
            cont += 1
    contador = texto.render("Clicks: " + str(cont), 1, green)
    ventana.blit(contador, CONT_POS)
    pygame.display.update()

关于python - 我的点击计数器程序无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26047918/

相关文章:

Python - 如果不是 0.0 的语句

python - 在 Python 中使用 ConfigObj 时,如何在配置中创建列表列表?

python - 找不到请求库 - theHarvester.py

python - 获取使用map函数创建的列表中奇数位置的列表元素

python - matplotlib 中轴的标签被刻度覆盖

python - 读取 MIDI 输入

python - 标识符规范化 : Why is the micro sign converted into the Greek letter mu?

python - 向 Pygame 应用程序添加 GUI 的最佳方式是什么?

python - 如何在python中使矩形保持在移动线上

python - 如何使用 pygame 制作简单但有效的 Hitbox