Python 外星人入侵代码小测试
最近学习Python期间闲来无事,在Python外星人入侵的代码上尝试一点小测试,增加了飞船前进后退以及外星人随机产生并且在到达底部后刷新的代码,仅供个人娱乐,以下是个人写的一段小程序。
修改部分子函数
game_functions.py
修改飞船前后移动键位
def check_keydown_events(event,asettings,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_UP:
ship.moving_up = True
elif event.key == pygame.K_DOWN:
ship.moving_down = True
elif event.key == pygame.K_SPACE:
fire(asettings, screen, ship, bullets)
增加前进、后退的键位识别。
修改外星人生成位置
def create_alien(asettings,screen,aliens,alien_number,row_number):
alien.x = alien_width + 2 * alien_width * alien_number
替换为
alien.x = random.randint(0,asettings.screen_width-alien.rect.width)
def create_fleet(asettings,screen,ship,aliens):
number_aliens_x = 5
number_rows = 1
外星人位置替换为随机生成的x轴新位置而非原始的固定位置。生成1行5个随机位置的外星人,替换掉原先固定位置的外星人群。
修改外星人越过屏幕底部
def check_aliens_bottom(asettings,stats,screen,ship,aliens,bullets,sb):
shiphit(asettings,ship,aliens,stats,screen,bullets, sb)
替换为
aliens.empty()
当外星人到达屏幕底部时,不认为发生碰撞而设置编组aliens为空,重新生成新的外星人群。
alien.py
修改外星人y轴位置
def __init__(self,asettings,screen):
self.y = float(self.rect.y)
def update(self):
self.x += self.asettings.alienspeedfactor * self.asettings.fleetdirection
self.rect.x = self.x
self.y += 0.2* self.asettings.alienspeed
self.rect.y = self.y
增加外星人初始化y的位置以及y轴方向的位置刷新。
ship.py
修改飞船前后移动位置刷新
def update(self):
if self.moving_right and self.rect.right < self.screen_rect.right:
self.center+= self.asettings.shipspeed
if self.moving_left and self.rect.left >0:
self.center-= self.asettings.shipspeed
if self.moving_up and self.center2>self.rect.height/2:
self.center2-= self.asettings.shipspeed
if self.moving_down and self.center2<self.asettings.screen_height-self.rect.height/2:
self.center2+= self.asettings.shipspeed
self.rect.centerx = self.center
self.rect.centery = self.center2
增加飞船前进、后退的位置刷新以及y轴不超出屏幕范围的判定条件。