0
点赞
收藏
分享

微信扫一扫

Bean 的六种作用域

洲行 2023-09-05 阅读 66

系列文章目录

星际争霸之小霸王之小蜜蜂(九)--狂鼠之灾

 星际争霸之小霸王之小蜜蜂(八)--蓝皮鼠和大脸猫

 星际争霸之小霸王之小蜜蜂(七)--消失的子弹

 星际争霸之小霸王之小蜜蜂(六)--让子弹飞

 星际争霸之小霸王之小蜜蜂(五)--为小蜜蜂降速

 星际争霸之小霸王之小蜜蜂(四)--事件监听-让小蜜蜂动起来


目录

系列文章目录

前言

一、p向右移动小老鼠

二、设置边界

1.设置属性变量

2.检查是否撞到边界

3、实现向下并转向

总结



前言


一、p向右移动小老鼠

class Settings():

    def __init__(self):

        self.screen_width = 800
        self.screen_height = 600
        self.bg_color = (255,255,255)
        self.ship_speed_factor = 0.1


        self.bullet_speed_factor = 0.3
        self.bullet_width = 2
        self.bullet_hight = 5
        self.bullet_color = 60,60,60
        self.bullets_allowed = 3
        self.alien_speed_factor = 1
 def update(self):
        self.x += self.new_setting.alien_speed_factor
        self.rect.x = self.x
def update_aliens(aliens):
aliens.update()
  while True:
        gf.check_events(new_setting,screen,ship,bullets)
        ship.update()
        gf.update_bullets(bullets)
        gf.update_aliens(aliens)
        gf.update_screen(new_setting,screen,ship,bullets,aliens)

 

二、设置边界

1.设置属性变量

class Settings():

    def __init__(self):

        self.screen_width = 800
        self.screen_height = 600
        self.bg_color = (255,255,255)
        self.ship_speed_factor = 0.1


        self.bullet_speed_factor = 0.3
        self.bullet_width = 2
        self.bullet_hight = 5
        self.bullet_color = 60,60,60
        self.bullets_allowed = 3
        self.alien_speed_factor = 0.1
        self.fleet_drop_speed = 1
        self.fleet_direction = 1

2.检查是否撞到边界

 def update(self):
        self.x += (self.new_setting.alien_speed_factor*self.new_setting.fleet_direction)
        self.rect.x = self.x
        
        
   def check_edges(self):
        screen_rect = self.screen.get_rect()
        if self.rect.right >= screen_rect.right:
            return True
        elif self.rect.left<=0:
            return True

3、实现向下并转向

def change_fleet_direction(new_setting,aliens):
    for alien in aliens.sprites():
        alien.rect.y += new_setting.fleet_drop_speed
new_setting.fleet_
direction *=-1
def check_fleet_edges(new_setting,aliens):
    for alien in aliens.sprites():
        if alien.check_edges():
            change_fleet_direction(new_setting,aliens)
            Break
import sys
import pygame
from bullet import Bullet
from alien import Alien


def check_keydown_events(event,new_setting,screen,ship,bullets):
    if event.key == pygame.K_RIGHT:
        ship.moving_right = True

    elif event.key == pygame.K_LEFT:
        ship.moving_left = True

    elif event.key == pygame.K_SPACE:
        fire_bullet(new_setting, screen, ship, bullets)

    elif event.key ==pygame.K_q:
        sys.exit()


def check_keyup_events(event,ship):
    if event.key == pygame.K_RIGHT:
        ship.moving_right = False

    if event.key == pygame.K_LEFT:
        ship.moving_left = False


def check_events(new_setting,screen,ship,bullets):
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type==pygame.KEYDOWN:
            check_keydown_events(event,new_setting,screen,ship,bullets)

        elif event.type==pygame.KEYUP:
            check_keyup_events(event, ship)

def fire_bullet(new_setting,screen,ship,bullets):
    if len(bullets) < new_setting.bullets_allowed:
        new_bullet = Bullet(new_setting, screen, ship)
        bullets.add(new_bullet)


def update_bullets(bullets):
    bullets.update()
    for bullet in bullets.copy():
        if bullet.rect.bottom <= 0:
            bullets.remove(bullet)


def create_fleet(new_setting,screen,aliens):
    for row_number in range(3):
        for alien_number in range(12):
            alien = Alien(new_setting,screen)
            alien.x = alien.rect.width+2*alien.rect.width*alien_number
            alien.rect.x = alien.x
            alien.rect.y = alien.rect.height+2*alien.rect.height*row_number
            aliens.add(alien)

def update_screen(new_setting,screen,ship,bullets,aliens):
    screen.fill(new_setting.bg_color)
    for bullet in bullets.sprites():
        bullet.draw_bullet()
    ship.blitme()
    aliens.draw(screen)
    pygame.display.flip()


def update_aliens(new_setting,aliens):
    check_fleet_edges(new_setting,aliens)
    aliens.update()


def change_fleet_direction(new_setting,aliens):
    for alien in aliens.sprites():
        alien.rect.y += new_setting.fleet_drop_speed
    new_setting.fleet_direction *=-1


def check_fleet_edges(new_setting,aliens):
    for alien in aliens.sprites():
        if alien.check_edges():
            change_fleet_direction(new_setting,aliens)
            break

 

 


总结

举报

相关推荐

0 条评论