【Pygame 学习笔记】1.初步搭建Pygame框架

2023-11-16

欢迎来到Pygame学习笔记专栏,这是专栏的第一篇文章,从这篇文章开始,我们将深入地学习Pygame!


今天,我们来学习如何搭建Pygame框架,我们使用类和对象的方式,这样代码更有条理,更容易规划!

首先导入模块,我们需要pygame,还要pygame中的一些常量,也就是pygame.locals,sys用于退出程序

import pygame
from pygame.locals import *
import sys

定义一个类Game,用W和H存储宽高数据,为什么要用变量呢?因为我们设计一款游戏的时候难免要更改一些参数,比如窗口大小等等,如果我们使用绝对坐标的话,改变窗口大小后,很多东西都要重新去调整,这样调试的时候,就更麻烦,代码也会更繁琐,我们用变量存储,可以使用相对的坐标,通过这些存储于变量的数据进行计算,即使改变这些参数,也能自动地调整好,不管写什么代码,都要养成这样的好习惯!

class Game:
    def __init__(self):
        pygame.init()
        self.W,self.H=800,800
        self.screen=pygame.display.set_mode((self.W,self.H))

顺着条理,我们还需要一个用于监听事件的函数,这样在按下鼠标、键盘、退出窗口等等操作就可以通过这个函数进行捕捉哦!通过pygame.event.get函数捕捉到事件,然后遍历,如果它的类型QUIT,也就是退出窗口,那就结束程序

    def listen(self):
        for event in pygame.event.get():
            if event.type==QUIT:
                sys.exit()

定义一个draw函数,用于绘制物体,在我们第一个学习笔记中,我们不需要绘制任何内容,只需要搭建框架,就用pass代替

    def draw(self):
        pass

最后,我们需要一个主循环,也就是不断调用listen事件监听和绘制函数,并刷新屏幕,刷新屏幕用pygame.display.update函数

    def run(self):
        while True:
            self.listen()
            self.draw()
            pygame.display.update()

实例化Game,运行程序

if __name__ == '__main__':
    game=Game()
    game.run()

最终代码

import pygame
from pygame.locals import *
import sys

class Game:
    def __init__(self):
        pygame.init()
        self.W,self.H=800,800
        self.screen=pygame.display.set_mode((self.W,self.H))

    def listen(self):
        for event in pygame.event.get():
            if event.type==QUIT:
                sys.exit()

    def draw(self):
        pass

    def run(self):
        while True:
            self.listen()
            self.draw()
            pygame.display.update()

if __name__ == '__main__':
    game=Game()
    game.run()

这样就有一个窗口啦!

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Pygame 学习笔记】1.初步搭建Pygame框架 的相关文章

随机推荐

  • 本地 Django 部署 Heroku的时候某个 / 某些数据库显示总是无法创建成功 relation “nnsh_backend_new_userinfo“ does not exist LINE

    文章目录 情景 原因 操作 手动 自动 情景 假设你有一个项目 A 你之前部署了项目 A 里面包含了两个数据库的表 table1 和 table2 他们都顺利部署 然后你相加一些功能 于是又创建了一张表 table3 于是再部署的时候发现
  • glBindFragDataLocation

    异构计算GLSL学习笔记 1 原文地址 http blog csdn net hjimce article details 51475644 作者 hjimce 最近开始学习深度学习的一些gpu编程 大体学了cuda后 感觉要在手机上跑深度
  • python-查看帮助

    help 一 不同的环境下 1 交互模式下 命令行 查看模块的帮助信息 import pickle help pickle 可以看到详细信息 More 上回车 滚动信息 q 退出帮助 2 ide里 需要做一个输出 import pickle
  • unity基础编程(一)

    以此来记录系统学习使用unity的知识方便以后复习使用 如果能得到监督和指导 不胜感激 unity常用使用快捷键 1 Q 抓手工具 W 移动工具 E 旋转工具 R 缩放工具 T 横切面工具 就在键盘一排试一试就会很清楚了 2 Z 轴点模式切
  • 自动在图片上添加页码

    在一次工作中 需要对几百GB的图片文件添加页码 也就是在图片添加一定的流水号 那么 在图片上添加页码 总的需要四个步骤 1 图片重命名 批量修改原图片名 设置流水号作为图片文件名 如 0001 gt 0036 2 添加页码 通iSee软件批
  • Docker赋能物联网:探索软件供应链的优势、挑战和安全性

    作者 JFrog大中华区总经理董任远 随着联网设备硬件性能的日益提升及价格愈发低廉 物联网应用的复杂性随之提升 常用的容器化平台Docker能够帮助精简流程 助力开发人员更轻松地创建和维护物联网应用 本文将探讨Docker为物联网开发带来的
  • 最大熵原理

    最近看到一位高手 说了最大熵原理应用在排名 让我倍感发抖 网上有个人连研究基本步骤都写完了 着实让蛋疼了一小下 就引用一下吧 最大熵原理在1957 年由E T Jaynes 提出的 主要思想是 在只掌握关于未知分布的部分知识时 应该选取符合
  • 第1.2章 神经网络中隐藏层、偏置单元、激活函数的作用(使用激活函数的原因)

    神经网络中隐藏层 偏置单元 激活函数的作用 隐藏层 偏置单元 激活函数 权重 摘要 这篇文章主要是对上一篇文章中所给例题中部分知识点的讲解 较多的参考了网上其他朋友的资料 主要是供大家学习和自己以后查看资料方便 如有侵权 请告知 我会及时修
  • git 回滚

    1 没有push 这种情况发生在你的本地代码仓库 可能你add commit 以后发现代码有点问题 准备取消提交 用到下面命令 reset git reset soft mixed hard 上面常见三种类型 mixed 会保留源码 只是将
  • C语言函数大全-- r 开头的函数

    r 开头的函数 1 raise 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 rand 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 read 3 1 函数说明 3 2 演示示例 3 3 运行结果 4 realloc
  • DFS 刷题记录(laptop part)(2022.2.10)

    namespace matchstick my int isDividedby4 vector
  • 树的遍历(bfs)

    题目链接 https www acwing com problem content 1499 题目 一个二叉树 树中每个节点的权值互不相同 现在给出它的后序遍历和中序遍历 请你输出它的层序遍历 输入格式 第一行包含整数 N N N 表示二叉
  • 初识操作系统

    初识操作系统 1 硬件组成 冯诺依曼体系结构 2 操作系统 Operator System 概念 OS定位 设计OS的目的 3 进程 进程的初步认识 时间片 并发与并行 内核态与用户态 进程中的上下文 进程状态 进程 线程小结 进程小结 线
  • Gitee使用

    文章目录 前言 一 Gitee简介 二 使用Gitee 1 创建仓库 2 上传代码 3 团队协作 4 Issue管理 5 CI CD集成 6 社交化 结语 前言 开源软件开发是当今互联网时代的一项重要活动 在开源社区 有许多平台可以帮助开发
  • 多核编程学习笔记之OpenMP(一)

    多核编程学习笔记之OpenMP 一 I 配置及简介 1 1 在VC 2008 VC9 0 中 如果没有任何设置 在代码中使用编译指导语句将不会报错 但是也不起作用 1 2 OpenMP发展与优势 1 2 1 OpemMP的规范由SGI发起
  • 天刀论剑显示服务器,天涯明月刀天刀论剑怎么进入_天涯明月刀天刀论剑进入方法_快吧游戏...

    天涯明月刀论剑系统已经在昨天正式开放了 估计不少小伙伴已经体验到了这个玩法 论剑论剑 其实说白了就是竞技场系统 目前天刀中的竞技场暂时只有1V1的模式 作为试开放的一个系统 昨天不少地方让玩家们纷纷表示太过坑爹 下面就跟随小编一起 欢乐的来
  • Access-Control-Allow-Origin header contains multiple values ‘http://xx, *‘, but only one is allowed

    SpringBoot Access to XMLHttpRequest at http xx from origin http xx has been blocked by CORS policy The Access Control Al
  • 连接Windows服务器出现Credssp错误的解决方法

    连接Windows服务器出现Credssp错误的解决方法 问题描述 在使用远程桌面连接登录Windows系统的服务器时 提示以下信息 经过排查 确认用户名和密码都没问题 重置密码也无法登录 热门活动 2020年阿里云双12爆款拼团特惠活动
  • Matlab任意正六边形随机撒点 实现-----------通信仿真必备

    任意正六边形随机撒点 是通信仿真里经常用到的 无奈网上资料很少 参照http www ilovematlab cn thread 136761 1 1 html 我又苦思敏想里一下午 这个问题才得以完美解决 废话不多说了 先来看看怎么画正六
  • 【Pygame 学习笔记】1.初步搭建Pygame框架

    欢迎来到Pygame学习笔记专栏 这是专栏的第一篇文章 从这篇文章开始 我们将深入地学习Pygame 今天 我们来学习如何搭建Pygame框架 我们使用类和对象的方式 这样代码更有条理 更容易规划 首先导入模块 我们需要pygame 还要p