2014-09-25 54 views
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() 

當我運行它我得到的屏幕用黑色填充,和一些文字「點擊次數:0 「而當我點擊鼠標,而不是將」點擊次數: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() 

注:這是我第二次我因爲人們被否決毫無理由,也標記後作爲題外話當我試圖解釋我的問題,我知道最好的方式發佈這些...

+0

人們正在downvoting,因爲他們認爲你應該發佈問題之前自己調試。此外,您應該發佈問題仍然存在的最小示例。 – simonzack 2014-09-25 20:59:20

+0

你所看到的是你總是在畫布(ventana)的頂部繪畫,而不是先清除它。我敢打賭,儘管只是在鼠標點擊繪製,圈子還留在屏幕上。 你需要清理屏幕才能繪製到屏幕上(或者在分數上放一個黑色方塊),我會想象。 – Nonnib 2014-09-25 21:06:49

回答

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 
    ventana.fill((0,0,0)) # clear the screen 
    contador = texto.render("Clicks: " + str(cont), 0, green) 
    ventana.blit(contador, CONT_POS) 
    pygame.display.update() 

您可以在第一個函數中添加使用黑色塊傳輸每次只覆蓋塊傳輸的頂部繪製。

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()