1

こんにちは、pygame を使用して、画面上でボールの画像を正方形に動かそうとしています。何度も試しましたがうまくいきません。以下の私のコードを見てください。

import time                                              
import pygame, sys
from pygame.locals import *
pygame.init()
clocks = pygame.time.Clock()  
surfaceObject = pygame.display.set_mode((640, 480))  
pygame.display.set_caption('Bounce')   

mousey,mousex = 0,0  
imgx = 10 
imgy = 10 
pixmove = 60
tiger = [2,2]
movement = 'down' 
background = pygame.image.load('bg.jpg').convert()
ball = pygame.image.load('ball.jpg').convert_alpha()
pygame.mixer.music.load('yeah.mp3')
while True: 
  time.sleep(1)                                        
if movement == 'down':                              
    imgx += pixmove                                  
if imgx < 640:                                      
    tiger[0] - tiger[1]                              

elif movement  == 'right':                          
    imgx += pixmove                                  
if imgx < 0:                                      
    movement = 'up'                                  


elif movement == 'up':                              
    imgy -= pixmove                                  
if imgy < 0:                                        
    movement = 'left'                                


elif movement == 'left':                            
    imgx -= pixmove                                  
if imgx < 0:                                        
    movement = 'down'                                


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

surfaceObject.blit(background,(mousex,mousey))      
surfaceObject.blit(ball,(imgx,imgy))                
pygame.mixer.music.play()
pygame.display.update()                              
clocks.tick(50)

このコードを実行すると、ボールはまっすぐに動き、ボールが端に触れても跳ね返りません。

私の目標は、画面全体でボールを正方形に回転させることです。pixmove 変数を変更してみましたが、問題は解決しませんでした。

皆さんが私を助けてくれることを願っています..事前に感謝します

4

3 に答える 3

0

インデントを修正することを真剣に考えています。これにより、コードが非常に理解しにくくなります。

円などの何かを四角形に移動したい場合、それは非常に簡単です。

import pygame, sys
from pygame.locals import *
pygame.init()

DISPLAYSURF = pygame.display.set_mode((1200, 600))

x, y = (100, 100)
dir = 'right'

while True:
        for event in pygame.event.get():
                if event.type == QUIT:
                        pygame.quit()
                        sys.exit()
        DISPLAYSURF.fill((0, 0, 0))
        pygame.draw.circle(DISPLAYSURF, (255, 255, 255), (x, y), 10)
        if dir == 'right':
                x+=14
                if x >= 1100:
                        dir = 'down'
        elif dir == 'down':
                y+=14
                if y >= 500:
                        dir = 'left'
        elif dir == 'left':
                x-=14
                if x <= 100:
                        dir = 'up'
        elif dir == 'up':
                y-=14
                if y <= 100:
                        dir = 'right'
        pygame.display.flip()

ここに画像の説明を入力

于 2014-07-01T10:10:08.943 に答える
0

あなたが実際にやりたいことは、ボールがエッジで跳ね返ることだと判断したので、ここを見てください: ボールが跳ね返らないのはなぜですか?

要約すると、ボールが進む方向 (垂直方向と水平方向の動き) を追跡し、壁にぶつかったときにそれらを変更する必要があるということです。

于 2014-07-01T09:40:06.890 に答える