2017-06-17 7 views
1

pygame.surface.scroll()を見つけました。scroll()は、表面を覆うように背景を再構築する必要なしに、移動するサーフェスのためのものですが、表面はpygame.rect.move_ip()のように、pygameのドキュメントから理解しています。pygame.surface.scroll()の使用方法は?

とにかく、私はそれを使用する方法を知らないし、pygame文書の例は私が初心者である限り理解するのが難しく、長い時間を捜した後、それを使用する方法を理解する。

ここに私のコードです。

import pygame 
from pygame.locals import* 

screen=pygame.display.set_mode((1250,720)) 
pygame.init() 
clock=pygame.time.Clock() 
boxx=200 
boxy=200 
image = pygame.Surface([20,20]).convert_alpha() 
image.fill((255,255,255)) 
while True : 
    screen.fill((0,0,0)) 
    for event in pygame.event.get(): 
     if event.type==pygame.QUIT : 
      pygame.quit() 
      quit() 
    image.scroll(10,10) 
    screen.blit(image,(boxx,boxy)) 
    pygame.display.update() 
    clock.tick(60) 

答えて

1

EDIT:あなたのimagescreen変数が後方にあります。それはまたあなたにいくつかの混乱を引き起こしています。私は確信しています。

すべての黒い背景をスクロールしようとしている可能性があります。おそらくスクロールしていて、それを知らないのは、blit()を使って画面に描画した白いボックスが静止しているためです。

イメージファイルのようなスクロールが表示されているものを試してみてください。白いボックスを移動する場合は、速度変数としてカウンタを追加できます。これを読んで、それを実行してください。

import pygame 
from pygame.locals import* 
screen=pygame.display.set_mode((1250,720)) 
pygame.init() 
clock=pygame.time.Clock() 
boxx=200 
boxy=200 
image = pygame.Surface([20,20]).convert_alpha() 
image.fill((255,255,255)) 
speed = 5 # larger values will move objects faster 
while True : 
    screen.fill((0,0,0)) 
    for event in pygame.event.get(): 
     if event.type==pygame.QUIT : 
      pygame.quit() 
      quit() 
    image.scroll(10,10) 
    # I did modulus 720, the surface width, so it doesn't go off screen 
    screen.blit(image,((boxx + speed) % 720, (boxy + speed) % 720)) 
    pygame.display.update() 
    clock.tick(60) 

私はスクロール機能が働いたりされていないことを確認するために、あなたはそれが最初に動いて見ることができるようにあなたの背景として画像を使用することを学ぶと言うことはできません。

+0

ありがとうございました。これは黒い背景を作るのが私の過ちで、私はscreen.scroll()ではなくimage.scroll() –