pygame常用知识点

主框架

import sys
import pygame

pygame.init()
screen = pygame.display.set_mode((400, 300))  #元组赋予窗口大小
#screen具有了pygame.display.set_mode所有的属性方法
pygame.display.set_caption('Gluttonous snake')

while True:
    """主程序循环"""
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    pygame.display.update()

1.image.load

代表将图片加载到内存中。一般将图片打包在同一文件中,该文件夹与py文件放置在同一文件夹下。

self.image = pygame.image.load('images/ship.bmp')

2.rect

rect根据加载的surface图片生成矩形框,所有运动的操作都针对矩形框

rect的属性主要包括left、 top、 right 、bottom 和center中的centerxcentery以及尺寸size、width、height

Rect(left,top,width,height),可理解为构造左上角点坐标为(left、top)宽为width,长为height
pygame常用知识点_第1张图片

"""在(0,0)处创建子弹矩形,并设置位置"""
        self.rect = pygame.Rect(0, 0, ai_settings.bullet_width,
                                ai_settings.bullet_height)

A.rect = B.get_rect(),其中B为加载到内存中的surface图片。该命令使得A获得图片所有的rect属性。

#加载外星人图像,并设置其rect属性
        self.image = pygame.image.load('images/alien.bmp')
        self.rect = self.image.get_rect()

*题外话:例子全部是创建类的情况。A.b的命名方式更易读懂,其中的b代表属性。当A.b.c时是调用属性b后的c属性如,下面代码的等号右。命名时也应该遵循这样的要求,如再下一行代码

self.rect.x = self.rect.width
self.rect.y = self.rect.height

self.screen_rect = screen.get_rect()
#当
self.screen.rect = screen.get_rect()  #报错screen无rect属性

☆常用1:矩形在窗口中

self.rect.left > 0 
and self.rect.right < screen_rect.width 
and self.rect.top >0
and self.rect.bottom < screen_rect.height

☆常用2:矩形在窗口中居中

self.rect.centerx = screen_rect.centerx    #横轴居中

3.blit

跟随矩形框位置绘制图片,可看出属于screen下可调用的方法

窗口最终只显示主图层,rect对应主图层部分区域,而surface不在主图层上显示,通过blit

"""绘制飞船位置"""
        self.screen.blit(self.image, self.rect)

4.draw

图片加载生成后可用blit绘制图片,用Rect生成的矩形绘制在屏幕上,用draw

pygame.draw.rect(self.screen, self.color, self.rect)
pygame.draw.circle(self.screen, self.color, self.pos, self.radius)  #后两个为圆心和半径

#除屏幕和颜色外参数外,其他为图形参数

参数有screen,填充色,矩形框

5.screen.fill

以颜色重绘填充屏幕,因为矩形移动后留下是白色

6.display.update和display.filp函数

面向用户的刷新显示,其中update只刷新变化区域

7.time.Clock

A = pygame.time.Clock()  #创建对象
A.tick(fps)  #fps对应每秒钟出现的静态图像,多则流畅

*针对以上的流程图总结

在这里插入图片描述

8.move

rect.move(x, y) ,其中x,y为上一次相对距离

其他的rect.方法
pygame常用知识点_第2张图片

9.外设交互机制

pygame常用知识点_第3张图片
pygame常用知识点_第4张图片

for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
       elif event.type == pygame.KEYDOWN:  #keydown返回常量名称、修饰符等
       #修饰符为ctrl shift等键
       		if event.key == pygame.K_RIGHT:  #按压向右键,K_RIGHT常量名称
       				speed[0] = speed[0] + 1
       elif event.type == pygame.KEYUP:
       		if event.key == pygame.K_RIGHT:  #松开向右键
       				speed[0] = speed[0] - 1

pygame常用知识点_第5张图片
pygame常用知识点_第6张图片

pygame常用知识点_第7张图片

10.屏幕设置pygame.display的函数

#1
pygame.display.set_mode(size, type)  
#设置尺寸和相关模式,
#其中type包括pygame.RESIZEABLE:大小可调,pygame.NOFRAME:无边框,#pygame.FULLSCREEN:全屏幕显示,注意修改后的逻辑

#配合pygame.RESIZEABLE:大小可调的操作逻辑:
elif event.type == pygame.VIDEORESIZE:
      size = (event.size[0], event.size[1])
      screen = pygame.display.set_mode(size, pygame.RESIZABLE)

#2
pygame.display.info() #获取信息,如current_w,current_h
#vInfo = pygame.display.info(),感知当前屏幕信息
#screen = pygame.display.set_mode(vInfo.current_w, vInfo.current_h)  根据当前屏幕分辨率全屏显示

#3
pygame.display.set_caption() #标题
pygame.display.set_icon() #设置图标,以surface图像表示
pygame.display.get_caption() #返回当前标题名

#4
pygame.display.get_active()   #非最小化是2返回True

#屏幕刷新函数

11.文字显示

需要先import pygame.freetype
字体为rect
注:不能出现在fill()前,否则会被覆盖。

字体存放在C:\Windows\Fonts 字体格式*.ttf,*.ttc

pygame常用知识点_第8张图片
pygame常用知识点_第9张图片
pygame常用知识点_第10张图片
pygame常用知识点_第11张图片

A = pygame.freetype.Font('C://windows//Fonts//msyh.ttc', 36)
A1 = A.render_to(screen,(200, 160), '世界和平',
				 (168, 168, 168),  (0, 0, 0), 5)      #方法1,此处size = 5代替36
A2 = A.render('世界和平',  (168, 168, 168),  5) #方法2

#让文字居中的方法(center与屏幕center对齐没用)
word_load = pygame.freetype.Font('C://windows//Fonts//simsun.ttc', ai_settings.word_size)
    word = word_load.render_to(screen, (0, 0), ai_settings.word, ai_settings.word_color, ai_settings.bg_color)
    screen.fill(ai_settings.bg_color)
    screen_rect = screen.get_rect()
    word = word_load.render_to(screen, (ai_settings.screen_width/2 - word.width / 2, ai_settings.screen_height/2), ai_settings.word, ai_settings.word_color

主要参考:
嵩天教授的Python游戏开发教程(pygame)
Python编程:从入门到实践

欢迎讨论指正

你可能感兴趣的:(python)