赞
踩
1.开始游戏项目
(1)创建pygame窗口以及相应用户输入
alien_invasion.py:
方法run_game():
初始化游戏并创建一个屏幕对象(pygame.init()、screen、pygame.display.set_caption())
开始游戏主循环(while True):
监视键盘和鼠标事件(event)
让绘制的屏幕可见(pygame.display.flip())
调用方法run_game()
(2)设置背景色
每次循环时都重绘屏幕(bgcolor、screen.fill())
(3)创建设置类Settings
settings.py:
屏幕设置(self.screen_width、self.screen_height、self.bg_color)
为创建Settings实例并使用它来访问设置,对alien_invasion.py进行修改:
初始化pygame,设置和屏幕对象(添加ai_settings,screen)
2.添加飞船图像
游戏中几乎可以使用任何类型的图像文件,但使用位图(.bmp)文件最为简单,因为pygame默认加载位图。
选择图像时,尽可能选择背景透明的图像,这样可使用图像编辑器将其背景设置成任何颜色。
(1)创建Ship类
ship.py:
方法 init():
初始化飞船并设置其初始位置(self.screen)
加载飞船图像并获取其外接矩形(self.image、self.rect、self.screen)
将每艘新飞船放在屏幕底部中央(self.rect.centerx,self.rect.bottom)
方法blitme():
在指定位置绘制飞船(self.screen.blit())
(2)在屏幕上绘制飞船
创建一艘飞船
调用方法ship.blitme()
这时运行,将看到飞船位于空游戏屏幕底部中央
3.重构:模块game_function
(1)函数check_events()
将相应按键和鼠标事件移动至此
在aliens_invasion.py中调用
(2)函数update_screen()
将 更新模块的代码 移动至此
主模块中调用update_screen()
4.驾驶飞船
每当用户按键时,都在pygam中注册一个KEYDOWN事件,事件都是通过方法pygame.event.get()获取的
(1)响应按键
game_fuctions.py:
函数check_event()中,在时间循环中添加elif模块,以便pygame检测到KEYDOWN事件
alien_invasion.py中调用check_events(ship)
(2)允许不断移动
ship.py:
设置移动标志self.moving_right
添加update()方法:
根据移动位置调整飞船位置
game_fuctions.py:
玩家按下右箭头时将moving_right设置为True,并在松开时将其设置为False
添加elif模块,让pygame检测到KEYUP事件
alien_invasion.py的while循环调用ship.update()方法
此时运行alien_invasion.py并按住右箭头键,飞船将不断右移,直至松开为止
(3)左右移动
ship.py:
在init()中添加向左移动标志self.moving_left
添加if模块,根据移动标志调整飞船位置
game_fuctions.py:
check_events(ship)中设置响应向左按键和鼠标的事件
此时运行alien_invasion.py,将能够不断地左右移动飞船,如果同时按下左右箭头,飞船将纹丝不动
(4)调整飞船速度
settings.py:
添加飞船的速度属性ship_speed_factor
ship.py:
init()中初始化一个ai_settings的属性
在飞船的属性center中存储小数值,
更新飞船的center值,而不是rect。
根据self.center更新rect对象
alien_invasion.py:
创建Ship实例时,需要传入实参ai_settings、screen
(5)限制飞船的活动范围
ship.py:
对移动标志进行if判断时添加self.rect.right和self.rect.left,即要保证外接矩形的右边缘的x坐标小于屏幕右边缘,左边缘的x坐标要保证大于0
(6)重构check_events()
将check_events()的代码放在两个函数中,一个处理KEYDOWN事件,一个处理KEYUP事件
5.射击
(1)添加子弹设置
settings.py:
init()方法存储新类Bullet所需的值,包括bullet_width,bullet_height,bullet_color,bullet_speed_factor
(2)创建Bullet类
它是一个对飞船发射的子弹进行管理的类,继承了我们从模块pygame.sprite中导入的sprite类,通过使用精灵将游戏中相关的元素编组,进而同时操作编组中的所有元素<
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。