【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 完整窗口程序

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

注意:以上过程中“外观设置”用:set_mode,此函数已经生成一个窗口。

步骤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  = True

while 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如何进入运行状态,更多更丰富的内容,我们将在下一篇中继续讨论。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue_dev_tools工具下载安装打包

vue_dev_tools工具下载安装打包 一、简介二、安装方式2.1.安装图文2.2.打包工具 endl 一、简介 使用 Vue 时,在浏览器上安装 Vue Devtools Vue Devtools 是 Vue 官方发布的调试浏览器插件,可以安装在 Chrome 和 Firefox 等浏览器上,直接内嵌…

C++ STL: list使用及源码剖析

list使用 list常用函数及使用&#xff08;1&#xff09; #include <iostream> #include <list> #include <algorithm>int main() {// 创建liststd::list<int> myList {5, 2, 9, 1, 5, 6};// 打印liststd::cout << "Original list: &quo…

2024年2月份实时获取地图边界数据方法,省市区县街道多级联动【附实时geoJson数据下载】

首先&#xff0c;来看下效果图 在线体验地址&#xff1a;https://geojson.hxkj.vip&#xff0c;并提供实时geoJson数据文件下载 可下载的数据包含省级geojson行政边界数据、市级geojson行政边界数据、区/县级geojson行政边界数据、省市区县街道行政编码四级联动数据&#xff0…

Sentinel 流控-链路模式

链路模式 A B C 三个服务 A 调用 C B 调用 C C 设置流控 ->链路模式 -> 入口资源是 A A、B 服务 package com.learning.springcloud.order.controller;import com.learning.springcloud.order.service.BaseService; import org.springframework.beans.factory.annotatio…

代码随想录算法训练营29期|day51 任务以及具体安排

第九章 动态规划part08 139.单词拆分 class Solution {public boolean wordBreak(String s, List<String> wordDict) {HashSet<String> set new HashSet<>(wordDict);boolean[] valid new boolean[s.length() 1];valid[0] true;for (int i 1; i < s.…

unity的重中之重:组件

检查器&#xff08;Hierarchy&#xff09;面板中的所有东西都是组件。日后多数工作都是和组件打交道&#xff0c;包括调参、自定义脚本组件。 文章目录 12 游戏的灵魂&#xff0c;脚本组件13 玩转脚本组件14 尽职的一生&#xff0c;了解组件的生命周期15 不能插队&#xff01;…

Solidworks:油泵体设计

做一个更复杂的作业&#xff0c;油泵体设计。感觉Solidworks还是用的不熟&#xff0c;分了半天劲才做出来。 先上课本上的插图&#xff1a; 我的作业和课本差不多吧&#xff01; 再来个背面的照片&#xff1a; 课本提供了两种剖面展示的方法&#xff1a; 现在我也轻车熟路…

error An unexpected error occurred: “https://registry.npm.taobao.org

背景&#xff1a; 想使用yarn命令结果报错 问题原因&#xff1a; 原来证书到期了 http://registry.npm.taobao.org/ 把这个放到浏览器搜索的时候自动换成https://registry.npmmirror.com/ 方案&#xff1a; npm cache clean --forcenpm config set registry https://registry…

C++ new 和 malloc 的区别?

相关系列文章 C new 和 malloc 的区别&#xff1f; C内存分配策略​​​​​​​ 目录 1.引言 2.区别 2.1.申请的内存分配区域 2.2.类型安全和自动大小计算 2.3.构造函数和析构函数的调用 2.4.异常处理 2.5.配对简便性 2.6.new 的重载 2.7.关键字和操作符 3.总结 1.引…

考研高数(导数的定义)

总结&#xff1a; 导数的本质就是极限。 函数在某点可导就必连续&#xff0c;连续就有极限且等于该点的函数值。 例题1&#xff1a;&#xff08;归结原则的条件是函数可导&#xff09; 例题2&#xff1a; 例题3&#xff1a;

简单工厂模式-Simple Factory Pattern

原文地址:https://jaune162.blog/design-pattern/simple-factory-pattern/ 简介 简单工厂模式是一种非常常用的设计模式,但是并不属于GoF中的23种设计模式。简单设计模式有很多种实现方式。 本文我们就来讨论简单工厂模式的实现方式,以及如何借助Spring实现一个扩展性很好…

手撕链表OJ

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

揭秘 2024 春晚刘谦魔术——代码还原

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、魔术大概流程 二、代码实现各个步骤 2.1 partition&#xff08;对半撕牌&#xff09; 2.2 bottom&#xff08;将 n 张牌置底…

【Linux】环境变量及相关指令

一、环境变量的基本概念 其实&#xff0c;我们早就听说过环境变量&#xff0c;比如在学习 JAVA / Python 的时候&#xff0c;会在 Windows 上配置环境变量&#xff1a; 环境变量到底是什么呢&#xff1f; 环境变量&#xff08;environment variables&#xff09;一般是指在操作…

C++ //练习 7.3 修改7.1.1节(第229页)的交易处理程序,令其使用这些成员。

C Primer&#xff08;第5版&#xff09; 练习 7.3 练习 7.3 修改7.1.1节&#xff08;第229页&#xff09;的交易处理程序&#xff0c;令其使用这些成员。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /********************…

CCF编程能力等级认证GESP—C++2级—20231209

CCF编程能力等级认证GESP—C2级—20231209 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;判断题&#xff08;每题 2 分&#xff0c;共 20 分&#xff09;编程题 (每题 25 分&#xff0c;共 50 分)小杨做题小杨的 H 字矩阵 参考答案单选题判断题编程题1编程题2 …

【Apache Superset】从概述、安装到运用,一篇掌握!

文章目录 什么是 Superset&#xff1f;Superset 的优势安装安装 Anaconda 包管理工具创建 Superset 的 Python 环境 下载 Superset 依赖更新工具安装 Superset配置 MySQL 元数据库初始化 Superset 数据库报错一报错二报错三数据库初始化完成 初始化 Superset报错一警告信息 启动…

【解决(几乎)任何机器学习问题】:超参数优化篇(超详细)

这篇文章相当长&#xff0c;您可以添加至收藏夹&#xff0c;以便在后续有空时候悠闲地阅读。 有了优秀的模型&#xff0c;就有了优化超参数以获得最佳得分模型的难题。那么&#xff0c;什么是超参数优化呢&#xff1f;假设您的机器学习项⽬有⼀个简单的流程。有⼀个数据集&…

【算法设计与分析】反转链表 ||

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表…

【MySQL】外键约束的删除和更新总结

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-7niJLSFaPo0wso60 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…