2017-05-03 8 views
0

私はpygame(とコーディング)に慣れていないので、自分のイメージ(xwing)を画面の片側から画面の反対側に移動させる方法を理解できません。現在のコードに誤りがあります。 。 。私はイメージを片面から消して、もう片方の画面にpygameで置くことができますか?

Traceback (most recent call last): 
    File "/Users/Grant/Documents/xwingexample.py", line 85, in <module> 
    main() 
    File "/Users/Grant/Documents/xwingexample.py", line 61, in main 
    player_rect.x += change_x 
AttributeError: 'int' object has no attribute 'x' 

ありがとう!

'int' object has no attribute 'x' 

私がいるとします。ここ

はコード

import sys 
import random 
import pygame as pg 


pg.init() 
screen = pg.display.set_mode((1280, 800)) 
display_width = 1280 
display_height= 800 

black= (0,0,0) 
white= (255,255,255) 
red = (255,0,0) 
blue_violet = (138,43,226) 

xwingImg = pg.image.load('X-Wing.bmp').convert() 
tieImg= pg.image.load('tiefighter.png').convert() 
space=pg.image.load('space.jpg').convert() 

BG_image = pg.image.load('space.jpg').convert() 


def main(): 
    clock = pg.time.Clock() 
    # Surfaces/images have a `get_rect` method which 
    # returns a rect with the dimensions of the image. 
    player_rect = xwingImg.get_rect() 
    player_rect.center = (800,400) 
    change_x = 0 
    change_y = 0 
    enemies = [] 
    spawn_counter = 30 

    done = False 

    while not done: 
     for event in pg.event.get(): 
      if event.type == pg.QUIT: 
       done = True 
      if event.type == pg.KEYDOWN: 
       if event.key == pg.K_d: 
        change_x = 5 
       if event.key == pg.K_a: 
        change_x = -5 
      if event.type == pg.KEYUP: 
       if event.key == pg.K_d and change_x > 0: 
        change_x = 0 
       if event.key == pg.K_a and change_x < 0: 
        change_x = 0 


     # Spawn enemies if counter <= 0 then reset it. 
     spawn_counter -= 1 
     if spawn_counter <= 0: 
      # Append an enemy rect. You can pass the position directly as an argument. 
      enemies.append(tieImg.get_rect(topleft=(random.randrange(1280), -800))) 
      spawn_counter = 30 


     # Update player_rect and enemies. 
     player_rect.x += change_x 
     player_rect.y += change_y 
     for enemy_rect in enemies: 
      enemy_rect.y += 5 
      # Collision detection with pygame.Rect.colliderect. 
      if player_rect.colliderect(enemy_rect): 
       print('Collision!') 

     # Draw everything. 
     screen.blit(BG_image, (0,0)) 
     for enemy_rect in enemies: 
      screen.blit(tieImg, enemy_rect) 
     screen.blit(xwingImg, player_rect) 

     if player_rect.x > display_width: 
      player_rect = 0 
     if player_rect.y < display_width: 
      player_rect= display_width 

     pg.display.flip() 
     clock.tick(40) 


if __name__ == '__main__': 
    main() 
    pg.quit() 
    sys.exit() 

答えて

0

あなたはその後、このエラーを返すplayer_rect.x += change_xので、player_rectに整数を代入しようとすると、ライン75-78をチェックアウトですplayer_rect.xplayer_rect.yを変更したいので、これを試すことができます。うまくいきます。

if player_rect.x > display_width: 
    player_rect.x = 0 
if player_rect.y < display_width: 
    player_rect.y= display_width 
関連する問題