#导入所需的模块 import sys import pygame # 使用pygame之前必须初始化 pygame.init() # 设置主屏窗口 screen = pygame.display.set_mode((400,400)) # 设置窗口的标题,即游戏名称 pygame.display.set_caption('hello world') # 引入字体类型 f = pygame.font.Font('C:/Windows/Fonts/simhei.ttf',50) # 生成文本信息,第一个参数文本内容;第二个参数,字体是否平滑; # 第三个参数,RGB模式的字体颜色;第四个参数,RGB模式字体背景颜色; text = f.render("C语言中文网",True,(255,0,0),(0,0,0)) #获得显示对象的rect区域坐标 textRect =text.get_rect() # 设置显示对象居中 textRect.center = (200,200) # 将准备好的文本信息,绘制到主屏幕 Screen 上。 screen.blit(text,textRect) # 固定代码段,实现点击"X"号退出界面的功能,几乎所有的pygame都会使用该段代码 while True: # 循环获取事件,监听事件状态 for event in pygame.event.get(): # 判断用户是否点了"X"关闭按钮,并执行if代码段 if event.type == pygame.QUIT: #卸载所有模块 pygame.quit() #终止程序,确保退出程序 sys.exit() pygame.display.flip() #更新屏幕内容运行结果如下所示:
图1:第一个 Pygame 程序
pygame.init()这是整个程序中的第一句代码,它的作用是自动检测 Pygame 软件包是否正常可用,并检查电脑的硬件调用接口、基础功能是否存在问题,比如音频、光驱、声卡驱动等设备。同时,它会完成 Pygame 中所有模块的初始化操作,比如 display(显示模块)、font(字体模块)、mixer(声音控制模块)、cursors(光标控制模块)等。
由此可见,初始化程序的重要性,因此上述代码,在编写程序时候千万不能“漏掉”。
#也叫screen对象,本质上是一个Surface,大小400*400 screen = pygame.display.set_mode((400,400))screen 的本质上就是一个 Surface 对象,它是游戏的主窗口,也就是整个游戏中尺寸最大的“纸”,任何其他的 Surface 对象都需要附着在这张最大的“纸”上,比如创建一个包含文本的 Surface 对象,通过以下方法将它绘制在主屏幕上:
#创建一个包含文字的Surface对象 text = f.render("C语言中文网",True,(255,0,0),(0,0,0)) #通过blit方法将其绘制在主屏幕上,这里的textRect表示位置坐标 screen.blit(text,textRect)如果想创建一个包含图像的 surface 对象可以使用如下方法:
surface_image =pygame.image.load("图片路径")
FPS 越高,细节越好,体验也越好,但是文件容量也越高
动画保证了玩家的视觉体验,而人机交互则是操作上的体验。通过移动和点击鼠标、按下键盘上的技能键,或是滑动手机屏幕等操作来实现人机交互,这些与游戏程序交互的操作被称为事件(Event)。如果您接触过 JavaScript,那么您对于“事件”这一名词,一定不会陌生。
Pygame 作为一个游戏开发库,同样具有设置和监听事件的功能。它提供了一个 enevt 事件模块,这个模块中包含了所有常用到游戏事件。下面是退出游戏的代码示例(其他事件类型,后续会做介绍):# 循环获取事件,监听事件状态,使用get()获取事件 for event in pygame.event.get(): # 判断事件类型,用户是否点了"X"关闭按钮 # pygame.QUIT 指点击右上角窗口的"X"号 if event.type == pygame.QUIT: #点击后,卸载所有pygame模块 pygame.quit()
#游戏主循环(游戏循环) while True: # 循环获取事件,监听事件 for event in pygame.event.get(): # 判断用户是否点了关闭按钮 if event.type == pygame.QUIT: # 当用户关闭游戏窗口时执行以下操作 # 这里必须调用quit()方法,退出游戏 pygame.quit() #终止系统 sys.exit() #更新并绘制屏幕内容 pygame.display.flip()游戏主循环是每个 Pygame 游戏程序中必不可少的一部分,它主要承担着以下三个重要任务:
图2:主循环示意图
#刷新界面显示 pygame.display.flip()除了上述方法外,Pygame 还提供了另一个方法。如下所示:
pygame.display.update()这两个方法的主要区别是:后者可以根据选定的区域来更新部分内容,而前者则是更新整个待显示的内容。如果后者没有提供区域位置参数时,其作用和 display.flip() 相同。
通过上述学习,我们对 Pygame 程序有了基本的认识。下面对 Pygame 模块中的方法、属性做更加细致的讲解。
本文链接:http://task.lmcjl.com/news/7502.html