用Python和Pygame写游戏-从入门到精通(4)
2014-08-14 14:33
148 查看
用Python和Pygame写游戏-从入门到精通(4)
不过5月上旬,气温居然就到了33℃,这日子真是不让人活了……另外今天是母亲节啊,不知道上什么图片就上这张吧~~
今天说明字体模块和一些错误处理。
使用字体模块
就像上一次说的,一个游戏,再怎么寒碜也得有文字,俄罗斯方块还有个记分数的呢;印象中没有文字的电子游戏只有电脑刚刚诞生的那种打乒乓的了。Pygame可以直接调用系统字体,或者也可以使用TTF字体,稍有点电脑知识的都知道这是什么。为了使用字体,你得先创建一个Font对象,对于系统自带的字体:Python
my_font = pygame.font.SysFont("arial", 16)
1 | my_font= pygame.font.SysFont("arial",16) |
Python
my_font = pygame.font.Font("my_font.ttf", 16)
1 | my_font= pygame.font.Font("my_font.ttf",16) |
Python
text_surface = my_font.render("Pygame is cool!", True, (0,0,0), (255, 255, 255))
1 | text_surface= my_font.render("Pygame is cool!",True,(0,0,0),(255,255,255)) |
下面是一个小例子演示下文字的使用,不过并不是显示在屏幕上,而是存成一个图片文件
Python
my_name = "Will McGugan"
import pygame
pygame.init()
my_font = pygame.font.SysFont("arial", 64)
name_surface = my_font.render(my_name, True, (0, 0, 0), (255, 255, 255))
pygame.image.save(name_surface, "name.png")
1 2 3 4 5 6 | my_name= "Will McGugan" import pygame pygame.init() my_font =pygame.font.SysFont("arial",64) name_surface= my_font.render(my_name,True,(0,0,0),(255,255,255)) pygame.image.save(name_surface,"name.png") |
Python
# -*- coding: utf-8 -*-
# 记住上面这行是必须的,而且保存文件的编码要一致!
import pygame
from pygame.locals import *
from sys import exit
pygame.init()
screen = pygame.display.set_mode((640, 480), 0, 32)
#font = pygame.font.SysFont("宋体", 40)
#上句在Linux可行,在我的Windows 7 64bit上不行,XP不知道行不行
#font = pygame.font.SysFont("simsunnsimsun", 40)
#用get_fonts()查看后看到了这个字体名,在我的机器上可以正常显示了
font = pygame.font.Font("simsun.ttc", 40)
#这句话总是可以的,所以还是TTF文件保险啊
text_surface = font.render(u"你好", True, (0, 0, 255))
x = 0
y = (480 - text_surface.get_height())/2
background = pygame.image.load("sushiplate.jpg").convert()
while True:
for event in pygame.event.get():
if event.type == QUIT:
exit()
screen.blit(background, (0, 0))
x -= 2 # 文字滚动太快的话,改改这个数字
if x < -text_surface.get_width():
x = 640 - text_surface.get_width()
screen.blit(text_surface, (x, y))
pygame.display.update()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | # -*- coding: utf-8 -*- # 记住上面这行是必须的,而且保存文件的编码要一致! importpygame from pygame.localsimport * fromsys importexit pygame.init() screen =pygame.display.set_mode((640,480),0,32) #font = pygame.font.SysFont("宋体", 40) #上句在Linux可行,在我的Windows 7 64bit上不行,XP不知道行不行 #font = pygame.font.SysFont("simsunnsimsun", 40) #用get_fonts()查看后看到了这个字体名,在我的机器上可以正常显示了 font =pygame.font.Font("simsun.ttc",40) #这句话总是可以的,所以还是TTF文件保险啊 text_surface =font.render(u"你好",True,(0,0,255)) x =0 y= (480- text_surface.get_height())/2 background= pygame.image.load("sushiplate.jpg").convert() whileTrue: forevent inpygame.event.get(): ifevent.type== QUIT: exit() screen.blit(background,(0,0)) x-=2 # 文字滚动太快的话,改改这个数字 ifx <-text_surface.get_width(): x= 640- text_surface.get_width() screen.blit(text_surface,(x,y)) pygame.display.update() |
Pygame的错误处理
程序总会出错的,比如当内存用尽的时候Pygame就无法再加载图片,或者文件根本就不存在。再比如下例:Python
>>> import pygame
>>> screen = pygame.display.set_mode((640, -1))
---------------------------------
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
pygame.error: Cannot set 0 sized display mode
----------------------------------
1 2 3 4 5 6 7 | >>>import pygame >>> screen= pygame.display.set_mode((640,-1)) --------------------------------- Traceback (mostrecent call last): File"<interactive input>",line 1,in ? pygame.error:Cannot set0 sizeddisplay mode ---------------------------------- |
Python
try:
screen = pygame.display.set_mode(SCREEN_SIZE)
except pygame.error, e:
print "Can't create the display :-("
print e
exit()
1 2 3 4 5 6 | try: screen= pygame.display.set_mode(SCREEN_SIZE) exceptpygame.error,e: print"Can't create the display :-(" printe exit() |
Pygame的基础就到这里,后面我们会进行一些高级的介绍,下一次的话,就开始讲画东西了~
相关文章推荐
- 用Python和Pygame写游戏-从入门到精通(6)
- 用Python和Pygame写游戏-从入门到精通(14)
- 用Python和Pygame写游戏-从入门到精通(8)
- 用Python和Pygame写游戏-从入门到精通(3)
- 用Python和Pygame写游戏-从入门到精通(1)学习笔记
- 用Python和Pygame写游戏-从入门到精通(8)
- 用Python和Pygame写游戏-从入门到精通(目录)
- 用Python和Pygame写游戏-从入门到精通(10)
- 用Python和Pygame写游戏-从入门到精通(7)
- 用Python和Pygame写游戏-从入门到精通(10)
- 用Python和Pygame写游戏-从入门到精通(6)
- 用Python和Pygame写游戏-从入门到精通(2)
- 用Python和Pygame写游戏-从入门到精通(1)
- 用Python和Pygame写游戏-从入门到精通
- 用Python和Pygame写游戏-从入门到精通(11)
- 用Python和Pygame写游戏-从入门到精通
- 用Python和Pygame写游戏-从入门到精通(5)
- 用Python和Pygame写游戏-从入门到精通(5)
- 用Python和Pygame写游戏-从入门到精通(2)
- 用Python和Pygame写游戏-从入门到精通(13)