python学习——飞机大战之初期

在开始正式编写飞机大战游戏之前,对pygame所提供的模块进行学习,以下代码只是验证了一些功能,并不能进行飞机大战游戏。

在开始正式的编写代码之前一定一定要先调用pygame.init()方法,并相应的调用pygame.quit()方法,这里要养成好的习惯,把成对出现的代码一并写好,以免最后忘记写,而导致错误,然后在pygame.init()与pygame.quit()之间写游戏代码。

import pygame #导入pygame模块,pygame是专门设计用来设计游戏的python模块。
from plane_sprites import* #此模块继承了pygame中sprite类中Sprite方法,有了此模块后不需要每次都进行处理图像加载、绘制图像等代码
pygame.init()#加载pygame的模块
screen = pygame.display.set_mode((480,850))#利用set_mode方法创建游戏的主窗口,set_mode方法有三个缺省参数,第一个位元组,指定屏幕的大小,默认屏幕与窗口大小一致,第二个为标志位,默认为0,第三个为深度,默认也为0,注意set_mode方法有返回结果,返回一个Surface对象,需要变量记录此返回结果,此程序中由screen接收返回结果,后续的图像绘制都在此窗口上进行
background = pygame.image.load("./image/background.png")#调用load方法加载背景图像,load方法中传入背景图像所在位置,.表示当前目录
screen.blit(background,(0,0)) #screen调用blit方法,在刚刚创建的窗口中绘制背景图像,bilt方法需要传入两个参数第一个为背景图像,第二个为背景图像绘制的位置,此参数可以为元组,也可以为矩形对象,如果想要看到绘制的图像还需要调用display模块中的update()方法,此方法更新屏幕显示,所以最好一起写出来两个方法
hero = pygame.image.load("./image/hero.gif")#加载英雄图片 screen.blit(hero,(200,400))#在制定位置绘制英雄图片 pygame.display.update()#更新屏幕显示 ,可以在窗口上看到刚刚绘制英雄的图片,一定要记住无论绘制什么图像最后都要调用此方法,否则在游戏窗口中看不到所绘制的图像 clock = pygame.time.Clock()#创建时钟对象 hero_rect = pygame.Rect(200,400,100,124)#调用Rect()方法,Rect()方法用来描述矩形对象,接收4个参数分别是位置参数,x,y代表绘制图像的位置,以及矩形的宽高,用hero_rect变量来记录英雄图片的位置 enemy0 = GameSprite("./image/enemy0_down1.png")#GameSprite类的实例化,并传入相应参数,speed为默认值 enemy1 = GameSprite("./image/enemy0_down2.png",speed = 2) enemy_group = pygame.sprite.Group(enemy0,enemy1)#调用精灵组方法 while True:#游戏循环,游戏正式开始,产生相应的动画效果,(所谓动画效果就是静止图片快速移动,产生的视觉效果就是连续的,所以就需要调用一种方法使图像快速移动,快速更新)以上都是游戏的准备工作,下面就是可以是图片可以连续移动的代码   clock.tick(60)#游戏刷新帧率,tick()方法会根据上次被调用的时间,设置循环中的延时,tick()可以指定循环体内部的代码执行频率   hero_rect.y -= 1#使英雄图片向上移动   if hero_rect.y <= -124: #判断英雄图片是否移出屏幕,如果移出则将英雄图片重新放到背景图片底部     hero_rect.y = 800   screan.blit(background,(0,0)) #重新绘制背景图片,然后把每一张图片重新绘制到新的背景图片上,否则会出现重影现象   screan.blit(hero ,hero_rect)#在hero_rect上绘制英雄图像,hero_rect实际是记录英雄图片移动的每一帧  
enemy_group.update()
#调用精灵组中update方法,使精灵组中所有精灵调用update方法   enemy_group.draw(screen) #调用精灵组中的draw方法,使精灵组中所有精灵绘制到screen上   pygame.display.update() #更新屏幕显示 pygame.quit()#卸载所有pygame模块

猜你喜欢

转载自www.cnblogs.com/wangaige/p/9083079.html