Python游戏编程笔记_BGDwPaP_0302

Python实现古诗词填字游戏(一) 古诗词做填字游戏是一项很有趣的活动,在这里Mr. PosPro用Python写了一个小程序,可以生成简单的填字游戏 阅读详情

        本文中的程序来源于《Beginning Game Development with Python and Pygame》一书第70页,注释部分为PosPro原创(PosPro正在尝试通过注释来理解程序和进行教学),本程序的设计目标是建立一个(没有滑动条的)窗口,窗口中的文本显示所有接受到的事件(如鼠标移动、键盘输入等),可以直观地给出关于Event的全部信息。

        对于pygame中具体函数的定义,可以参考在线文档:http://www.pygame.org/docs/


#-*- coding=utf-8 -*-
# 若无上句,即便是在注释中有中文,也会报错,且这一句必须放在第一句!!

#本程序来源于《Beginning Game Development with Python and Pygame》 P70
#注释 by PosPro
#### 程序目标:####
#建立一个窗口,窗口以一屏面积显示所有接受到的事件:鼠标移动、键盘输入等
#可以发现鼠标将提供相当丰富(啰嗦)的信息,若只需要位置信息还是用pygame.mouse_get_pos()比较好
#
#### 程序框架:####
#1 引入所需模块
#2 初始化
#3 字体设置
#4 一个循环构成程序核心
#**     收集所有产生的event
#**     若累计的信息超过一屏所能显示的范围,则去除较早的event信息
#**     设置退出条件
#**     利用Surface对象对屏幕进行绘制


### 代码重复部分未做详细注释,详情可参考前一篇博客


#1 引入所需模块
import pygame
from pygame.locals import *
from sys import exit


#2 初始化
pygame.init()
SCREEN_SIZE=(800,600)
screen=pygame.display.set_mode(SCREEN_SIZE,0,32)
#通过一个元组tuple定义了屏幕尺寸,而且这个元组可能很方便地在后面被调用


#3 字体设置
font=pygame.font.SysFont("arial",16)
font_height=font.get_linesize()
MAX_LINES=SCREEN_SIZE[1]/font_height
event_text=[]
### 通过pygame.font.SysFont()设置字体(并得到一个返回值)
### 获取字体高度(也即行高度)
### MAX_LINES是一屏最多显示的行数,多出的部分将被忽略


#4 一个循环构成程序核心
while True:
        #**     收集所有产生的event
	event=pygame.event.wait()
	event_text.append(str(event))
        ### 程序停滞,等待新event产生,event产生后即把事件信息保存在list:event_text中

        #**     若累计的信息超过一屏所能显示的范围,则去除较早的event信息
	event_text=event_text[-MAX_LINES:]
	###如果一屏最多显示20行,则只有在list中最后20个event信息有机会显示
	###[-20:]就是截取倒数20个至最后一个event信息
	###方法很巧妙,注意冒号不能丢
	
	###### 书中原句为:########
	### event_text=event_text[-SCREEN_SIZE[1]/font_height:]
	### 虽然巧妙,却造成理解上的困难
	### 本着 “直观就是美”的原则,我将此句拆成两句
	### MAX_LINES=SCREEN_SIZE[1]/font_height 并放在循环体之外
	### event_text=event_text[-MAX_LINES:]
	### 采用这种方式MAX_LINES设置后就无法改变,不适合窗口大小可变的情况
	##########################
	### 对于不易理解的部分,可以考虑打印至txt文件,然后仔细分析

	#**     设置退出条件
	if event.type==QUIT:
		exit()
		
        #**     利用Surface对象对屏幕进行绘制
	screen.fill((0,0,0)) #设成黑底色,下面设字体为绿色——Matrix的既视感

	y=SCREEN_SIZE[1]-font_height #最靠近窗口底边的那一行起始位置
	for text in reversed(event_text):       
		screen.blit(font.render(text, True, (0,255,0)),(0,y))
		y-=font_height #窗口左上角作为左边原点,向下向右为增大方向
		
	###因为y的起始值是最靠近底边那一行的位置,所以要从list中最后一条记录开始写
	###render()函数的用法:
	###render(text, antialias, color, background=None) -> Surface
	###pygame无法把字符直接写在某个Surface上,只能通过先通过render产生一个Surface
	###在通过blit涂抹到对应位置
	###第一个参数:字符串,只能有一行,换行符将被忽略
	###第二个参数:是否柔化字体边沿
	###三四参数分别为字体颜色和底色
        ###font.render中的这个font是指在前文中,自己定义的那个font(即"16号Arial")

	pygame.display.update()



Beginning Game Development with Python and Pygame 立即下载

相关推荐

BeginningGameDevelopmentWithPythonAndPygame.pdf 英文原版

Beginning Game Development With Python And Pygame

Beginning Python Games Development

Like music and movies, video games are rapidly becoming an integral part of our lives. Over the years, youve yearned for every new gaming console, mastered each blockbuster within weeks after its rele...

weixin_39363245的博客 384

Python游戏开发:Beginning Game Development with Python and Pygame-高清文字版.pdf

Python游戏开发:Beginning Game Development with Python and Pygame-高清文字版.pdf 这个是带完整目录书签的文字版本,文本内容可以复制的哦

Python游戏编程笔记_BGDwPaP_0301

Beginning Game Development with Python and Pygame学习笔记

PosPro的专栏 749

PythonPygame游戏-从入门到精通

原文地址:http://eyehere.net/2011/python-pygame-novice-professional-1/

zwd574011074的博客 230

物体移动篇

翻译自Beginning Game Development with Python and Pygame, 代码有改动 在现实世界中,物体的各种移动方式,取决于他们的物体运动轨迹。例如,在移动直线与恒定速度和方向可以改变在一瞬间,但如果你的应用这种运动汽车驾驶游戏,它会破坏错觉。毕竟,在驾驶游戏中你会期望车花一些时间达到最高速度,它不应该瞬间180度旋转! 游戏真实感,程序员必

片断 1419

Pygame 游戏开发入门指南(一)

游戏开发是一个编程领域,它同时结合了许多主题:数学、物理、图形、用户界面、人工智能等等。由于这个原因,游戏开发既有挑战性又有回报。在大多数语言中,游戏开发并不推荐给任何编程初学者。然而,使用 Python 这样的友好语言和 Pygame 这样的模块进行游戏开发,可以让任何人轻松进入游戏开发领域。即使你是 Python 编程的新手,或者是经验丰富的开发人员,你也会发现游戏开发是进一步学习编程的好方法。通常情况下,编程不是一种非常视觉化的体验,但游戏改变了这一点。

龙哥盟 1131

Pygame 游戏开发入门指南(二)

原文:Beginning Python games development with PyGame 协议:CC BY-NC-SA 4.0 四、创建视觉效果 电脑游戏本质上是非常视觉化的,游戏开发人员花费大量时间处理图形和改进视觉效果,为玩家创造最具娱乐性的体验。这一章给你一个为电脑游戏生成视觉效果的坚实基础。 在本章中,我们将使用 Python 编写的例子和 Pygame 模块来说明我们的观点。您不需要完全理解这些程序,但是我们鼓励您去尝试! 使用像素功率 如果你仔细观察你的电脑屏幕,你应该能看出它是由

龙哥盟 1675

Making Games with Python & PyGame.pdf + source code(高清pdf + 源代码)

高清pdf+源代码+练习素材 Making Games with Python & PyGame全套

Pygame 简单实例(2)事件event的管理

# coding=utf-8 import pygame from pygame.locals import * from sys import exit from random import randint screen_size=(640,480) pygame.init() screen=pygame.display.set_mode(screen_size,0,32) font=pyg...

Zhiinn的博客 604

Beginning Game Development with Python and Pygame: From Novice to Professional

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/topmvp - topmvpLike music and movies, video games are rapidly becoming an integral part of our lives. Over the years, youve

TopMVP 1300

Pygame事件捕捉

如果之前有过编程的基础,那么,一定对于事件(event)有一定的理解,在Pygame中,可以使用对应的函数来获取一定的事件,下面我使用Pygame里面的一个简单的例子来进行展示,在这个例子中,我们通过屏幕来展示从鼠标键盘获取的事件import pygame from pygame.locals import * from sys import exit # init pygame and defi

季科的博客 797

Beginning Game Development with Python and Pygame(3) 中文译本

理解事件在上一个程序中,我们处理了QUIT事件,你想退出程序时它是必定会产生的消息。Pygame也产生其他的消息来通知你发生了什么事情比如鼠标移动和按键。事件可能在任何时候产生,无论你的程序正在做什么。例如,你的代码正在画一个坦克在桌面上,这个时候用户按下了面板上的fire 键。这个时候你无法对事件作出反应,pygame把这些消息存储在队列之中,知道你准备好了去处理它们。(特别是在游戏循环开始

2184

Beginning Game Development with Python and Pygame 中文翻译本

序言  这本书是我闲来无聊的时候翻译的国外的原本,本来是我自己学习Pyhon的时候发现直接看英文版本的真的是很不爽,所以自己想看着翻译一下。本人水平那是差的没办法,所以错误之处多多理解。 关于作者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2076
上一篇: Python游戏编程笔记_BGDwPaP_0301
下一篇: Python游戏编程笔记_BGDwPaP_0303
PosPro
博客等级 码龄12年 28粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值