来自新手小白的初识Pygame---Pie游戏

初识Pygame:Pie游戏

(。・∀・)ノ゙嗨,本文献给第一次学习python且想自己写游戏的小白们,本文我将会带领你们感受开发的乐趣,这个游戏虽然很简单,但是将由这个游戏作为一个契机,带你感受创造的喜悦,我们只是初次认识Pygame,学习绘制图像和文本的基础知识,并且编写一些代码。

了解Pie游戏

本文的示例是款叫作 Pie游戏。Pie 游戏使用Pygame来绘制填充的饼块。要在Pie游戏中使用Pygame绘制一个饼块, 用户按下与该饼块对应的数字键。然后,使用Pygame的绘制函数来绘制饼块。当按下针对所有饼块的按键而没有犯错的时候,玩家就获胜了。
如果还没有下载pygame的详情可见hello689的博客内容

使用Pygame

使用Pygame的第一步,是将Pygame库导入到Pygame程序中,以便可以使用它。

import pygame

下一个步骤是,导入Pygame中所有的变量,已准备好可以在我们的代码中访问他们。

from pygame.locals import *

现在,我们可以初始化Pygame了:

pygame.init()

初始化了Pygame,我们就可以访问这个库的所有资源了,下一步是获取对显示系统的访问,并且创建一个窗口。分辨率由你决定,但是,注意宽度和高度的参数要放在圆括号中(600,500)对变成了带有x,y属性的一个点。

screen = pygame.display.set_mode((600,500))

打印文本

pygame支持使用pygame.font将文本输出到图形窗口。要绘制文本,我们必须先创建一个字体对象:

myfont = pygame.font.Font(None,60)

可以向Pygamne font.Font构造函数提供一个TrueType字体,诸如“Arial",但是,使用None (不带引号)将会导致使用默认的Pygame字体。字体大小60已经很大了,但是,这只是一个简单的示例。 现在,使用Pygame绘制文本并不是一个轻量型的进程,而是一个重量型的进程。这意味着,文本并不是快速地绘制到屏幕上,而是渲染到一个平面,然后再将其绘制到屏幕上。由于这是一个耗费时间的过程,建议首先在内存中创建文本平面(或图像),然后再将文本当作一个图像来绘制。当我们]必须实时地绘制文本的时候,直接绘制是没问题的;但是,如果文本是无法修改的,最好先把文本提前渲染到一个图像之上。

white = 255,255,255
blue = 0,0,255
textImage = myfont.render("hello pygame",True,white)

textImage对象是可以使用screen.blit()绘制的平面,我们]的高难度的绘制函数,将会在所有的游戏和示例中广泛地使用。第一个参数显然是文本消息,第二个参数是抗锯齿字体(为了提高质量)的一个标志,第三个参数是颜色(一个RGB值)。
要绘制文本,通常的过程是清除屏幕,进行绘制,然后刷新显示。让我们看看所有这三行代码:

screen.fill(blue)
screen.blit(textImage,(100,100))
pygame.display.update()

循环

我们所看到的简化的示例有两个问题。首先,它只是运行次然后就停止了。其次没有办法获取任何用户输入(即便它不会立即退出)。因此,让我们看看如何修正这两个问题。首先,我们需要一个循环。在Python中这通过关键字while 来实现。While 语将执行冒号后面的代码,直到条件为假。只要while条件为真,它将持续运行:

while True:

接下来,我们创建一个事件处理程序。在早期阶段,我们期望窗口发生的事情是,它能够等待用户关闭它。关闭事件可能是点击窗口右上角的“X",或者只是按下任何的键。注意,while循环中的代码是缩进的。在此之后缩进的任何代码,都将包含在这个while循环。

while True:
	for event in pygame.event.get():
		if event.type in (QUIT, KEYDOWN)
			sys.exit()

绘制矩形

要绘制矩形,通过多个参数来调用pygame.draw.rect0函数。这个程序所显示的窗口如图所示。这个示例比上个示例要高级些。 这个示例移动矩形,而不只是在屏幕中间绘制个矩形。 其工作的方法是, 在while 循环之外记录矩形的位置 (使用pos_x和pos_ y),并且创建一对速度变量(vel_x和vel_y)。在while循环之中,我们可以使用该速度来更新位置,然后,通过此逻辑来将矩形保持在屏幕上。其工作的方式是,任何时候,当矩形到达屏幕的边缘的时候,速度变量都取反。

import pygame,sys
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((600,500))
pygame.display.set_caption("Drawing Rectangles")
pos_x=300
pos_y=250
vel_x=2
vel_y=1
while True:
    for event in pygame.event.get(
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值