#导入pygame模块
import pygame
/***************************/
#初始化pygame
pygame.init()
/***************************/
#设置窗口大小
size = width, height = 600, 400
/***************************/
#速度方向speed[x轴,y轴]，配合Surface.get_rect.move()使用
#以下表示x轴负半轴为2,正半轴为1
speed = [-2, 1]
/***************************/
#设置背景颜色RGB
bg = (255, 255, 255) # RGB
/***************************/
#实例化窗口大小，执行生成窗口
screen = pygame.display.set_mode(size)
/***************************/
#设置标题
pygame.display.set_caption("标题")
/***************************/
#载入Surface对象
Surface = pygame.image.load("图片.png")
/***************************/
#获得Surface对象的矩形框位置
position = Surface.get_rect()

#遍历事件，设置关闭窗口
for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

#Surface改变位置
position = position.move(speed)
/***************************/
#图像变换
Surface = pygame.transform.flip(turtle, True, False)
pygame.transform.file(Surface对象,水平翻转,垂直翻转)
/***************************/
#填充背景
screen.fill(bg)              fill(RGB背景)
/***************************/
#画出Surface对象
    screen.blit(Surface, position)
#blit(Surface对象,移动的位置)
/***************************/
#双缓冲
pygame.display.flip()        #flip()双缓冲，将数据写到内存，避免闪烁
/***************************/
#延迟
pygame.time.delay(10)        #pygame.time.delay()延迟

/***************************/
注意：触发按键的前提是在按下或松开事件下判断执行
即
if event.type==KEYDOWN:
/***************************/
#按下键盘上的（↑↓←→）即可改变方向
#放在事件的遍历中即可触发
if event.type==KEYDOWN:
			if event.key==K_LEFT:
				turtle=l_head
				speed = [-1,0]
			if event.key==K_RIGHT:
				turtle=r_head
				speed = [1,0]
			if event.key==K_UP:
				speed = [0,-1]
			if event.key==K_DOWN:
				speed = [0,1]
/***************************/
#设置全屏
if event.key==K_F11:
				fullscreen=not fullscreen
				if fullscreen:
					screen=pygame.display.set_mode(modes[0],FULLSCREEN | HWSURFACE)       #pygame.display.set_mode(分辨率,全屏 | 硬件加速)
				else:
					screen=pygame.display.set_mode(size)                                  #screen=pygame.display.set_mode(size)恢复原窗口大小
/***************************/
#调整窗口大小的事件
注意：前提是将窗口设置成可以改变窗口
即
screen=pygame.display.set_mode(size,RESIZABLE)
中RESIZABLE即可开启窗口大小修改使能
/***************************/
#用户调整窗口尺寸
		if event.type == VIDEORESIZE:                         #如果用户调整窗口大小，那么则会触发VIDEORESIZE事件
			size=event.size                                   #将调整后的窗口大小赋值给新的size
			width,height=size                                 #将新的size赋值给width,height两个变量
			print(size)                                       #将新的尺寸打印到控制台
			screen=pygame.display.set_mode(size,RESIZABLE)    #创建窗口,RESIZABLE作用为窗口大小调整使能
/***************************/
初始ratio=1.0
表示缩放的比率
/***************************/
#快速缩放Surface对象
Surface = pygame.transform.scale(Surface,(int(oturtle_rect.width * ratio),int(Surface_rect.height * ratio)))
/***************************/
#旋转图像
turtle_right = pygame.transform.rotate(turtle,90)#逆时针旋转90度
turtle_top = pygame.transform.rotate(turtle,180)#逆时针旋转180度
turtle_left = pygame.transform.rotate(turtle,270)#逆时针旋转270度
/*********
贴边走
/*********
if position.right > width:
		turtle = turtle_right
		position=turtle_rect=turtle.get_rect()
		position.left = width - turtle_rect.width
		speed=[0,5]

	if position.bottom > height:
		turtle=turtle_bottom
		position=turtle_rect=turtle.get_rect()
		position.left = width - turtle_rect.width
		position.top = height - turtle_rect.height
		speed=[-5,0]



	if position.left < 0:
		turtle=turtle_left
		position=turtle_rect=turtle.get_rect()
		position.top = height - turtle_rect.height
		speed=[0,-5]


	if position.top < 0:
		turtle=turtle_top
		position=turtle_rect=turtle.get_rect()
		speed=[5,0]
/***************************/
#获取鼠标位置
#event.pos 为元组(x轴，y轴)
pos_start = event.pos


#实时获得鼠标位置
mouse_pos = pygame.mouse.get_pos()


/***************************/
#设置起始帧数控制时间
clock=pygame.time.Clock()

#控制帧数
clock.tick(帧数)

/***************************/

#定义一个Surface透明函数
def blit_alpha(target, source, location, opacity):            
	x=location[0]
	y=location[1]
	temp = pygame.Surface((source.get_width(),source.get_height())).convert()   #创建一个不带alpha的Surface
	temp.blit(target,(-x,-y))                                                   #在这个固定的新Surface上呈现背景
	temp.blit(source,(0,0))                                                     #大小为主Surface
	temp.set_alpha(opacity)                                                     #将这个新Surface添加alpha透明度(0~255)
	target.blit(temp,location)                                                  #背景呈现在主Surface位置
/**********
使用函数使Surface对象透明
/**********
blit_alpha(screen,turtle,position,200)         #blit_alpha()定义的函数，表示在主Surface上绘制背景,透明度为200

/***************************/
#绘制直线
pygame.draw.line(screen,BLACK,(100,200),(540,250),1)#pygame.draw.line(绘制区域，颜色，(起始位置x，起始位置y),(终止位置x，终止位置y)，边框像素)

#绘制抗锯齿直线
pygame.draw.aaline(screen,BLACK,(100,250),(540,300),1)#pygame.draw.aaline(绘制区域，颜色，(起始位置x，起始位置y),(终止位置x，终止位置y)，是否抗锯齿)1为是

#多段直线绘制图形
#以鱼为例
/*******直线段列表*****
points=[(200,75),(300,25),(400,75),(450,25),(450,125),(400,75),(300,125)]
/*********************
pygame.draw.lines(screen,GREEN,1,points,1)#pygame.draw.lines(绘制区域，颜色，是否闭合，线段组，边框像素)
/***************************/

#绘制矩形
pygame.draw.rect(screen,BLACK,(50,50,150,50),0)
#pygame.draw.rect(绘制区域，绘制颜色，(矩形起始位置x,矩形起始位置y,长，宽),填充:0为实心、1为一像素边框、10为10像素边框)

/***************************/

#绘制圆形
pygame.draw.circle(screen,RED,position,25,1)#pygame.draw.circle(绘制区域，颜色，位置，大小，边框)

/***************************/

#绘制椭圆
pygame.draw.ellipse(screen,BLACK,(100,100,440,100),1)#pygame.draw.ellipse(绘制区域,颜色，(原点坐标x，原点坐标y，长，宽)，边框1像素)
/***************************/

#绘制弧线
pygame.draw.arc(screen,BLACK,(100,100,440,100),0,math.pi,1)#pygame.draw.arc(绘制区域，颜色，(起始位置x，起始位置y，长，宽)，起始弧度，终止弧度，边框像素为1)为0到pi的椭圆弧

/***************************/
#游戏背景音乐及音效
#游戏音效初始化
pygame.mixer.init()

#载入游戏背景音乐
pygame.mixer.music.load("杨多 -Kiat Jud Dai.mp3")

#设置音量
pygame.mixer.music.set_volume(0.2)

#播放背景音乐
pygame.mixer.music.play()

#载入游戏音效
sound1=pygame.mixer.Sound("10023.wav")
#设置音量
sound1.set_volume(0.2)

#播放游戏音效
sound1.play()

#播放/暂停
#先定义一个变量控制暂停
pause=False
/**********

/**********
if pause:
		screen.blit(pause_image,pause_rect)
		pygame.mixer.music.pause()
	else:
		screen.blit(unpause_image,pause_rect)
		pygame.mixer.music.unpause()
/***************************/
pygame.mixer.music.pause()
#表示暂停
pygame.mixer.music.unpause()
#表示播放
/***************************/


检测用户的键盘操作：
key_pressed=pygame.key.get_pressed()
/***********
例
if key_pressed[K_w]:

/***********
例子表示按下w键时
/***********
返回一个bool值，当按下时为True
/***************************/
定义精灵类
例
class SmallEnemy(pygame.sprite.Sprite):
    def __init__(self, bg_size):
        pygame.sprite.Sprite.__init__(self)
/***********
用于碰撞检测

/***************************/
定义一个组，用来存放碰撞对象
可以类比为存放精灵的列表
例
enemies = pygame.sprite.Group()

/***************************/
将精灵添加到这个组中
enemies.add(e1)
/*********
e1为碰撞对象
/***************************/
判断一个精灵(主角)和一个精灵组(敌人)碰撞
pygame.sprite.spritecollide(group1,group2,dokill)

/********
dokill是一个bool值
如果将 `dokill` 设置为 `True`，则 指定精灵组 中 发生碰撞的精灵将被自动移除
/********
一般dokill为False
/***************************/
将Surface对象非透明部分设置为mask对象，实现完美碰撞（去掉Surface矩形的透明部分）
例
mask=pygame.mask.from_surface(Surface对象)

在之前的基础上添加pygame.sprite.collide_mask
这一句来检测是否碰撞
pygame.sprite.spritecollide(group1,group2,dokill,pygame.sprite.collide_mask)

/***************************/

连续触发按键按下事件
须设置
key.set_repeat(delay,interval)

就是按住某个键每隔interval毫秒产生一个KEYDOWN事件，delay就是多少毫秒后才开始触发这个事件
/***************************/
