From 33b78bcb485b7fffe1a40e34a9f41d9b7f312661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E8=8A=B3?= <3231711930@qq.com> Date: Thu, 17 Jun 2021 10:37:05 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=AD=90=E5=BC=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bullet.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 bullet.py diff --git a/bullet.py b/bullet.py new file mode 100644 index 0000000..5cc02b8 --- /dev/null +++ b/bullet.py @@ -0,0 +1,23 @@ +import pygame +from pygame.sprite import Sprite + + +class Bullet(Sprite): + """一个对飞船发射的子弹进行管理的类""" + + def __init__(self, ai_settings, screen, ship): + """在飞船所处的位置创建一个子弹对象""" + super(Bullet, self).__init__() + self.screen = screen + + # 在(0,0)处创建一个表示子弹的矩形,再设置正确的位置 + 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 \ No newline at end of file From f37d9f05a9251e3924aaf956e41cd869abe09f98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E8=8A=B3?= <3231711930@qq.com> Date: Fri, 18 Jun 2021 07:23:33 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=AD=90=E5=BC=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bullet.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bullet.py b/bullet.py index 5cc02b8..1302f47 100644 --- a/bullet.py +++ b/bullet.py @@ -20,4 +20,11 @@ class Bullet(Sprite): self.y = float(self.rect.y) self.color = ai_settings.bullet_color - self.speed_factor = ai_settings.bullet_speed_factor \ No newline at end of file + self.speed_factor = ai_settings.bullet_speed_factor + + def update(self): + """向上移动子弹""" + # 更新表示子弹位置的小数值 + self.y -= self.speed_factor + # 更新表示子弹的rect的位置 + self.rect.y = self.y \ No newline at end of file From 63a276dc8f7d3a964ed971077e21d301fc33b7d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E8=8A=B3?= <3231711930@qq.com> Date: Fri, 18 Jun 2021 07:26:37 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E5=AD=90=E5=BC=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bullet.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bullet.py b/bullet.py index 1302f47..195965d 100644 --- a/bullet.py +++ b/bullet.py @@ -27,4 +27,8 @@ class Bullet(Sprite): # 更新表示子弹位置的小数值 self.y -= self.speed_factor # 更新表示子弹的rect的位置 - self.rect.y = self.y \ No newline at end of file + self.rect.y = self.y + + def draw_bullet(self): + """在屏幕上绘制子弹""" + pygame.draw.rect(self.screen, self.color, self.rect) \ No newline at end of file From f73e7531cb5ff4aaaa945df815d1904d99dc9214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E8=8A=B3?= <3231711930@qq.com> Date: Fri, 18 Jun 2021 07:45:23 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E5=AD=90=E5=BC=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bullet.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/bullet.py b/bullet.py index 195965d..8c65fb7 100644 --- a/bullet.py +++ b/bullet.py @@ -31,4 +31,13 @@ class Bullet(Sprite): def draw_bullet(self): """在屏幕上绘制子弹""" - pygame.draw.rect(self.screen, self.color, self.rect) \ No newline at end of file + pygame.draw.rect(self.screen, self.color, self.rect) + + + class BossBullet(Sprite): + """Boss发射的子弹""" + + def __init__(self, ai_settings, screen, bossalien): + """在飞船所处的位置创建一个子弹对象""" + super(BossBullet, self).__init__() + self.screen = screen \ No newline at end of file From 7fe375a190317c953f8d8bba46dff746b78e4910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E8=8A=B3?= <3231711930@qq.com> Date: Fri, 18 Jun 2021 07:49:38 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E5=AD=90=E5=BC=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bullet.py | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/bullet.py b/bullet.py index 8c65fb7..f881020 100644 --- a/bullet.py +++ b/bullet.py @@ -22,22 +22,30 @@ class Bullet(Sprite): self.color = ai_settings.bullet_color self.speed_factor = ai_settings.bullet_speed_factor - def update(self): - """向上移动子弹""" - # 更新表示子弹位置的小数值 - self.y -= self.speed_factor - # 更新表示子弹的rect的位置 - self.rect.y = self.y + def update(self): + """向上移动子弹""" + # 更新表示子弹位置的小数值 + self.y -= self.speed_factor + # 更新表示子弹的rect的位置 + self.rect.y = self.y - def draw_bullet(self): - """在屏幕上绘制子弹""" - pygame.draw.rect(self.screen, self.color, self.rect) + def draw_bullet(self): + """在屏幕上绘制子弹""" + pygame.draw.rect(self.screen, self.color, self.rect) - class BossBullet(Sprite): - """Boss发射的子弹""" +class BossBullet(Sprite): + """Boss发射的子弹""" - def __init__(self, ai_settings, screen, bossalien): - """在飞船所处的位置创建一个子弹对象""" - super(BossBullet, self).__init__() - self.screen = screen \ No newline at end of file + def __init__(self, ai_settings, screen, bossalien): + """在飞船所处的位置创建一个子弹对象""" + super(BossBullet, self).__init__() + self.screen = screen + + # 在boss底部中央处创建一个表示子弹的矩形,再设置正确的位置 + self.rect = pygame.Rect(0, 0, ai_settings.bossbullet_width, + ai_settings.bossbullet_height) + self.rect.x = bossalien.x + self.rect.y = bossalien.rect.bottom + self.width = ai_settings.bossbullet_width + self.height = ai_settings.bossbullet_height \ No newline at end of file From 188be1a67832a9c2d00e3bc3b9e7db7dc2fe3a36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E8=8A=B3?= <3231711930@qq.com> Date: Fri, 18 Jun 2021 07:55:48 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E5=AD=90=E5=BC=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bullet.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/bullet.py b/bullet.py index f881020..0da35b8 100644 --- a/bullet.py +++ b/bullet.py @@ -48,4 +48,14 @@ class BossBullet(Sprite): self.rect.x = bossalien.x self.rect.y = bossalien.rect.bottom self.width = ai_settings.bossbullet_width + self.height = ai_settings.bossbullet_height + + # 存储用小数表示的子弹位置 + self.y = float(self.rect.y) + + self.y = bossalien.rect.bottom + self.x = bossalien.x + + self.color = ai_settings.bossbullet_color + self.speed_factor = ai_settings.bossbullet_speed_factor self.height = ai_settings.bossbullet_height \ No newline at end of file From 028fe0508243c42661111c1acc0dc69c0a5a3fbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E8=8A=B3?= <3231711930@qq.com> Date: Fri, 18 Jun 2021 07:57:23 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E5=AD=90=E5=BC=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bullet.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bullet.py b/bullet.py index 0da35b8..d5503a5 100644 --- a/bullet.py +++ b/bullet.py @@ -58,4 +58,11 @@ class BossBullet(Sprite): self.color = ai_settings.bossbullet_color self.speed_factor = ai_settings.bossbullet_speed_factor - self.height = ai_settings.bossbullet_height \ No newline at end of file + self.height = ai_settings.bossbullet_height + + def update(self): + """向下移动子弹""" + # 更新表示子弹位置的小数值 + self.y += self.speed_factor + # 更新表示子弹的rect的位置 + self.rect.y = self.y From 45a2fe5c246c2acf2067855eaaa8d30f26155980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E8=8A=B3?= <3231711930@qq.com> Date: Fri, 18 Jun 2021 08:09:31 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E5=AD=90=E5=BC=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bullet.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bullet.py b/bullet.py index d5503a5..61ed5ff 100644 --- a/bullet.py +++ b/bullet.py @@ -58,7 +58,6 @@ class BossBullet(Sprite): self.color = ai_settings.bossbullet_color self.speed_factor = ai_settings.bossbullet_speed_factor - self.height = ai_settings.bossbullet_height def update(self): """向下移动子弹""" @@ -66,3 +65,11 @@ class BossBullet(Sprite): self.y += self.speed_factor # 更新表示子弹的rect的位置 self.rect.y = self.y + + def reset_position(self, bossalien): + """(当子弹飞出屏幕底部或者击中飞船时)回到开始的地方""" + self.y = bossalien.rect.bottom + self.x = bossalien.x + # 更新rect位置 + self.rect.y = self.y + self.rect.x = self.x From cec38b64f2c56bd805145c7973924ff410b9c09c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E8=8A=B3?= <3231711930@qq.com> Date: Fri, 18 Jun 2021 08:10:23 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E5=AD=90=E5=BC=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bullet.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bullet.py b/bullet.py index 61ed5ff..cb10ee3 100644 --- a/bullet.py +++ b/bullet.py @@ -73,3 +73,7 @@ class BossBullet(Sprite): # 更新rect位置 self.rect.y = self.y self.rect.x = self.x + + def draw_bullet(self): + """在屏幕上绘制子弹""" + pygame.draw.rect(self.screen, self.color, ((self.x, self.y), (self.width, self.height)))