如何用python来做小游戏

作者:你才是向阳花日期:2025/10/21

本文重点内容:pygame

前情准备:我们需要安装好python,没有安装?传送门➡️

https://blog.csdn.net/weixin%5F54714100/article/details/152517550

如果我们安装成功了python,那么我们就可以用【pip】指令完成pygame的安装

1pip install pygame  // Windows
2
3pip3 install pygame  // macOs

一个简单的小游戏:

绘制一个小球,通过方向键控制小球的移动,并使它不超过画布边界。

先来展示一下代码,下面会有一些知识点补充解释:

1import pygame
2import sys
3
4# 初始化 Pygame
5pygame.init()
6
7# 设置窗口大小
8WIDTH, HEIGHT = 800, 600
9screen = pygame.display.set_mode((WIDTH, HEIGHT))
10pygame.display.set_caption("控制小球移动")  # 设置标题
11
12# 颜色定义
13WHITE = (255, 255, 255)
14RED = (255, 0, 0)
15
16# 小球属性
17ball_radius = 30  # 小球的半径
18ball_x = WIDTH // 2  # ball_x是指小球圆心的位置x坐标,两个斜杠是整除的意思,见下方解释【1】
19ball_y = HEIGHT // 2  # ball_y是指小球圆心的位置y坐标
20ball_speed = 5  # 小球的移动速度
21
22# 游戏主循环 while循环,见下方解释【3】
23running = True
24while running:
25    screen.fill(WHITE)  # 填充背景色
26
27    # 绘制小球 pygame.draw.circle 见下方解释【2】
28    pygame.draw.circle(screen, RED, (ball_x, ball_y), ball_radius)
29
30    # 更新画面
31    pygame.display.flip()
32
33    # 处理事件 for循环,见下方解释【3】
34    for event in pygame.event.get():
35        if event.type == pygame.QUIT:
36            running = False
37
38    # 获取按键状态
39    keys = pygame.key.get_pressed()
40    if keys[pygame.K_LEFT]:
41        ball_x -= ball_speed # ball_x是指小球的位置x坐标 -= +=运算,见下方解释【4】
42    if keys[pygame.K_RIGHT]:
43        ball_x += ball_speed
44    if keys[pygame.K_UP]:
45        ball_y -= ball_speed # ball_y是指小球的位置y坐标
46    if keys[pygame.K_DOWN]:
47        ball_y += ball_speed
48
49    # 防止小球出界,读代码:如果小球的圆心x坐标减去半径,也就是最左边小于0的话,
50    # 就把横坐标重置到半径位置,确保小球能够完全展示在画面里,
51    # 其余语句同理,可以自己理解一下
52    if ball_x - ball_radius < 0:
53        ball_x = ball_radius
54    if ball_x + ball_radius > WIDTH:
55        ball_x = WIDTH - ball_radius
56    if ball_y - ball_radius < 0:
57        ball_y = ball_radius
58    if ball_y + ball_radius > HEIGHT:
59        ball_y = HEIGHT - ball_radius
60
61# 退出 Pygame
62pygame.quit()
63sys.exit()

引入pygame,import就是引入的意思

import sys

sys是什么?

指路:https://blog.csdn.net/weixin%5F54714100/article/details/153315741

代码解释:

按照注释其实能够对代码有一个比较清晰的了解。

1. // 作为整数除法运算符(//)用于执行地板除运算,返回商的整数部分

举个例子:WIDTH // 2,WIDTH的值是800,也就是 800 // 2,可以整除,运算结果就是400,

如果是801 // 2,结果等于400余1,舍去余数,得400。

如果是809 // 10,结果等于80余9,同样舍弃余数,得80。

这就是【地板】的意思 floor,取下面的值,向下取整。

2. pygame.draw.circle(screen, color, center, radius)

其中,参数surface指的是要画圆的Surface对象;

color指定了圆的颜色(由参数width决定该颜色是画圆的线的颜色还是填充色),该参数的类型是Color类或者表示颜色的元组;

center指定了圆心的位置,其类型是Vector2类或者表示位置的元组或列表;

radius表示圆的半径,该参数的类型是整型或者浮点型,如果该参数的值小于1,则不进行画圆的动作。

circle()函数的返回值是Rect类型的变量,表示画出的圆的范围。

3. 循环:

while循环:

解释,当 while后面的这个结果是【true】时,就会执行循环体,否则的话就跳出循环。

对应到代码里就是:先定义一个值为true的变量【running】,当running为true的时候就一直循环让小球操控运动,直到running变成【false】时,就结束了。

for循环:

让【event】在所有键盘动作【pygame.event.get()】里循环,执行循环体,遍历完所有的按键动作之后,循环结束。

循环检测按下键盘的动作,如果是【退出游戏】,就把running改成【false】结束主循环。

4. -= 运算符

举个例子:

a = 6

a -= 2 意思就是 a = a - 2, 是这行代码的简化写法

经过运算之后得到 a = 4

+= 运算符

举个例子:

b = 6

b += 2 意思就是 b = b + 2, 是这行代码的简化写法

经过运算之后得到 b = 8


如何用python来做小游戏》 是转载文章,点击查看原文


相关推荐


Endnote | word中加载项消失不见,如何处理?
跳动的喵尾巴2025/10/20

Endnote | word中加载项消失不见的几种问题及处理方法 一、Endnote在word中不出现的报错内容1.1 报错问题及安装版本1.2 问题分析1.2.1 EndNote 未重新安装1.2.2 Endnote.oxt 文件不是 Word 可识别格式1.2.3 Word 插件目录错误或损坏 二、解决方案2.1 重新安装 EndNote(最彻底)2.2 安装Endnote,在Word工具栏中未出现2.3 笔者遇到的问题——系统重装,Endnote未重新安装,在Word工具栏中未


申威(sw_64)架构下如何安装java-1.8.0-swjdk的rpm包?​
用户31187945592182025/10/18

​ 专门为申威(sw_64)架构的电脑打造的Java 8运行环境。 ​1. 下载文件​ 安装包下载:pan.quark.cn/s/936281541… ,确保你已经下载了 java-1.8.0-swjdk-8u212-8.ky10.sw_64.rpm,并记住它放在哪个文件夹里(比如“下载”)。 ​2. 打开终端​ 按 Ctrl + Alt + T打开终端,进入你放文件的目录: cd ~/下载 # 如果放在“下载”文件夹 ​3. 安装 RPM 包​ 运行安装命令(需要输入密码): sudo


SpringCloud系列(52)--SpringCloud Sleuth简介
Ken_11152025/10/17

前言:在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败,所以我们需要一种技术来对链路的调用进行监控 1、SpringCloud Sleuth SpringCloud Sleuth提供了—套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并且兼容支持了zipkin(SpringCloud Sleuth负责收集链路调用


【visibilitychange】:获取当前页面可见性,深入解析,提升网页性能与用户体验的关键事件
❆VE❆2025/10/16

目录 第一章 前言 第二章 visibilitychange 事件简介 第三章 触发visibilitychange变更的情况 第四章 应用场景 4.1 优化资源加载 4.2 节省服务器资源 4.3 改善用户体验 第五章 实现细节 5.1 兼容性 5.2 性能优化 第六章 典例 第七章 总结 第一章 前言 在现代网页开发中,提升用户体验和优化性能是至关重要的目标。visibilitychange事件作为浏览器提供的一个强大工具,能够帮助开发者实现这些目标。小编


opentype.js 使用与文字渲染
明远湖之鱼2025/10/14

笔者在某个需求实现中使用了 opentype.js 这个库,现将一些使用过程记录在本篇文章中。 opentype.js 是一个 JavaScript 库,支持浏览器和 Node.js,可以解析字体文件,拿到字体信息,并提供一些渲染方法。 虽然名字叫做 opentype.js,但除了可以解析 OpenType,也可以解析 TrueType。 支持常见的字体类型,比如 WOFF, OTF, TTF,像是 AutoCAD 的 shx 就不支持了。 需要注意的是,woff2 字体是用 Brotli 压


Redis(58)如何配置和查看Redis的慢查询日志?
Victor3562025/10/13

Redis 提供了慢查询日志功能,用于记录执行时间超过指定阈值的命令。这有助于识别和优化性能瓶颈。下面详细介绍如何配置和查看 Redis 的慢查询日志,并结合使用 Java 和 Jedis 进行示例演示。 配置慢查询日志 配置 Redis 的慢查询日志可以通过编辑 redis.conf 文件,或者在运行时使用 CONFIG SET 命令。 在 redis.conf 文件中配置 打开 redis.conf 文件,找到并设置以下参数: slowlog-log-slower-than 10000 #


走进 OpenCV 人脸识别的世界
过往入尘土2025/10/11

引言:走进 OpenCV 人脸识别的世界 在当今数字化时代,人脸识别技术作为生物特征识别领域的关键技术之一,正以前所未有的速度融入人们的生活,展现出巨大的应用潜力与价值。它通过计算机视觉技术对人脸图像或视频中的人脸特征进行提取、分析和比对,从而实现身份识别、验证等功能,广泛应用于安防监控、金融支付、门禁系统、智能交通、社交媒体等诸多领域,为人们的生活和工作带来了极大的便利与安全保障。 在安防监控领域,人脸识别技术可实时监测人员出入情况,对潜在的安全威胁进行预警。例如,在机场、火车站等交通枢纽


AI辅助制作宣传视频
Enabler_Rx2025/10/10

首先写好文字稿子,然后用google gemini模型生成音频。可以选择很多种人声,我选择了language English(US)和callirrhoe的发声,模型文生音频链接: https://cloud.google.com/text-to-speech?hl=zh-CN 然后下载音频文件 使用Microsoft Clipchamp打开音频文件,插入图像内容,可以调节音频速度,加入字幕等 然后导出生成文件 完成!


前端必看!12个JS神级简写技巧,代码效率直接飙升80%,告别加班!
刘大华2025/10/8

前言 哈喽大家好,我是大华。 在日常开发中,我们经常会遇到一些重复、冗长的代码。写起来费劲,读起来费神,维护起来更是头疼。而且代码越复杂,性能可能越受影响。 那有没有办法让代码更简洁、清晰又高效呢? JavaScript提供了许多现代语法特性,合理使用这些简写技巧,不仅能大幅减少代码量,还能提升可读性和执行效率。 很多资深前端都在用,这篇文章整理了 12 个最实用的 JS 简写技巧,并结合实际场景进行优化和补充,帮助你写出更优雅的代码。 1. 短路运算符:替代简单的 if 判断 以前我们这样写


【玩泰山派】4、制作ubuntu镜像-(5)总结制作ubuntu22.04镜像+5.10内核流程
风为你而吹2025/10/7

文章目录 前言rk镜像概念rk镜像构成生成sd卡镜像 制作根文件系统流程概述文件概述执行流程执行./mk-base-debian.sh执行mk-buster-rootfs.sh执行./mk-image.sh 总结 使用docker容器基于鲁班猫的仓库制作泰山派的ubuntu22.04根文件系统前言流程制作docker镜像启动docker容器进入容器进入容器后执行step1.准备step2.构建基础 Ubuntu 系统。step3.添加 rk overlay 层,并打包ubuntu

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0