项目《外星人入侵》一些心得和体会
目前,我跟着书上的内容,做了外星人入侵的火箭部分。
然后,我开始做练习题,我将我的项目命名为:我的设计游戏
然后我创建了我的主程序文件: my_shoot_game.py
然后创建了文件: settings.py
文件settings.py包含Settings类,这个类只包含方法__init__(),它初始化控制游戏外观和飞船速度、子弹速度
然后创建了文件:ufo.py
文件ufo.py包含Ufo类,这个类包含了方法__init__() 、管理飞船位置的方法,update()以及在屏幕上绘制飞船的方法blitme()
表示飞船的图像存储在文件夹images下的文件ufo.bmp中。
随着功能越来越多,代码需要重构,于是创建了文件game_function.py
其中包含了一系列函数,游戏的大部分工作都是它们完成的。函数check_events() 检测相关事件、如按键和松开,并使用辅助函数check_keydown_events()和check_keyup_events()来处理这些事件
就目前而言,这些函数管理飞船的移动。模块game_functions还包含函数update_screen(),它用于在每次执行主循环时都重绘屏幕。
然后创建子弹文件:bullets.py
这里之后,就用到了pygame.sprite中导入的Sprite类。通过精灵,将游戏中相关的元素编组。到这里,我就觉得有点费脑子了。
因为书中没有讲,为什么要这么编组,只说了编组的好处,就是可以同时操作编组中的所有元素。
难点:
- 不是很了解pygame中的Sprite和Group
- 子弹我选择了圆形。
# 在(0,0)处创建一个表示子弹的圆,再设置正确的位置 self.circle = pygame.Rect(0, 0, settings.bullet_radius, settings.bullet_width) self.circle.centerx = ufo.rect.right self.circle.centery = ufo.rect.centery def draw_bullet(self): """ 在屏幕上绘制子弹""" pygame.draw.circle(self.screen, self.color, (self.circle.centerx, self.circle.centery), self.radius, self.width)
设置屏幕背景图片的代码:此时settings.screen_background = pygame.image.load('image/sky.jpg')
-
screen.blit(settings.screen_background, (0, 0))