Skip to content

Commit a0108e5

Browse files
committed
[学习内容]外星人入侵项目实践
3. 打印刷新外星人 100%
1 parent c0e7d2f commit a0108e5

File tree

5 files changed

+22
-20
lines changed

5 files changed

+22
-20
lines changed

alien.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@ def __init__(self, screen):
1212
"""初始化外星人"""
1313
super(Alien, self).__init__()
1414
self.__screen = screen
15-
self.__image = 'alien.png'
1615

1716
# 加载外星人图像
18-
self.__image = pygame.image.load('alien.png')
17+
self.__image = pygame.image.load_extended('alien.png')
1918
self.__rect = self.__image.get_rect()
2019

2120
# 每个外星人最初都在屏幕左上角附近
@@ -43,7 +42,7 @@ def blitme(self):
4342

4443
def update(self):
4544
"""重写更新函数,根据移动规则改变外星人位置"""
46-
self.__y += self.__speed
45+
# self.__y += self.__speed
4746
# self.__x += self.__speed
4847
self.__rect.y = self.__y
4948
# self.__rect.x = self.__x

alien_invasion.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,11 @@ def run_game():
2525

2626
# 创建外星人
2727
aliens = Group()
28+
2829
alien_num = ai_settings.cal_alien_num_line_default(scrren)
2930
print alien_num
3031
gf.creat_fleet_alien(scrren, aliens, alien_num)
31-
ai_settings.set_alien_info_default(aliens, alien_num)
32-
33-
34-
32+
ai_settings.set_alien_info_default(aliens)
3533

3634
# 开始游戏的主循环
3735
while True:

game_functions.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,12 @@ def redraw_bullet(bullets):
5555
# print len(bullets)
5656

5757

58-
def redraw_alien(scrren, aliens):
59-
aliens.update()
58+
def redraw_alien(aliens):
59+
# aliens.update()
6060
# aliens_num = len(aliens)
6161
# aliens.draw(scrren)
62+
for alien in aliens:
63+
alien.blitme()
6264

6365

6466
def redraw_scrren(bg_color, scrren, ship, aliens):
@@ -73,7 +75,7 @@ def redraw_scrren(bg_color, scrren, ship, aliens):
7375
redraw_bullet(ship.get_bullets())
7476

7577
# 4.重绘外星人
76-
redraw_alien(scrren, aliens)
78+
redraw_alien(aliens)
7779

7880
# 让最近绘图的屏幕可见
7981
pygame.display.flip()

settings.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@ def __init__(self):
2828
self.alien_speed = 1
2929
self.alien_max_num = 10
3030
#
31-
self.alien_min_distance_alien = 50
32-
self.alien_min_distance_wall = 40
31+
self.alien_width = 60
32+
self.alien_height = 60
33+
self.alien_min_distance_alien = 20
34+
self.alien_min_distance_wall = 10
3335
self.alien_min_distance_bottom = 30
3436
self.alien_min_distance_top = 60
3537

@@ -57,30 +59,32 @@ def set_bullet_info_defalut(self, bullet):
5759
self.bullet_speed,
5860
self.bullet_color)
5961

60-
def cal_alien_num_line(self, alien_distance_alien, alien_distance_wall, scrren):
62+
def cal_alien_num_line(self, alien_distance_alien, alien_distance_wall, alien_width, scrren):
6163
"""计算一行可以放置多少个外星人"""
6264
# 屏幕宽度 = (外星人数 - 1)* 外星人间距 + 2 * 外星人到墙距离
6365
scrren_rect = scrren.get_rect()
64-
alien_num = int(scrren_rect.width - 2 * alien_distance_wall) / alien_distance_alien + 1
66+
alien_num = int((scrren_rect.width - 2 * alien_distance_wall + alien_distance_alien) \
67+
/ (alien_distance_alien + alien_width))
6568
return alien_num
6669

6770
def cal_alien_num_line_default(self, scrren):
6871
"""计算一行可以放置多少外星人"""
6972
scrren_rect = scrren.get_rect()
70-
return int((scrren_rect.width - 2 * self.alien_min_distance_wall) / self.alien_min_distance_alien + 1)
73+
num = int((scrren_rect.width - 2 * self.alien_min_distance_wall + self.alien_width) \
74+
/ (self.alien_min_distance_alien + self.alien_width))
75+
return num
7176

72-
def set_alien_info_default(self, aliens, alien_num):
77+
def set_alien_info_default(self, aliens):
7378
"""设置外星人属性"""
7479
num = 1
7580
for alien in aliens:
7681

7782
rect = alien.get_rect()
7883
alien_width = alien.get_width()
79-
alien_height = alien.get_height()
84+
# alien_height = alien.get_height()
8085
rect.y = self.alien_min_distance_bottom
8186
rect.x = self.alien_min_distance_wall + (num - 1) * (alien_width + self.alien_min_distance_alien)
8287
alien.set_rect(rect)
8388
num += 1
84-
print num
85-
print alien.get_rect()
89+
8690
return True

ship.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ def __init__(self, scrren):
2121
self.__rect = self.__image.get_rect()
2222
self.__scrren_rect = scrren.get_rect()
2323

24-
2524
# 持续移动标志
2625
self.__moving_riht = False
2726
self.__moving_left = False

0 commit comments

Comments
 (0)