2

次のコードを実行すると、空白の (黒い) ウィンドウが表示されます。

ウィンドウのキャプションが表示されますが、まだ画像をロードしていません (使用した画像以外の画像を使用してみました)。.py ファイルと画像は同じディレクトリにあります。

background_image_filename='checkmark.jpg'
mouse_image_filename='digestive_bw.png'
import pygame, sys
from pygame.locals import*
from sys import exit


pygame.init()

screen=pygame.display.set_mode((800,800),0,32)
#pygame.display.set_caption("Hello, Howdy, Mate, and Hi there world!")


background=pygame.image.load(background_image_filename).convert()
mouse_cursor=pygame.image.load(mouse_image_filename).convert_alpha()

while True:
    for event in pygame.event.get():
        if event.type==QUIT:
            pygame.quit()
            sys.exit()

screen.blit(background,(0,0))

x,y=pygame.mouse.get_pos()
x-=mouse_cursor.get_width() /2
y=-mouse_cursor.get_height() /2
screen.blit(mouse_cursor,(x,y))

pygame.display.update()

私はpygame 1.9.2でpython 3.2をインストールしました。これが機能しない場合は、それらをアンインストールして 3.1 + 1.9.1 をインストールすることを検討します。

4

4 に答える 4

2

コードをループ内に配置し、すべての CPU を使用しないようにクロックを使用する必要があります。

clock = pygame.time.Clock()

while True:
    for event in pygame.event.get():
        if event.type==QUIT:
            pygame.quit()
            sys.exit()

    screen.blit(background,(0,0))

    x,y=pygame.mouse.get_pos()
    x-=mouse_cursor.get_width() /2
    y=-mouse_cursor.get_height() /2
    screen.blit(mouse_cursor,(x,y))

    pygame.display.update()
    clock.tick(30)  # keep 30 fps
于 2012-08-31T23:20:00.140 に答える
0

他にやりたいことがあるかもしれませんが、ある点に y=- を置き、そのすぐ隣に x-= を置きます。私はあなたがそれをするつもりだったとは思わない。

于 2012-09-01T23:28:38.830 に答える
0

ヒント:width / 2を使用すると簡略化できRectます。他にも便利な動的プロパティがあります: http://www.pygame.org/docs/ref/rect.html ( width、center、centerx、topleft など...)

コード:

mouse_cursor=pygame.image.load(mouse_image_filename).convert_alpha()
mouse_rect = mouse_cursor.get_rect()

mouse_rect.center = pygame.mouse.get_pos()
screen.blit(mouse_cursor, mouse_rect)
pygame.display.update()

どれが:

mouse_cursor=pygame.image.load(mouse_image_filename).convert_alpha()

x,y=pygame.mouse.get_pos()
x-=mouse_cursor.get_width() /2
y=-mouse_cursor.get_height() /2
screen.blit(mouse_cursor,(x,y))
pygame.display.update()
于 2012-09-04T02:23:10.367 に答える