python 外星人小游戏知识

1.模块:

sys:用于控制结束sys.exit()

pygame:用于创建屏幕和图标,响应键盘和鼠标,还有sprite精灵组和group字典

from pygame.constants import MOUSEBUTTONDOWN

time:用sleep来暂停死亡画面

from time import sleep

pathlib:用于创建储存最高分的文件

from pathlib import Path

2.类:alieninvasion,ship,alien,bullet,button,stats,settings,scoreboard这七个类

在我看来,在python中类十分重要,也就相当于模块,只不过上面的是别人写好的模块,而这些是你要完成项目自己要写的。每个类分门别类储存了整个项目的元素,它们是在为主项目alien_invasion提供好各种数据。除了settings的类属性中没有ai_game,其他都有,这是因为在其它类中都需要用到主项目中的一些属性,而ai_game就相当于是一个主项目的实例,让其他附属类也可以引用主项目中的各种属性,比如ship,bullet,button,中的self.screen=ai_game.screen就是要让这些类的屏幕为主屏幕,让这些小元素这个屏幕在上面创建。下面这些是主类alien invasion中的属性,比如在Ship中,它的实参是self,在主类中他表示alieninvasion这个类,就相当于Ship(alieninvasion)而它在Ship中的形参是ai_game这就让ai_game和主类alieninvasion有了联系,能够在各自的类中调用alieninvasion中的属性。

self.stats=GameStats(self)
self.sb=Scoreboard(self)
self.ship=Ship(self)
class Ship(Sprite):
    def __init__(self,ai_game):
class Button:
    def __init__(self,ai_game,msg):
class Bullet(Sprite):
    """管理飞船所发射的子弹的类"""
    def __init__(self,ai_game):

3.pygame的具体应用

pygame的初始化

pygame.init()

创建窗口参数是:长和高
pygame.display.set_mode((self.settings.screen_width,self.settings.screen_height))

给窗口一名称参数:名字
pygame.display.set_caption('Alien Invasion')

事件监听可以响应键盘和鼠标的行为
for event in pygame.event.get()

窗口的叉叉 
 event.type == pygame.QUIT:           
  event.type==MOUSEBUTTONDOWN:

返回一个元组为鼠标的x和y坐标
   mouse_pos=pygame.mouse.get_pos()

检查鼠标位置是否在rect位置
button_clicked=self.play_button.rect.collidepoint(mouse_pos)
按下或松开键盘,key是哪一个K_。。。的格式
event.type==pygame.KEYDOWN:
event.type==pygame.KEYUP:
event.key == pygame.K_RIGHT
event.key == pygame.K_q:
隐藏或显示鼠标
pygame.mouse.set_visible(False)
pygame.mouse.set_visible(True)
精灵组之间的碰撞参数:两个精灵组后面两个ture or false表示碰撞完后是否消失
pygame.sprite.groupcollide(self.bullets, self.aliens, True, True) 
单个精灵与精灵组的任意一个碰撞检测参数:单个精灵,精灵组
pygame.sprite.spritecollideany(self.ship,self.aliens):
刷新屏幕
pygame.display.flip()
加载图片参数:图片文件,必须是bmp格式
self.image=pygame.image.load('images/ship.bmp')
获取图片rect,加载了图片就可以直接get_rect
self.rect=self.image.get_rect()
在屏幕之上创建图片参数:image,rect
self.screen.blit(self.image,self.rect)
设置字号参数:字体名称,字体大小
self.font = pygame.font.SysFont(None,50)
没加载图片,可以创建一个图形的rect,参数:左上角的xandy,和矩形长宽
self.rect=pygame.Rect(0,0,self.width,self.height)
渲染文本为图片参数:文本内容,抗锯齿,文本颜色,背景颜色
self.msg_image=self.font.render(msg,True,self.text_color,self.button_color)
用于在屏幕的指定矩形区域内填充颜色参数:颜色,位置rect
self.screen.fill(self.button_color,self.rect)
绘制矩形参数:surface,颜色,rect,width,圆角半径:border_radius
pygame.draw.rect(self.screen,self.color,self.rect)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐