1

これは答えるのが本当に簡単な質問のように思えるかもしれませんが、私はただの初心者で、すぐに助けが必要です.

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
4

2 に答える 2

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

これにより、必要に応じてサーフェスが一時的にロックおよびロック解除されることに注意してください。

于 2012-11-28T22:32:56.373 に答える
0

Aesthete のコードを編集して、動作するスタンドアロンの例にしました。

何をしているかによって、個々のピクセルの取得/設定が遅くなる可能性があります。( 必要に応じて 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()
于 2012-11-29T03:30:30.237 に答える