python飞船游戏(一)

alien_invasion.py

 #初始化pygame\设置以及屏幕对象
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode(
            (ai_settings.screen_width,ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")
    
    #创建Play按钮
    play_button = Button(ai_settings,screen,"Play")
    
    #创建一个用于存储游戏统计信息实例 创建记分牌
    stats = GameStats(ai_settings)
    sb = Scoreboard(ai_settings,screen,stats)
    #创建一艘飞船
    ship = Ship(ai_settings,screen)
    
    #创建一个用于存储子弹的编组 外星人编组
    bullets = Group()
    aliens = Group()
    
    #创建外星群
    gf.create_fleet(ai_settings,screen,ship,aliens)
    
    #开始游戏的主循环
    while True:
        
        
       gf.check_events(ai_settings,screen,stats,sb,play_button,ship,
                       aliens,bullets)
       
       if stats.game_active:
           ship.update()
           gf.update_bullets(ai_settings,screen,stats,sb,ship,aliens,bullets)
           gf.update_aliens(ai_settings,screen,stats,sb,ship,aliens,bullets)
           
       gf.update_screen(ai_settings,screen,stats,sb,ship,aliens,bullets,
                        play_button)
       
       #每次循环都重绘制屏幕
       
      

run_game()



#settings.py

 
    def __init__(self):
        """初始化游戏的设置"""
        #屏幕设置
        self.screen_width = 1200
        self.screen_height = 800
        self.bg_color = (255,215,0)
        
        
        #飞船设置
        self.ship_limit = 1
       
        #子弹设置
        
        self.bullet_width = 10
        self.bullet_height = 15
        self.bullet_color = 255,140,0      
        self.bullet_allowed = 10
        
        #子弹设置
        
        self.fleet_drop_speed = 10
        
        #节奏
        self.speedup_scale = 1.1
        
        self.initialize_dynamic_settings()
        
        #fleet_direction为1表示向右移 为 -1表示向左移
        self.fleet_direction = 1
        
        #加快游戏节奏的速度
        self.speedup_scale = 1.1
        
        #外星人点数的提高速度
        self.score_scale = 1.5
        
        self.initialize_dynamic_settings()
        
    def increase_speed(self):
        """提高速度设置外星人点数"""
        self.ship_speed_factor *= self.speedup_scale
        self.bullet_speed_factor *= self.speedup_scale
        self.alien_speed_factor *= self.speedup_scale
        
        self.alien_points = int(self.alien_points * self.score_scale)
        
        
    def initialize_dynamic_settings(self):
        """初始化随游戏进行而变化得设置"""
        self.ship_speed_factor = 1.5
        self.bullet_speed_factor = 1
        self.alien_speed_factor = 2
        #fleet_direction为1表示向右-1向左
        self.fleet_direction = 1
        
        #计分
        self.alien_points = 50
    
    def increase_speed(self):
        """提高速度设置"""
        self.ship_speed_factor *= self.speedup_scale
        self.bullet_speed_factor *= self.speedup_scale
        self.alien_speed_factor *= self.speedup_scale
        self.alien_points = int(self.alien_points * self.score_scale)

        print(self.alien_points)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过在Python中使用Pygame库来实现飞船子弹的散射效果。要实现这个效果,你可以在飞船发射子弹时添加一些偏移量,使得子弹沿着不同的角度散开。 下面是一个简单的示例代码: ```python import pygame from pygame.sprite import Sprite class Bullet(Sprite): def __init__(self, ai_settings, screen, ship): super().__init__() self.screen = screen # 创建子弹的矩形,并设置正确的位置 self.rect = pygame.Rect(0, 0, ai_settings.bullet_width, ai_settings.bullet_height) self.rect.centerx = ship.rect.centerx self.rect.top = ship.rect.top # 存储用小数表示的子弹位置 self.y = float(self.rect.y) # 设置子弹的颜色和速度 self.color = ai_settings.bullet_color self.speed_factor = ai_settings.bullet_speed_factor def update(self): # 更新子弹的位置 self.y -= self.speed_factor self.rect.y = self.y def draw_bullet(self): # 在屏幕上绘制子弹 pygame.draw.rect(self.screen, self.color, self.rect) class Ship: def __init__(self, ai_settings, screen): self.screen = screen self.ai_settings = ai_settings def fire_bullet(self): # 创建一颗子弹,并将其加入到编组bullets中 bullet = Bullet(self.ai_settings, self.screen, self) bullets.add(bullet) def fire_scattered_bullets(self): # 创建多颗散射子弹 num_of_bullets = 5 # 子弹数量 spread_angle = 30 # 散射角度 for i in range(num_of_bullets): bullet = Bullet(self.ai_settings, self.screen, self) # 计算偏移角度 offset_angle = (i - (num_of_bullets-1)/2) * spread_angle # 根据偏移角度设置子弹的初始位置和角度 bullet.rect.centerx = self.rect.centerx bullet.rect.top = self.rect.top bullet.angle = offset_angle # 将子弹添加到编组bullets中 bullets.add(bullet) def update(self): # 更新飞船的位置等信息 pass def blitme(self): # 在指定位置绘制飞船 pass # 游戏主循环中的相关代码 ship = Ship(ai_settings, screen) ship.fire_scattered_bullets() ``` 在上面的示例代码中,`fire_scattered_bullets()`方法用于发射多颗散射子弹。它通过计算偏移角度,将子弹的初始位置和角度进行设置,从而实现子弹的散射效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值