[ 准备条件: ubuntu 14桌面版, 系统自带python2.7 和python3.5 ]
第一步:安装pygame模块
A, 为python2.7安装pygame: sudo apt-get install python-pygame
B, 为python3.5安装pygame:
1, 先安装依赖库 ==>
sudo apt-get install python3-dev mercurial libsdl-image1.2-dev libsdl2-dev libsdl-ttf2.0-dev libfreetype6-dev
[ps: 安装增强辅助功能(声音,统计图等)可选===》sudo apt-get install libsdl-mixer1.2-dev
libportmidi-dev libswscale-dev libsmpeg-dev libavformat-dev libavcodec-dev python-numpy ]
2, 手动下载pygame包然后编译安装,使用hg 命令下载文件:(下载到某目录,比如主目录)
cd
hg clone https://bitbucket.org/pygame/pygame
cd pygame
python3 setup.py build #编译
sudo python3 setup.py install #安装
验证是否安装成功:
python3
>>>import pygame
不报错就说明 ok !
[ps: 若系统又安装了其他版的python3.x, 则需要cd pygame里面,
把编译和安装的用的python版本换成相应的python3.x ]
第二步:使用pygame模块,创建小游戏
1,绘制窗口--不能关闭版 (创建文件:screen.py)
def start_game(): pygame.init()#创建屏幕 pygame.display.set_caption("标题") screen=pygame.display.set_mode((200,100))#设置窗口宽高 screen.fill((255,0,0))#窗口红色背景 while True: pygame.display.flip()#出现一次 #调用静态方法 start_game()
绘制窗口---可以关闭版(修改文件:screen.py)
import sys import pygame def run_game(): pygame.init()#创建屏幕 screen=pygame.display.set_mode((300,100)) screen.fill( (0,255,0) )#背景色:绿色 pygame.display.set_caption("标题") while True: for event in pygame.event.get(): if event.type==pygame.QUIT: sys.exit()#关闭窗口 pygame.display.flip()#屏幕显示一次 run_game()#调用方法2,在窗口上画一个飞船(ship.py , screen.py )
ship.py 文件
import pygame class Ship(): def __init__(self,screen): self.screen=screen #加载飞船图片,获取外接矩形 self.image=pygame.image.load( "/home/u16/workspace/aliens_fight/aliens/images/my.jpg") self.rect=self.image.get_rect() self.screen_rect=screen.get_rect() #将飞船放在底部中间 self.rect.centerx=self.screen_rect.centerx self.rect.bottom=self.screen_rect.bottom def blitPicture(self):#画图 self.screen.blit(self.image,self.rect)
screen.py 文件
import pygame import sys from ship import Ship def start_game(): pygame.init() #创建屏幕 pygame.display.set_caption("标题") screen=pygame.display.set_mode((300,200))#创建窗口对象:宽高大小 screen.fill((255,0,0))#红色背景 ship=Ship(screen)#创建飞船----- while True: for event in pygame.event.get(): if event.type==pygame.QUIT: sys.exit() pygame.display.flip()#屏幕显示一次 ship.blitPicture()#画飞船 #调用静态方法 start_game()
3,使得飞船能左右移动(不超出窗口边缘: 键盘监听左右键,控制坐标范围 )
改进ship.py文件, 加入move()方法: 控制飞机图片的移动
import pygame class Ship(): def __init__(self,screen,ai_settings): self.screen=screen self.ai_settings=ai_settings #加载飞船图片,获取外接矩形 self.image=pygame.image.load( "/home/u16/workspace/aliens_fight/aliens/images/my.jpg") self.rect=self.image.get_rect() self.screen_rect=screen.get_rect() #将飞船放在底部中间 self.rect.centerx=self.screen_rect.centerx self.rect.bottom=self.screen_rect.bottom '''控制飞船持续左右移动''' self.move_right=False; self.move_left=False; self.location=float(self.rect.centerx) '''控制飞船范围: and 移动超界,不动''' def move(self): if self.move_right and self.rect.right<self.screen_rect.right: #self.rect.centerx +=1 '''速度调整, 小数点''' self.location +=self.ai_settings.speed elif self.move_left and self.rect.left>0: #self.rect.centerx -=1 self.location -=self.ai_settings.speed #接受移动结果 self.rect.centerx=self.location def blitPicture(self):#画图 self.screen.blit(self.image,self.rect)
分离出配置文件为: settings.py
class Settings(): #保存设置的数据 def __init__(self): self.screen_width=800 self.screen_height=500 self.bg_color=(0,255,255) '''设置飞船速度''' self.speed=1.5
分离出事件监听的代码为: game_functions.py
import sys import pygame #点击退出 def check_events(ship): for e in pygame.event.get(): if e.type==pygame.QUIT: sys.exit() '''飞船可持续移动---左右移''' elif e.type==pygame.KEYDOWN: check_key_down(e,ship) elif e.type==pygame.KEYUP: check_key_up(e,ship) #事件对应的---触发,响应方法 def check_key_down(e,ship): if e.key==pygame.K_RIGHT:#右移 ship.move_right=True elif e.key==pygame.K_LEFT:#左移 ship.move_left=True def check_key_up(e,ship): if e.key==pygame.K_RIGHT: ship.move_right=False elif e.key==pygame.K_LEFT: ship.move_left=False #更新窗口 def update_screen(ai_settings,screen,ship): screen.fill(ai_settings.bg_color)#背景色 ship.blitPicture()#画飞船 #使得绘图可见 pygame.display.flip()
修改screen.py 文件
import pygame from settings import Settings from ship import Ship import game_functions as gf #封装 监听代码到game_functions.py文件 def run_game(): #创建屏幕 pygame.init() #创建Settings对象 ai_settings =Settings() screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height)) pygame.display.set_caption("Alien Invasion") #创建飞船----- ship=Ship(screen,ai_settings) #设置飞船速度''' #游戏的主循环 while True: gf.check_events(ship)#监听按键 ship.move()#改进ship 类, 使得可按某键,持续移动 gf.update_screen(ai_settings,screen,ship)#更新屏幕 run_game()#调用方法运行screen.py 文件, 即可看到一个有飞机图片的窗口,可以控制飞机左右移动