2012-11-28 28 views
1

這似乎是一個非常容易回答的問題,但我只是一個需要快速幫助的初學者。PyGame - 繪製一個像素並打印出它的座標

我試圖創建一個程序,當你在pyGame窗口上點擊某個地方時,它會打印出你用鼠標左鍵點擊它,並打印出它在哪裏的座標按下。我已經有了。我在繪製pyGame窗口中的像素時遇到了問題。基本上,我希望它繪製一個像素,我按下了pyGame窗口。

#!/usr/bin/env python 

#import the module for use 
import pygame 

#setting up some variables 
running = 1 
LEFT = 1 
#Set up the graphics area/screen 
screen=pygame.display.set_mode((640,400)) 

#continuous loop to keep the graphics running 
while running==1: 
    event=pygame.event.poll() 
    if event.type==pygame.QUIT: 
     running=0 
     pygame.quit() 
    elif event.type==pygame.MOUSEBUTTONDOWN and event.button==LEFT: 
     print "You pressed the left mouse button at (%d,%d)" %event.pos 
    elif event.type==pygame.MOUSEBUTTONUP and event.button==LEFT: 
     print "You released the left mouse button at (%d,%d)" %event.pos 

回答

0

嘗試在收到鼠標向下事件時設置每個像素的顏色。

elif event.type==pygame.MOUSEBUTTONDOWN and event.button==LEFT: 
    print "You pressed the left mouse button at (%d,%d)" %event.pos 
    screen.set_at((event.pos.x, event.pos.y), pygame.Color(255,0,0,255)) 

請注意,這將根據需要臨時鎖定和解鎖表面。

+0

如果你能幫忙,我該怎麼做? – user1861480

+0

@ user1861480 - 進行了更改,它應更改您單擊的每個像素的顏色並將其拖到紅色。 – Aesthete

+0

我很抱歉。我是這個初學者。我想知道,我在代碼中的哪個位置放置了這個?因爲我希望它能像當我點擊pyGame窗口上的任何地方時,就會出現一個新的像素。當我把這段代碼放入時,它告訴我x沒有屬性 – user1861480

0

我編輯的唯美主義者的代碼能在獨立工作例如:

取決於你在做什麼,獲得/設置單獨的像素可能會很慢。 (如果需要,有Surfarray和Pixelarray。)

import pygame 
from pygame.locals import * 

class Game(object): 
    done = False 
    def __init__(self, width=640, height=480): 
     pygame.init() 
     self.width, self.height = width, height 
     self.screen = pygame.display.set_mode((width, height)) 

     # start with empty screen, since we modify it every mouseclick 
     self.screen.fill(Color("gray50")) 

    def main_loop(self): 
     while not self.done: 
      # events 
      events = pygame.event.get() 
      for event in events: 
       if event.type == pygame.QUIT: self.done = True 
       elif event.type == KEYDOWN: 
        if event.key == K_ESCAPE: self.done = True 
       elif event.type == MOUSEMOTION: 
        pass 
       elif event.type == MOUSEBUTTONDOWN and event.button == 1: 
        print "Click: ({})".format(event.pos) 
        self.screen.set_at(event.pos, Color("white")) 

      # draw 
      pygame.display.flip() 


if __name__ == "__main__": 
    g = Game() 
    g.main_loop() 
+0

沒有爲我工作。給我一些錯誤。不過謝謝。 – user1861480

+0

你確定嗎?因爲我甚至沒有使用'x'。它對我的運行很好。 – ninMonkey

+0

對不起,這是錯誤 回溯(最近通話最後一個): 文件 「C:/Python26/1234.py」 34行,在 g.main_loop() 文件「C:/ Python26/1234。 py「,第25行,在main_loop中 print」Click:({})「.format(event.pos) ValueError:長度爲零的字段名稱 – user1861480