Skip to content

Commit ef60505

Browse files
committed
[学习内容]外星人入侵项目实践
1.修复消灭所有外星人之后游戏不能重新开始 2.增加外星人触碰底线时,游戏无法重新开始
1 parent 3e6836d commit ef60505

File tree

3 files changed

+27
-19
lines changed

3 files changed

+27
-19
lines changed

alien.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ def __init__(self, screen):
4141
self.__speed = 1
4242
self.__min_distance_alien = 50
4343
self.__min_distance_wall = 40
44-
self.__current_distance_alien_left = -1
45-
self.__current_distance_alien_right = -1
46-
self.__current_distance_wall_left = -1
47-
self.__current_distance_wall_right = -1
48-
self.__current_distance_bottom = -1
49-
self.__current_distance_top = -1
44+
self.__current_distance_alien_left = 0
45+
self.__current_distance_alien_right = 0
46+
self.__current_distance_wall_left = 0
47+
self.__current_distance_wall_right = 0
48+
self.__current_distance_bottom = 0
49+
self.__current_distance_top = 0
5050

5151
def blitme(self):
5252
"""在指定的位置绘制外星人"""

game_functions.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,28 +87,29 @@ def creat_fleet_alien(screen, game_state, aliens, aliens_num):
8787
aliens.add(alien)
8888

8989

90-
def alien_short(scrren, gamge_state, aliens, ship, ai_settings):
90+
def alien_short(scrren, game_state, aliens, ship, ai_settings):
9191
"""判断子弹是否命中外星人"""
9292
bullets = ship.get_bullets()
9393
# 求子弹和外星人交集
94-
collisions = pygame.sprite.groupcollide(aliens, bullets, True, True)
94+
collisions = pygame.sprite.groupcollide(aliens, bullets, True, False)
9595

9696
# 外星人都被消灭时重新创建外星人
9797
if 0 == len(aliens):
9898
bullets.empty()
9999
alien_num = ai_settings.cal_alien_num_line_default(scrren)
100-
creat_fleet_alien(scrren, aliens, alien_num)
100+
creat_fleet_alien(scrren, game_state.game_state, aliens, alien_num)
101101
ai_settings.set_alien_info_default(aliens, alien_num)
102102
# print collisions
103103

104104

105105
def shiphit_alienoverline(scrren, game_state, ship, aliens):
106106
"""外星人和飞船碰撞和过线处理"""
107107

108-
# for alien in aliens:
109-
# # 任意一个外星人过线
110-
# if 0 == alien.get_distance_wall_top():
111-
# game_state.game_state = 'stop'
108+
for alien in aliens:
109+
# 任意一个外星人过线
110+
if 0 > alien.get_distance_wall_top():
111+
game_state.game_state = 'stop'
112+
break
112113

113114
if pygame.sprite.spritecollideany(ship, aliens):
114115
game_state.game_state = 'stop'
@@ -132,4 +133,11 @@ def shiphit_alienoverline(scrren, game_state, ship, aliens):
132133
sleep(5)
133134
sys.exit()
134135

136+
# # elif 'running' == game_state.game_state:
137+
# # if 0 == alien.get_distance_wall_top():
138+
#
139+
# if 0 == len(aliens):
140+
# creat_fleet_alien(scrren, game_state, aliens, aliens_num)
141+
142+
135143

settings.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,22 @@ def __init__(self):
1111

1212
# 屏幕设置
1313
self.scrren_width = 650
14-
self.scrren_height = 1000
14+
self.scrren_height = 700
1515
self.bg_color = (255, 255, 255)
1616

1717
# 飞船设置
18-
self.ship_speed = 1
18+
self.ship_speed = 10
1919
self.ship_bullet_allowed = 100
2020
self.ship_limit = 3
2121

2222
# 子弹设置
23-
self.bullet_speed = 5
24-
self.bullet_width = 3
25-
self.bullet_height = 8
23+
self.bullet_speed = 1
24+
self.bullet_width = 200
25+
self.bullet_height = 80
2626
self.bullet_color = 0, 0, 0
2727

2828
# 外星人设置
29-
self.alien_speed_range = {'low': 0.05, 'high': 0.3}
29+
self.alien_speed_range = {'low': 0.01, 'high': 0.14}
3030

3131
self.alien_max_num = 10
3232

0 commit comments

Comments
 (0)