第一章:pygame的基础知识
(一)GUI vs CLI
CLI:command line interface
(二)
import pygame,sys
from pygame.locals import *
pygame.init()
DISPLAYSURF=pygame.display.set_mode((400,400))
pygame.display.set_caption('goldstine')
while True:#main game loop
for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
函数和方法(方法是要附加在一个对象上面),函数调用与方法调用
构造函数的函数名是大写字母开始的,函数名是小写字母开始的,模块名调用也属于函数调用。
(3)pygame.Color对象
你需要知道如何表示一种颜色,因为pygame的绘制函数需要一种方式来知道你想要使用何种颜色。
RGB
RGB+alpha
pygame.Color对象,可以调用pygame.Color构造函数,并且传入3个整数或4个整数来创建Color兑现。
可以将这个Color对象存在变量中
import pygame pygame.Color(255,0,0) myColor=pygame.Color(255,0,0,128) myColor==(255,0,0,128)
(4)Rect对象
pygame有两种方式来表示矩形区域,
4个整数的元组(左上角的x坐标,左上角的Y坐标,矩形的宽度,矩形的高度)
创建一个pygame.Rect对象
import pygame spamRect=pygame.Rect(10,20,200,300) spamRect==(10,20,200,300)
spamRect.right
#也可以重新设置
spamRect.right=350
spamRect.left
pygame.Rect对象的基本属性表:
百度。。。。
(5)基本的绘制函数,在surface上绘制rect,圆,椭圆,线条,单个像素,
也称为绘制图元(drawing primitives)
import pygame,sys
from pygame.locals import *
pygame.init()
DISPLAYSURFACE=pygame.display.set_mode((500,400),0,32)
pygame.display.set_caption('goldstine')
BLACK=(0,0,0)
WHITE=(255,255,255)
RED=(255,0,0)
GREEN=(0,255,0)
BLUE=(0,0,255)
DISPLAYSURFACE.fill(WHITE)
pygame.draw.polygon(DISPLAYSURFACE,GREEN,((146,0),(291,106),(236,277),(56,277),(0,106)))
pygame.draw.line(DISPLAYSURFACE,BLUE,(60,60),(120,60),4)
pygame.draw.line(DISPLAYSURFACE,BLUE,(120,60),(60,120))
pygame.draw.line(DISPLAYSURFACE,BLUE,(60,120),(120,120),4)
pygame.draw.circle(DISPLAYSURFACE,BLUE,(300,50),20,0)
pygame.draw.ellipse(DISPLAYSURFACE,RED,(300,250,40,80),1)
pygame.draw.rect(DISPLAYSURFACE,RED,(200,150,100,50))
pixObj=pygame.PixelArray(DISPLAYSURFACE)
pixObj[480][380]=BLACK
pixObj[482][382]=BLACK
pixObj[484][384]=BLACK
pixObj[486][386]=BLACK
pixObj[488][388]=BLACK
del pixObj
while True:
for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
(6)帧速率和pygame.time.Clock
(7)pygame.image.load()和blit()位图复制函数
pygame.image.load()函数调用将返回一个surface对象,图像已经绘制在其上。这个surface对象将会是和显示surface对象上。位图绘制就是将一个surface的内容绘制到邻一个surface上
不能复制一个锁定的surface对象。
(8)字体
(9)抗锯齿
抗锯齿(anti-aliasing)是一种图形技术,通过给文本和图形的边缘添加一些模糊效果,使其看上去不那么块状化,带有抗锯齿效果的绘制需要更多时间计算,因此,尽管看上去更好,但是程序可能会运行的缓慢。
(10)播放声音
播放声音和播放背景声音
import pygame,sys
from pygame.locals import *
pygame.init()
#设置帧率
FPS=30
fpsClock=pygame.time.Clock()
DISPLAYSURF=pygame.display.set_mode((400,400))
pygame.display.set_caption('goldstine')
#加载图片
WHITE=(255,255,255)
GREEN=(0,255,0)
BLUE=(0,0,255)
fontObj=pygame.font.Font('freesansbold.ttf',32)
textSurfaceObj=fontObj.render('Hello World!',True,GREEN,BLUE)
textRectObj=textSurfaceObj.get_rect()
textRectObj.center=(200,150)
catImg=pygame.image.load('./imgs/cat.png')
catX=10
catY=10
direction='right'
pygame.mixer.music.load('./imgs/beep1.ogg')
pygame.mixer.music.play(-1,0.0)
# pygame.mixer.music.stop()
while True:
DISPLAYSURF.fill(WHITE)
if direction=='right':
catX+=10
if catX==300:
direction='down'
elif direction=='down':
catY+=10
if catY==300:
direction='left'
elif direction=='left':
catX-=10
if catX==10:
direction='up'
elif direction=='up':
catY-=10
if catY==10:
direction='right'
DISPLAYSURF.blit(catImg,(catX,catY))
DISPLAYSURF.blit(textSurfaceObj,textRectObj)
for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
fpsClock.tick(FPS)

浙公网安备 33010602011771号