Python游戏开发笔记之pygame库(一)

文章目录

  • 前言
  • pygame安装
  • 开发框架
  • 屏幕窗口-pygame.display
  • 位图操作-pygame.transform
  • 事件响应-pygame.event
    • 事件类型-event.type
    • 具体事件-event.key
  • 绘制图形-pygame.draw
  • 绘制文字-pygame.freetype
  • 色彩机制-pygame.Color
  • 二维坐标-pygame.math.Vector2
  • 添加音乐-pypame.
  • 总结


前言

记录pygame的基本框架和事件响应。

pygame安装

pip install pygame
#python -m pygame.example.aliens #运行自带游戏

开发框架

import pygame,sys
#初始化
pygame.init() 
speed=[1,1]
ball=pygame.image.load("ball.gif") #surface对象
ballrect=ball.get_rect() #rect对象
#设置屏幕
width,height=600,400
screen=pygame.display.set_mode((width,height))
pygame.display.set_caption("标题")
clock=pygame.time.Clock()
#主体部分
while True:
#事件响应
	for event in pygame.event.get():
		if event.type==pygame.QUIT:
			sys.exit()
		if event.type==pygame.KEYDOWN:
			if event.key==pygame.K_UP:
				speed[1]+=1
	ballrect=ballrect.move(speed[0],speed[1]) #移动
	#刷新屏幕
	clock.tick(60) #控制刷新频率
	screen.fill("black")
	screen.blit(ball,ballrect)
	pygame.display.update()

屏幕窗口-pygame.display

  • .set_mode((width,height),flags=0) #设置窗口大小
    flags:pygame.RESIZABLE 可调,pygame.NOFRAME 无边界,pygame.FULLSCREEN 全屏。
  • .Info() #获得窗口信息,.current_w,.current_h 获得宽度和高度。
  • .get_active() #最小化时False
  • .set_icon(surface) #设置图标
  • .set_caption(“text”) #设置标题
  • .flip() #重绘整个窗口
  • .update() #重绘变化区域

位图操作-pygame.transform

  • 加载:surface=pygame.image.load(<路径>).convert_alpha() #加载alpha通道
  • 缩放:surface=pygame.transform.scale(surface,size) #平滑缩放 smoothscale
  • 提取:surface=surface.subsurface([left,top,width,height])
  • 翻转:surface=pygame.transform.flip(surface,xbool,ybool)
  • 旋转:surface=pygame.transform.rotate(surface,angle)
  • 生成rect:rect=surface.get_rect()
  • 绘制:screen.blit(surface,rect/(x,y))
  • 移动:rect=rect.move(x,y)

事件响应-pygame.event

  • .get() #获取事件列表
  • .poll() #获取单一事件
  • .clear() #清空事件列表
  • .set_blocked(type/typelist) #禁止事件被保存
  • .set_allowed(type/typelist) #只允许事件被保存
  • .post() #产生自定义事件 (type,dict)

事件类型-event.type

  • pygame.QUIT #退出
  • pygame.ACTIVEEVENT #窗体变化
  • pygame.KEYDOWN #键盘按下
  • pygame.KEYUP #键盘抬起
  • pygame.MOUSEMOTION #鼠标移动
  • pygame.MOUSEBUTTONDOWN #鼠标按下
  • pygame.MOUSEBUTTONUP #鼠标抬起

具体事件-event.key

键盘:

  • pygame.unicode #编码
  • pygame.K_小写字母/ESCAPE/UP/DOWN/… #名称
  • pygame.mode #或运算

鼠标:

  • pygame.pos #坐标
  • pygame.button #左/中/右 1/2/3
  • pygame.rel #相对运动(在pygame.MOUSEMOTION下)

绘制图形-pygame.draw

  • rect(surface,color,rect,width=0<填充>) #矩形
  • polygon(surface,color,pointlist<顶点列表>,width=0) #多边形
  • circle(surface,color,pos,radius,width=0) #圆
  • ellipse(surface,color,rect,width=0) #椭圆
  • arc(surface,color,rect,start_angle,stop_angle,width=0) #椭圆弧
  • line(surface,color,start_pos,end_pos,width=0<填充>) #直线
  • lines(surface,color,close<封闭>,pointlist,width=0<填充>) #连续线

绘制文字-pygame.freetype

字体文件 C:/windows/Fonts   .ttf,.ttc
import pygame.freetype
Font=pygame.freetype.Font(<字体>,<字号>)
Font.render_to(surface,dest<位置>,text,fgcolor=None<字体颜色>,bgcolor=None<背景颜色>,rotation=0<角度>,size=0<字号>)

色彩机制-pygame.Color

  • pygame.Color(name)
  • pygame.Color(r,g,b,) #浅蓝(193,210,240)
  • pygame.Color(rgbvalue)
  • .normalize #归一到(0,1)

二维坐标-pygame.math.Vector2

from pygame import Vector2
vect=pygame.math.Vector2
pos0=vect(0,0)
pos1=vect(1,1) 
pos2=vect(2,2) #点
dist01=pos1-pos0
dist12=pos2-pos1 #线
angle01=pos0.angle_to(dist01) >>>45
angle12=pos1.angle_to(dist01) >>>0 #相对于原点的角度

添加音乐-pypame.

音效文件.使用sound类
音乐文件.使用music类

pygame.mixer.init() #初始化混音器
sound=pygame.mixer.Sound(<路径>)
pygame.mixer.music.load(<文件>)

音效(sound):

  • .play() #播放
  • .stop() #停止
  • .fadeout() #淡出
  • .set_volume() #设置音量
  • .get_volumn() #获得音量
  • .get_num_channels() #播放次数
  • .get_length() #获取长度

音乐(pygame.mixer.music.):

  • load()
  • play()
  • rewind()
  • stop()
  • pause()
  • unpause()
  • fadeout()
  • set_volume()
  • get_volume()
  • get_busy()
  • set_pos()
  • get_pos()
  • queue()

总结

pygame所支持的功能丰富,游戏的代码量较大,需要创建多个py文件,不宜使用IDLE编写,使用pycharm编写较为方便。pygame通过不断更新图层来实现游戏效果,控制好绘制的先后顺序至关重要。游戏逻辑的编写对基础语法的要求较高,代码量往往较大,适时备注很重要。

你可能感兴趣的:(Python游戏开发,pygame,python)