Python pygame study 1

pygame的模块

pygame.cdrom访问光驱
pygame.cursors加载光标
pygame.display访问显示设备
pygame.draw绘制形状、线和点
pygame.event管理事件
pygame.font使用字体
pygame.image加载和存储图片
pygame.joystick使用游戏手柄或者 类似的东西
pygame.key读取键盘按键
pygame.mixer声音
pygame.mouse鼠标
pygame.movie播放视频
pygame.music播放音频
pygame.overlay访问高级视频叠加
pygame就是我们在学的这个东西了……
pygame.rect管理矩形区域
pygame.sndarray操作声音数据
pygame.sprite操作移动图像
pygame.surface管理图像和屏幕
pygame.surfarray管理点阵图像数据
pygame.time管理时间和帧信息
pygame.transform缩放和移动图像

 

# -*- coding:UTF-8 -*-
#
mouse_image_filename='fugu.png'
import pygame
from pygame.locals import *
from sys import  exit
pygame.init()
background=pygame.image.load('images/sushiplate.jpg')
mouse_cursor=pygame.image.load('images/fugu.png')
#创建了一个窗口,设置分辨率,第一个元祖是分辨率,第二个是不具有特性就设置成0,第三个为色深
screen=pygame.display.set_mode((640,480),0,32)
#设置了一个窗口
pygame.display.set_caption('This is a game')
while True:
    for event in pygame.event.get():
        if event.type==QUIT:
            exit()
    screen.blit(background,(0,0))
    x,y=pygame.mouse.get_pos()
    x-=mouse_cursor.get_width()/2
    y-=mouse_cursor.get_height()/2
    #计算光标的左上角位置
    screen.blit(mouse_cursor,(x,y))
    #把光标画上去
    pygame.display.update()

 

pygame.display.set_mode((x,y),标志位,色深)

标志位如下:

FULLSCREEN

创建一个全屏窗口
DOUBLEBUF创建一个“双缓冲”窗口,建议在HWSURFACE或者OPENGL时使用
HWSURFACE创建一个硬件加速的窗口,必须和FULLSCREEN同时使用
OPENGL创建一个OPENGL渲染的窗口
RESIZABLE创建一个可以改变大小的窗口
NOFRAME创建一个没有边框的窗口

事件event

pygame的做法是把一系列的还是件存放一个队列中,逐个处理

事件检索:

pygame.event.get()

pygame.event.wait()

pygame.event.poll()一旦调用,他会根据现在的情形返回一个真实的事件,或者一个都没有.

常用的事件集:

事件产生途径参数
QUIT用户按下关闭按钮none
ATIVEEVENTPygame被激活或者隐藏gain, state
KEYDOWN键盘被按下unicode, key, mod
KEYUP键盘被放开key, mod
MOUSEMOTION鼠标移动pos, rel, buttons
MOUSEBUTTONDOWN鼠标按下pos, button
MOUSEBUTTONUP鼠标放开pos, button
JOYAXISMOTION游戏手柄(Joystick or pad)移动joy, axis, value
JOYBALLMOTION游戏球(Joy ball)?移动joy, axis, value
JOYHATMOTION游戏手柄(Joystick)?移动joy, axis, value
JOYBUTTONDOWN游戏手柄按下joy, button
JOYBUTTONUP游戏手柄放开joy, button
VIDEORESIZEPygame窗口缩放size, w, h
VIDEOEXPOSEPygame窗口部分公开(expose)?none
USEREVENT触发了一个用户事件code
import pygame
from pygame.locals import *
from sys import  exit
pygame.init()
screen_size=(640,480)
event_text=[]
front=pygame.font.SysFont('arial',16)
front_height=front.get_linesize()
screen=pygame.display.set_mode(screen_size,0,32)
pygame.display.set_caption("This is a game ")
while True:
    event=pygame.event.wait()
    event_text.append(str(event))
    #获得实践的名称
    event_text=event_text[-screen_size[1]/front_height:]
    if event.type==QUIT:
        exit()
    x,y=pygame.mouse.get_pos()
    screen.fill((255,255,255))
    #y=screen_size[1]-front_height
    for text in reversed(event_text):
        screen.blit(front.render(text,True,(0,0,0)),(0,y))
        y-=front_height
    pygame.display.update()

处理鼠标事件:

MOUSEMOTION 会在鼠标动作的时候发生,有三个参数

buttons:一个含有三个数字的元祖,三个值分别代表左键,中键和右键,1代表按下了

pos:就是位置了

rel:代表现在距离上次产生鼠标事件时的距离

MOUSEBUTTONDOWN和MOUSEBUTTONUP:

button:这个值代表哪个案件被操作

pos:位置

处理键盘事件:

KEYDOWN and KEYUP

import  pygame
from pygame.locals import  *
from sys import  exit
pygame.init()
screen_size=(640,480)
image=pygame.image.load('images/fugu.png')
background=pygame.image.load('images/sushiplate.jpg')
screen=pygame.display.set_mode(screen_size,0,32)
pygame.display.set_caption('This is a key event')
key_x,key_y=(0,0)
key_move_x,key_move_y=(0,0)
while True:
    for event in pygame.event.get():
        if event.type==QUIT:
            exit()
        if event.type==KEYDOWN:
            if event.key==K_UP:
                key_move_x-=1
            elif event.key==K_DOWN:
                key_move_x+=1
            elif event.key==K_LEFT:
                key_move_y-=1
            elif event.key==K_RIGHT:
                key_move_y+=1
        else:
            key_move_x=0
            key_move_y=0
    key_y+=key_move_y
    key_x+=key_move_x
    screen.fill((0,0,0))
    screen.blit(background,(0,0))
    screen.blit(image,(key_x,key_y))
    pygame.display.update()

产生事件:

通常玩家做出什么操作,pygame就产生对应的事件就可以了,

my_event=pygame.event.EVENT(KEYDOWN,key=K_SPACE,mod=0,unicode=u'')
my_event=pygame.event.EVENT(KEYDOWN,{key=K_SPACE,mod=0,unicode=u''})
pygame.event.post(my_event)

产生一个完全自定义的事件(这个事件是干嘛的,这个是一个高级的处理,这里留个坑,不是我留的,是我看的教程留的)

CATONKEYBOARD=USEREVENT+1
my_event=pygame.event.EVENT(CATONKEYBOARD,message='Bad Cat')
pygame.event.post(my_event)
#获取这个事件
for event in pygame.even.get():
    if event.type==CATONKEYBOARD:
        print event.message

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值