2016-05-21 16 views
1

私のゲームでは、バトルシップ、矢印キーを押したときに船を移動しようとしています。私の船は5面のポリゴンとそれに接する5面で構成されています。私はそれを動かす方法をネットで精査したが、四角形や四角形の船を動かす方法しか見つけていない。以下は、(船を動かすのあらゆる試みをせずに)私のコードです:Pygameで非長方形のオブジェクトを移動するには?

import pygame,sys 
from pygame.locals import * 

pygame.init() 

black = (0,0,0) 
white = (255,255,255) 
red = (255,0,0) 
green = (0,255,0) 
blue = (0,0,255) 
yellow = (255,242,0) 
ship_body = (33, 117, 243) 

screen = pygame.display.set_mode((500,500)) 
pygame.display.set_caption("Battle Ship") 
background = pygame.image.load("Sky Background.png") 

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


    screen.blit(background, (0,0)) 
    ship = [ 
      pygame.draw.polygon(screen, ship_body,((100,50),(180,95),(320,95),(400,50),(250,35))), 
      pygame.draw.line(screen, black, (100,50),(180,95),1), 
      pygame.draw.line(screen, black, (180,95),(320,95),1), 
      pygame.draw.line(screen, black, (320,95),(400,50),1), 
      pygame.draw.line(screen, black, (400,50),(250,35),1), 
      pygame.draw.line(screen, black, (250,35),(100,50),1), 
      ] 

    pygame.display.update()   
+0

私はかなり確信していますPygameを使用すると、それらの線を新しいサーフェスに描画して、どこにでも描画することができます。それがIMOの最良の方法です。 – user161778

答えて

0

あなたはポリゴンと増分のためのポイントのリストを作成し、それらを増減することができます

import pygame,sys 
from pygame.locals import * 

pygame.init() 

black = (0,0,0) 
white = (255,255,255) 
red = (255,0,0) 
green = (0,255,0) 
blue = (0,0,255) 
yellow = (255,242,0) 
ship_body = (33, 117, 243) 

screen = pygame.display.set_mode((500,500)) 
pygame.display.set_caption("Battle Ship") 
#background = pygame.image.load("Sky Background.png") 

pygame.key.set_repeat(50,50) 

ship_points = [ [100, 50], [180, 95], [320, 95], [400, 50], [250,35] ] 
x = 0 
y = 0 

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

     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_LEFT: 
       x = -1 

      if event.key == pygame.K_RIGHT: 
       x = 1 

      if event.key == pygame.K_UP: 
       y = -1 

      if event.key == pygame.K_DOWN: 
       y = 1 

      for point in ship_points: 
       point[0] += x 
       point[1] += y 

      x=0 
      y=0 

    # screen.blit(background, (0,0)) 
    screen.fill(black) 
    pygame.draw.polygon(screen, ship_body, ship_points) 
    ''' 
    ship = [ 
      pygame.draw.polygon(screen, ship_body,((100,50),(180,95),(320,95),(400,50),(250,35))), 
      pygame.draw.line(screen, black, (100,50),(180,95),1), 
      pygame.draw.line(screen, black, (180,95),(320,95),1), 
      pygame.draw.line(screen, black, (320,95),(400,50),1), 
      pygame.draw.line(screen, black, (400,50),(250,35),1), 
      pygame.draw.line(screen, black, (250,35),(100,50),1), 
      ] 
    ''' 
    pygame.display.update() 
+0

2つのこと以外は正常に動作しています。私は私の空の背景と船のための私の黒い国境をしたい。それ、どうやったら出来るの? – Jetter126

+0

私はイメージを持っていないので、背景のイメージ行をコメントアウトしたので、その行のコメントを外してください。また、blitされた場所のコメントを外して注文を入れ替えるので、fillは最初、blitはsecondです。ボーダーと一緒に動きをするには、ポリゴンのような点を持つ別のリストを作成します。私は仕事中でも電話でも、今より良い答えを出すことはできません。 – marienbad

+0

ありがとう。今それを試してみるでしょう。 – Jetter126

関連する問題