第一章: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)

  

 

 
posted @ 2020-10-21 00:30  goldstine  阅读(220)  评论(0)    收藏  举报