微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

您能帮我旋转飞船,使其从屏幕左侧发射吗?其头部应指向右侧而不是上方

如何解决您能帮我旋转飞船,使其从屏幕左侧发射吗?其头部应指向右侧而不是上方

外星人入侵

这是主程序,它有一个名为ai_settings的实例,其宽度,高度和背景色为属性。创建了Screen(surface),然后在主while循环中检查关键事件(gf。 check_events),然后更新飞船位置和子弹位置,最后绘制屏幕。

import pygame
import sys
from Settings import Settings
from pygame.sprite import Group
from Ship import Ship
import game_functions as gf
def run_game():
  ai_settings=Settings(1200,800,(230,230,230))
  screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
  pygame.display.set_caption('left spacecrafr')
  ship=Ship(screen,ai_settings)
  bullets=Group()
  while (True):
    gf.check_events(ai_settings,screen,ship,bullets)
    ship.update()
    gf.update_bullets(bullets,ship)
    gf.update_screen(ai_settings,bullets)
run_game()

它有一个初始化器来创建实例,然后设置其当前位置和坐标。Update函数根据关键事件更新船舶的位置,不允许船舶从屏幕上消失。 blitme函数吸引飞船。

import sys 
import pygame
class Ship():
  def __init__(self,ai_settings):
     self.screen=screen
     self.ai_settings=ai_settings
     self.image=pygame.image.load('/Users/WIN-10/Desktop/alien 
     invasion/spacecraft.bmp')
     self.rect=self.image.get_rect()
     self.screen_rect=self.screen.get_rect()
     self.speed_factor=self.ai_settings.ship_speed
     'initializes the location of the ship and its coordinates'
     self.rect.left=0
     self.rect.centery=self.screen_rect.centery
     self.centerx=float(self.rect.centerx)
     self.centery=float(self.rect.centery)
    'flags for key events'
     self.moving_left=False
     self.moving_right=False
     self.moving_up=False
     self.moving_down=False
    
    
  def update(self):
     'sets new location for ship,it never disappears from the screen'
     if self.moving_left and self.rect.left>0:
        self.centerx-=self.speed_factor
     if self.moving_right and self.rect.right<self.screen_rect.right:
        self.centerx+=self.speed_factor
     if self.moving_down and self.rect.bottom<self.screen_rect.bottom:
        self.centery+=self.speed_factor
     if self.moving_up and self.rect.top>self.screen_rect.top:
        self.centery-=self.speed_factor
     self.rect.centerx=self.centerx
     self.rect.centery=self.centery
  def blitme(self):

   '''draws the ship'''
    self.screen.blit(self.image,self.rect)

enter image description here

解决方法

Pygame具有transform方法,可让您旋转图像

rotated_image = pygame.transform.rotate(self.image,-self.heading)

self.heading是旋转图像的角度。

如果您是初学者,可能会发现“ Pygame Zero”使事情变得简单一些。 Pygame Zero的Actor类具有angle属性,它将为您完成所有艰苦的工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。