Python笔记 - Pygame常用设置及变量 2020.03
2020-03-03 本文已影响0人
我开心0536
Pygame 常用的一些规则和设置
#Pygame 常用的一些规则和设置
#Pygame 常用的一些规则和设置
import pygame
from pygame.locals import *
import sys
import time
# 游戏的初始化
pygame.init()
fpsClock = pygame.time.Clock() #控制屏幕刷新频率,或者说游戏运行速度
FPS = 5 # 窗口刷新频率,也就是游戏运行速度,代表每秒刷新多少次, 数字越大,运行越快
windows_w = 1024 #设定窗口宽度,像素数,默认1024
windows_h = 600 #设定窗口高度,像素数,默认600
screen = pygame.display.set_mode((windows_w,windows_h),0,32) #创建游戏设置窗口大小
pygame.display.set_caption('我的Pygame笔记 Ver20200303.03') #窗口标题
myfont = pygame.font.Font(None,60) #使用pygame.font将文打印到窗口。要打印文本的话首先需要创建一个文字对象。使用默认字体,不能显示中文
myfont20 = pygame.font.SysFont("kaiti" , 20) #显示中文的设置和字体及大小 'fangsong', 'simhei', 'kaiti','simsunnsimsun' 仿宋、黑体、楷体、宋体
myfont60 = pygame.font.SysFont("simhei", 60) #显示中文的设置和字体及大小 'fangsong', 'simhei', 'kaiti','simsunnsimsun' 仿宋、黑体、楷体、宋体
# 定义几个字体颜色
BLACK = (0,0,0) #黑色
BLACK100 = (100,100,100) #灰色
WHITE = (255,255,255) #白色
RED = (255,0,0) #大红色
GREEN = (0,255,0) #绿色
BLUE = (0,0,255) #蓝色
YELLOW = (255,255,0) #黄色
RED2 = (255,0,255) #粉红色
#显示图片相关
img_w = 150 #设定图片宽度
img_h = 200 #设定图片高度
Img_back = pygame.transform.smoothscale( pygame.image.load('images/back.jpg' ).convert_alpha(), (windows_w,windows_h) ) #设置背景图像,并平滑缩放宽高与窗口宽高相同
Img_1 = pygame.transform.smoothscale( pygame.image.load('images/ren_01.png').convert_alpha(), (img_w,img_h) ) #设置普通图片,并平滑缩放宽高为指定数值
# ================================================
# Pygame主程序开始
# ================================================
cishu=1
x=0
y=100
while True:
# 检测是否要关闭窗口
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
# 检测键盘,并检测是否按下Esc键
# Esc键 K_ESCAPE 空格键 K_SPACE 回车键K_RETURN 上K_UP 下K_DOWN 左K_LEFT 右K_RIGHT
keys = pygame.key.get_pressed()
if keys[K_ESCAPE]:
sys.exit()
# 窗口背景(用指定颜色填充 或 用图片背景)
screen.fill(WHITE) #用颜色填充当背景
screen.blit( Img_back , (0, 0)) #用图片当背景,坐标为 0,0
#在屏幕上显示图片(固定位置)
screen.blit( Img_1 , ( 0,0 )) #显示某个图片,指定坐标
#扩展演示1:在屏幕上显示图片(位置x,y可变)
screen.blit( Img_1 , ( x,y )) #显示某个图片,指定坐标
#让这个图片动起来
x = x + 50
if x > windows_w :
x = 0
#扩展演示2:如果需要将某个图片放在正中间,可以用下面功能实现,先获取图片尺寸大小,然后再计算应该显示的位置
img_x, img_y = pygame.image.load('images/ren_01.png').convert_alpha().get_size() # get_size()表示获取当时图片的长度和宽度
screen.blit( Img_1 , ( windows_w/2-img_x/2, windows_h/2-img_y/2 )) #窗口高度的一半 减去 图片高度的一半,就是左上角X位置
#在屏幕上显示纯文本
text_image1 = myfont60.render( "固定位置显示纯文本", True, BLACK ) # render函数第一个参数是文本,第二个参数是抗锯齿字体,第三个参数是一个颜色值(RGB值)
screen.blit(text_image1, (400,20) ) #文字显示位置
#扩展演示1:在屏幕上显示带变量的文本
text_image2 = myfont60.render( "FPS:"+str(FPS)+" 刷新次数"+str(cishu), True, BLACK ) # render函数第一个参数是文本,第二个参数是抗锯齿字体,第三个参数是一个颜色值(RGB值)
screen.blit(text_image2, (300,400) ) #文字显示位置
#扩展演示2:在屏幕上显示文本 , render函数第一个参数是文本,第二个参数是否抗锯齿显示,第三个参数是一个颜色值(RGB值)
text_image_time = myfont60.render("北京时间:"+str( time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) ), True, RED )
screen.blit(text_image_time, (100,500) ) # 在指定位置显示上面字符中的内容
#扩展演示3:在屏幕上显示文本 , render函数第一个参数是文本,第二个参数是否抗锯齿显示,第三个参数是一个颜色值(RGB值)
text_image_xy = myfont20.render("当前窗口宽度:"+str(windows_w)+" 高度:"+str(windows_h)
+" 图片宽度:"+str(img_x)+" 高度:"+str(img_y)
+" 居中图片的X坐标:"+str(windows_w/2 - img_x/2)+" Y坐标:"+str(windows_h/2 - img_y/2),
True, WHITE )
screen.blit(text_image_xy, (20,570) ) # 在指定位置显示上面字符中的内容
#开始更新屏幕画面
pygame.display.update()
#控制游戏速度, 一般放在结尾pygame.display.update()后
fpsClock.tick(FPS)
cishu=cishu+1
常用按键值
KeyASCII ASCII Common Name
K_BACKSPACE \b backspace
K_TAB \t tab
K_CLEAR clear
K_RETURN \r return
K_PAUSE pause
K_ESCAPE ^[ escape
K_SPACE space
K_EXCLAIM ! exclaim
K_QUOTEDBL " quotedbl
K_HASH # hash
K_DOLLAR $ dollar
K_AMPERSAND & ampersand
K_QUOTE quote
K_LEFTPAREN ( left parenthesis
K_RIGHTPAREN ) right parenthesis
K_ASTERISK * asterisk
K_PLUS + plus sign
K_COMMA , comma
K_MINUS - minus sign
K_PERIOD . period
K_SLASH / forward slash
K_0 0 0
K_1 1 1
K_2 2 2
K_3 3 3
K_4 4 4
K_5 5 5
K_6 6 6
K_7 7 7
K_8 8 8
K_9 9 9
K_COLON : colon
K_SEMICOLON ; semicolon
K_LESS < less-than sign
K_EQUALS = equals sign
K_GREATER > greater-than sign
K_QUESTION ? question mark
K_AT @ at
K_LEFTBRACKET [ left bracket
K_BACKSLASH \ backslash
K_RIGHTBRACKET ] right bracket
K_CARET ^ caret
K_UNDERSCORE _ underscore
K_BACKQUOTE ` grave
K_a a a
K_b b b
K_c c c
K_d d d
K_e e e
K_f f f
K_g g g
K_h h h
K_i i i
K_j j j
K_k k k
K_l l l
K_m m m
K_n n n
K_o o o
K_p p p
K_q q q
K_r r r
K_s s s
K_t t t
K_u u u
K_v v v
K_w w w
K_x x x
K_y y y
K_z z z
K_DELETE delete
K_KP0 keypad 0
K_KP1 keypad 1
K_KP2 keypad 2
K_KP3 keypad 3
K_KP4 keypad 4
K_KP5 keypad 5
K_KP6 keypad 6
K_KP7 keypad 7
K_KP8 keypad 8
K_KP9 keypad 9
K_KP_PERIOD . keypad period
K_KP_DIVIDE / keypad divide
K_KP_MULTIPLY * keypad multiply
K_KP_MINUS - keypad minus
K_KP_PLUS + keypad plus
K_KP_ENTER \r keypad enter
K_KP_EQUALS = keypad equals
K_UP up arrow
K_DOWN down arrow
K_RIGHT right arrow
K_LEFT left arrow
K_INSERT insert
K_HOME home
K_END end
K_PAGEUP page up
K_PAGEDOWN page down
K_F1 F1
K_F2 F2
K_F3 F3
K_F4 F4
K_F5 F5
K_F6 F6
K_F7 F7
K_F8 F8
K_F9 F9
K_F10 F10
K_F11 F11
K_F12 F12
K_F13 F13
K_F14 F14
K_F15 F15
K_NUMLOCK numlock
K_CAPSLOCK capslock
K_SCROLLOCK scrollock
K_RSHIFT right shift
K_LSHIFT left shift
K_RCTRL right control
K_LCTRL left control
K_RALT right alt
K_LALT left alt
K_RMETA right meta
K_LMETA left meta
K_LSUPER left Windows key
K_RSUPER right Windows key
K_MODE mode shift
K_HELP help
K_PRINT print screen
K_SYSREQ sysrq
K_BREAK break
K_MENU menu
K_POWER power
K_EURO Euro