【Pygame手册01/20】最简应用:窗口

目录

一、说明

二、pygame是什么?

2.1 为游戏开发设计

2.2 版本发展史

2.3 特点

三、pygame安装要点

四、入门知识

4.1 初始使用

4.2 要更改 pygame 窗口的外观

4.3 完整窗口程序

4.4 窗口对象接口示例

五、隐形窗口和显性窗口

六、结论


一、说明

        为什么要介绍pygame?这是因为在窗口运行中,qt、tkinter等只是为了界面,不存在动态动画功能。opencv是针对图像数值处理进行的,也不存在动态。而pygame可以将数学上的运动,归结为动画,这就能大大增强我们的数据说服能力,这是一个有力工具,很有必要掌握。

二、pygame是什么?

2.1 为游戏开发设计

        Pygame是一组跨平台的Python模块,专为编写视频游戏而设计。它包括设计用于 Python编程语言的计算机图形和声音库。

2.2 版本发展史

        Pygame 版本 2 于 2009 年计划为“Pygame Reloaded”,但 Pygame 的开发和维护完全停止,直到 2016 年底版本 1.9.1。 2019 年 3 月发布 1.9.5 版本后,新版本 2 的开发正在积极进行。

2.3 特点

        Pygame 使用Simple DirectMedia Layer (SDL) 库,[a]的目的是允许实时 计算机游戏开发,而无需C 编程语言及其衍生语言的低级机制。这是基于这样的假设:游戏中最昂贵的函数可以从游戏逻辑中抽象出来,从而可以使用高级编程语言(例如Python)来构建游戏。

        SDL 拥有的其他功能包括矢量数学、碰撞检测、2D 精灵场景图管理、MIDI支持、相机、像素阵列操作、转换、过滤、高级自由字体支持和绘图。

        使用 Pygame 的应用程序可以通过 Android 版 Pygame 子集 (pgs4a) 在 Android 手机和平板电脑上运行。Android 支持声音、振动、键盘和加速计。

三、pygame安装要点

        在window上使用pygame首先必须安装C语言环境,而window下的C语言环境非VC++莫属,因此,先安装一个visual studio 2019然后安装pygame:

pip install pygame

四、入门知识

4.1 初始使用

        如今游戏编程非常有价值,它也可以用于广告和教学工具。游戏开发包括数学、逻辑、物理、人工智能等等,而且它可以非常有趣。在Python中,游戏编程是在pygame中完成的,它是最好的模块之一。最简程序框架:

  1. 导入pygame.
  2. 初始化pygame.
  3. 使用pygame.display.set_mode()方法形成屏幕。
  4. 使用screen.get_size()方法获取形成的屏幕的大小。
  5. 退出pygame。
import pygame# initialize pygame
pygame.init()# Form screen
screen = pygame.display.set_mode()# get the default size
x, y = screen.get_size()# quit pygame
pygame.display.quit()# view size (width x height)
print(x, y)

        以上代码设置窗口几何尺寸,并获取窗口尺寸。 

4.2 要更改 pygame 窗口的外观

        PyGame 窗口是一个简单的窗口,在窗口屏幕上显示我们的游戏。默认情况下,pygame 使用“Pygame window”作为其标题,并使用 pygame 图标作为 pygame 窗口的徽标。我们可以使用set_caption()函数来更改名称,使用set_icon() 函数来设置窗口的图标。

1)改窗口标题
语法: pygame.display.set_caption('窗口标题')

2)更改 pygame 窗口的图标 

语法: pygame.display.set_icon(Icon_name)

        注意点:

        display是pygame窗口的一个接口,专门针对窗口外观设定而存在,所有的对窗口外观操作都使用固定格式pygame.display作为指令前缀类似的接口还有很多,本文暴露的有:

  • pygame.display
  • pygame.event
  • pygame.image

        更多接口将在后文中一一讲解。

4.3 完整窗口程序

        窗口使用的固定步骤,大致如下:

        步骤1:导入窗口对象,初始化

import pygame
pygame.init()

还可以检查模块是否安装完好,用:

# importing the library
import pygame# initializing all the imported
# pygame modules
(numpass,numfail) = pygame.init()# printing the number of modules 
# initialized successfully
print('Number of modules initialized successfully:',numpass)

        步骤2:初始化要显示的窗口。我们使用.set_mode()函数来创建一个窗口。我们将窗口的宽度和高度作为参数传递给 set_mode() 函数。

pygame.display.set_mode((窗口宽度,窗口高度))

        步骤 3:要更改 pygame 窗口的默认标题和图标,我们使用.set_caption().set_icon()函数。要更改图标,我们首先使用 pygame.image.load(“image_path”) 函数加载图标图像,然后使用 .set_icon() 更改默认图像。

pygame.display.set_caption('GeeksforGeeks')
icon = pygame.image.load('gfglogo.png')
pygame.display.set_icon(icon)

        步骤 4:保持该窗口运行,直到用户按下退出按钮。除非用户按下退出按钮,否则我们使用一个为 true 的变量。为了保持游戏运行,我们使用 while 循环并检查变量是否为真。

running  = Truewhile running:  for event in pygame.event.get():  if event.type == pygame.QUIT:  running = False

4.4 窗口对象接口示例

        对于窗口操作接口下文将出现,有外观:display.set_mode、pygame.image.load,还有事件event,get,示例代码还有:

# import pygame package 
import pygame # initializing imported module 
pygame.init() # displaying a window of height 
# 500 and width 400 
pygame.display.set_mode((400, 500)) pygame.display.set_caption('GeeksforGeeks')
icon = pygame.image.load('gfglogo.png')
pygame.display.set_icon(icon)# creating a bool value which checks 
# if game is running 
running = True# keep game running till running is true 
while running: # Check for event if user has pushed # any event in queue for event in pygame.event.get(): # if event is of type quit then  # set running bool to false if event.type == pygame.QUIT: running = False

五、隐形窗口和显性窗口

        一般来说,每个程序都有一个主应用程序,这个主应用程序可以看成隐形窗口,或叫后台窗口,这和我们看到的,可以用鼠标点击的窗口有区别,隐形窗口要比显性窗口功能强大一万倍。所有的用户交互中,显性窗口只是一个信息接收的阀门,而隐形窗口才是真正有灵魂的存在。上面看到的黑窗就是显性窗口,隐形窗口操纵显性窗口,实现强大功能。

六、结论

        好了,运行以上代码,可以初步了解pygame如何进入运行状态,更多更丰富的内容,我们将在下一篇中继续讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/682743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL-----函数篇

目录 ▶ 字符串函数 ▶ 数值函数 ▶ 日期函数 ▶ 流程函数 ▶ 简介 函数是指一段可以直接被另一段程序调用的程序或代码。 ▶ 字符串函数 函数描述实例ASCII(s)返回字符串 s 的第一个字符的 ASCII 码。 返回 CustomerName 字段第一个字母的 ASCII 码: S…

电路设计(18)——9路抢答器的设计与制作

1.设计要求 设计、制作一台9路抢答器,抢答器应符合如下工作过程: 每次抢答前,主持人首先按下复位键,将抢答器上“抢答号”数显复位,显示为“0”。接着,主持人念答题内容,念毕即叫“抢答…

炫酷3D按钮

一.预览 该样式有一种3D变换的高级感&#xff0c;大家可以合理利用这些样式到自己的按钮上 二.代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice…

Java网络编程 双向通信

目录 网络编程实例创建客户端创建服务端测试 网络编程 Java的网络编程是Java编程语言中用于实现网络通信的一组API和工具。通过Java的网络编程&#xff0c;开发人员可以在Java应用程序中实现客户端和服务器之间的通信&#xff0c;从而构建各种网络应用。 以下是Java网络编程的…

步步深入 k8s 使用 pv pvc sc 在 nfs 基础上共享存储

博客原文 文章目录 前言集群环境nfs 环境搭建pod 挂载 nfs架构图 pvc 方式挂载 nfs架构图 storageclass 方式动态申请 pv架构图 参考 前言 持久化卷&#xff08;Persistent Volume, PV&#xff09;允许用户将外部存储映射到集群&#xff0c;而持久化卷申请&#xff08;Persist…

黄金交易策略(Nerve Nnife.mql4):利用锁定单消除保留单

完整EA&#xff1a; Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客 趋势突然转变有大约30%的概率会产生一张锁定单&#xff0c;反复转变之后难免就会形成几个保留单了&#xff0c;可以选择一张与保留单同向同大小&#xff08;接近也行&#xff09;的单&#xff0c;去消除这…

半理想架构的Doherty功率放大器理论与仿真-基于GAN器件CGH40010F

半理想架构的Doherty功率放大器理论与仿真-基于GAN器件CGH40010F 理想架构的Doherty功率放大器理论与仿真中已经介绍了如何在ADS中使用理想电流源来对DPA的架构进行仿真。但是理想的电流源太理想了&#xff0c;电压、电流的许多行为都是需要自己使用数学公式去严格定义&#x…

【Python】Python代码的单元测试

Python代码的单元测试 单元测试的概念 定义&#xff1a;是指对软件中的最小可测试单元进行检查和验证。 作用&#xff1a;可以确保程序模块是否否和我们规范的输出&#xff0c;保证该模块经过修改后仍然是满足我们的需求。 单元测试的策略 如果要创建单元测试&#xff0c;…

比特币再次上演“初五破五”精彩戏法!

号外&#xff1a;2.13教链内参《随着BTC一度突破5万刀&#xff0c;超过9成持有者已盈利》 比特币无惧美通胀数据阻击&#xff0c;在短暂回落之后坚决反攻&#xff0c;在中国农历大年初五&#xff0c;2月14日情人节&#xff0c;大涨6%&#xff0c;从48k绝地反击&#xff0c;再次…

游戏服务器租用多少钱一年?

游戏服务器租用多少钱一年&#xff1f;1个月游戏服务器费用多少&#xff1f;阿里云游戏服务器26元1个月、腾讯云游戏服务器32元&#xff0c;华为云26元&#xff0c;游戏服务器配置从4核16G、4核32G、8核32G、16核64G等配置可选&#xff0c;游戏专业服务器公网带宽10M、12M、15M…

吃瓜 - 春山学

2024年春晚看似一个贵州献上的歌舞节目《上春山》&#xff08;白敬亭、魏大勋、魏晨合唱&#xff09;引发网络破案&#xff1a;白敬亭有没有抢C位和故意换衣服&#xff1f;网上的“白敬亭春晚走位风波”不断升级&#xff0c;喂到嘴里的瓜不吃也不行啊。 三人都是明侦的元老嘉…

JavaScript中的Symbol:加密与安全性

JavaScript中的Symbol是一种唯一且不可变的数据类型&#xff0c;引入了一种新的基本数据类型&#xff0c;用于表示独一无二的标识符。在本文中&#xff0c;我们将深入介绍JavaScript中的Symbol&#xff0c;讨论如何将其应用于JS加密中&#xff0c;提供案例代码&#xff0c;并说…

C#通过重写虚方法实现加、减、乘、除运算 通过多态确定人类的说话行为

目录 一、涉及到的知识点1 1.虚方法 2.重写方法 3.重写方法与重载方法的区别 4.通过KeyPressEventArgs.KeyChar限制键盘输入的内容 5.if-else if-else嵌套转换为switch case 二、 涉及到的知识点2 1.多态性 2.使用多态性的注意事项 3. 使用虚方法实现多态性 三、实…

黑马Java——集合进阶(不可变集合、Stream流、方法引用)

目录 一、不可变集合 1、创建不可变集合的应用场景 2、创建不可变集合的书写格式 2.1、不可变的List集合 2.2、不可变的Set集合 2.3、不可变的Map集合 3、小结 二、Stream流 1、体验Stream流的作用 2、Stream流的思想 3、Stream流的使用步骤 3.1、单列集合获取Strea…

站在C/C++的肩膀速通Java面向对象

默认学过C或C&#xff0c;对变量、表达式、选择、循环都会。 运行特征 解释型语言&#xff08;JavaScript、Python等&#xff09; 源文件-(平台专属解释器)->解释器中执行编译型语言&#xff08;C、Go等&#xff09; 源文件-(平台编译器)->平台可执行文件Java 源文件-(…

【白话前端】JS库的作用和常见的九种类型—值得收藏

js库就好比预制菜&#xff0c;我们想吃美食没必要从买菜、择菜、炒菜开始&#xff0c;直接加工就行。 一、什么是JS库 JS库&#xff08;JavaScript Library&#xff09;是指一组封装好的函数、方法、类等&#xff0c;用于简化开发者的编程工作。它们通常提供了常用的功能和算…

Android ·移动应用开发 创建第一个Android项目

文章目录 一、创建第一个Android项目1.1 准备好Android Studio1.2 运行程序1.3 程序结构是什么app下的结构res - 子目录&#xff08;所有图片、布局、字符串等资源&#xff09;AndroidManifest.xml 有四大组件&#xff0c;程序添加权限声明 Project下的结构 二、开发android时&…

【ArcGIS Pro二次开发】(79):符号系统_CIMUniqueValueRenderer

CIMUniqueValueRenderer是ArcGIS Pro SDK中的一个类&#xff0c;用于创建唯一值渲染器&#xff08;Unique Value Renderer&#xff09;。 在ArcGIS Pro中长这样&#xff1a; 通过对CIMUniqueValueRenderer的操作&#xff0c;可以对符号系统进行更改&#xff0c;实现很多功能。…

尚硅谷最新Node.js 学习笔记(一)

目录 一、Nodejs入门 1.1、为什么要学习Nodejs&#xff1f; 1.2、Nodejs是什么&#xff1f; 1.3、Nodejs的作用 1.4、Nodejs安装 1.5、Nodejs初体验 1.6、编码注意事项 二、Buffer&#xff08;缓冲器&#xff09; 2.1、概念 2.2、特点 2.3、使用 创建Buffer Buffe…

Cocos2dx-lua ScrollView[一]基础篇

一.ScrollView概述 cocos游戏中ScrollView控件大量使用,95%以上的项目都会使用ScrollView,个别游戏可能全部使用翻页的滑动效果。如果想要精通Cocos的UI开发,精通ScrollView控件非常关键,因此对ScrollView的使用进行总结很有必要。 下文缩写说明:sv = ScrollView, item代…