Python新手上路:“用Python和Pygame创造你的流星雨”

news2025/1/15 17:12:02

文章目录

  • 一、前言
  • 二、下载安装过程
    • 1.官网下载安装包
    • 2.安装python过程
      • 第一步
      • 第二步
      • 第三步
      • 第四步
      • 第五步
      • 安装完成
    • 3.简单测试Python
      • 3.1 检查 Python 版本号
      • 3.2 打开 Python 解释器
      • 3.3 输入你的第一个代码
      • 3.4 运行 Python 脚本
    • 4.安装Pygame
      • 4.1 cmd命令安装Pygame
      • 4.2 pip升级
      • 4.3 安装PythonTurtle模块
  • 三、实现流星雨
    • 1.编写python程序
    • 2.运行python程序
      • 2.1 通过cmd命令运行
      • 2.2 直接双击python文件运行
    • 2.图片效果
    • 3.动图效果
  • 四、总结


一、前言

最近,我开始关注一位专注于Python编程的博主。她的技术实力和创造力深深地吸引了我,尤其是她编写的“Python流星雨”效果,简直令人叹为观止。那些流动的字符和色彩,宛如编程世界中的一场视觉盛宴,让我对Python编程产生了浓厚的兴趣。

受到她的启发,我也想亲自尝试一下Python编程。毕竟,Python不仅是一门强大且易学的编程语言,还是数据科学、人工智能等领域的重要工具。而且,通过编程,我可以创造出属于自己的独特项目,甚至可能开发出有趣的应用或游戏。

为了实现这个目标,我计划先下载并安装Python,这是运行Python代码的必要环境。

下面是Python下载与安装的全部过程以及实现流星雨的源码。


二、下载安装过程

1.官网下载安装包

从Python官网下载安装包,点击Downloads–>Windows(具体看你自己是Windows还是macOS之类的)

在这里插入图片描述
这里你需要知道你的电脑是64位还是32位的电脑,不清楚的可以去电脑设置–>系统–>关于去查询。

这里我下载的是Stable Releases(稳定发布的版本),右边的Pre-releases(预发布的版本,不一定稳定)。

在这里插入图片描述
电脑位数查询:

在这里插入图片描述

下载完成就是一个python-3.12.1-amd64.exe的应用程序。下面是安装过程。

在这里插入图片描述

2.安装python过程

第一步

双击python-3.12.1-amd64.exe应用程序开始安装,弹出的第一个界面需要你勾选下面两个选项。

  1. Use admin privileges when installing py.exe:安装py.exe时使用管理员权限,这样你就可以在执行程序或命令时,可以更改系统设置或注册表。否则,您只能以普通用户的身份进行读取操作,而没有修改权限,从而无法完成更改操作。
  2. Add python.exe to PATH:将python.exe添加到PATH,也就是把python的路径添加到PATH环境变量中。如果你这里不勾选,后续你需要自己添加环境变量比较麻烦。

然后Install Now是立刻安装,默认路径,这里我是选择下面的Customize installation 自定义安装。

在这里插入图片描述

第二步

接下来会出现这个,这里我就默认全部安装了,然后点击Next下一步。

以下是可选功能的介绍:

  1. Documentation:安装Python文档文件
  2. pip:pip是Python的包管理器,用于安装和管理Python软件包。通过pip,用户可以从Python软件包索引(PyPI)下载和安装第三方软件包,以及管理已安装的包版本。pip的安装和使用非常方便,可以大大简化Python开发过程中的依赖管理任务。
  3. tcl/tk and IDLE:Tkinter(简称Tk)是Python自带的GUI编程库,在安装Python时通常会自动安装。它通常用于创建简单的桌面应用程序和图形用户界面(GUI)。而IDLE是Python自带的集成开发环境(IDE),它提供了许多有用的功能,如代码编辑器、调试器、交互式shell等,是Python初学者常用的工具之一。在安装Python时,如果选择安装“tkinter”和“IDLE”,它们将与Python一起安装,以便在Python开发过程中使用。
  4. Python test suite:Python 测试套件,指的是一组用于测试 Python 编程语言及其标准库的测试案例集合。它包含了大量的单元测试、集成测试和功能测试,用于验证 Python 解释器的正确性以及标准库中各个模块的功能是否正常。
  5. py launcher:是一个用于在 Windows 系统上运行多个 Python 版本的工具,它可以帮助用户快速切换不同版本的 Python 解释器,并且可以方便地运行 Python 脚本。

在这里插入图片描述

第三步

这里本来的路径是C盘,我不想直接安装在C盘,手动修改为E盘。其他默认,最后点击管理员模式安装Install。这里因为用户名是中文名,后续安装pygame老是失败,我就直接安装在虚拟机里面了。

在这里插入图片描述

第四步

它会弹出一个管理员确认,然后就进行到Installing过程,等待安装完成即可。

在这里插入图片描述

第五步

安装完成,关闭这个界面。

在这里插入图片描述

安装完成

安装成功会发现多出来这几个东西。

在这里插入图片描述

3.简单测试Python

安装完 Python 后,您可以通过W+R打开cmd命令进行简单的测试指令来验证 Python 是否成功安装并运行正常:

3.1 检查 Python 版本号

  1. python --version
    在这里插入图片描述

3.2 打开 Python 解释器

  1. python(该命令将打开 Python 解释器,您可以在其中输入 Python 代码并立即执行。)
    在这里插入图片描述

3.3 输入你的第一个代码

  1. print(“Hello, World!”)
    在这里插入图片描述

3.4 运行 Python 脚本

  1. 输入# script.py (换行)print(“Hello, World!”)
    解释器将输出 “Hello, World!”。
    在这里插入图片描述

确认验证 Python 已经成功安装并运行正常。

4.安装Pygame

Pygame是一个强大且易于使用的Python游戏开发库。它为开发者提供了许多用于创建2D游戏的工具和功能,包括图像、声音、事件处理和碰撞检测等。Pygame的跨平台特性也使得开发者能够轻松地将游戏部署到多个操作系统上。除此之外,Pygame还拥有活跃的社区和丰富的资源,为开发者提供了支持和帮助。这些因素共同使得Pygame成为了一个非常适合初学者和专业开发者的游戏开发库。

4.1 cmd命令安装Pygame

我这边采用最简单的方式:通过pip直接安装。
(也可以通过官网下载安装文件安装,这边就不介绍了)

通过W+R打开cmd命令然后输入:pip install pygame (回车)

在这里插入图片描述

等待安装完成。
在这里插入图片描述

4.2 pip升级

这个提示意味着有一个新版本的 pip 可用,并建议您升级到新版本。我直接升级到最新版本:python.exe -m pip install --upgrade pip
在这里插入图片描述

4.3 安装PythonTurtle模块

PythonTurtle是一个基于Python语言的图形库,它基于turtle模块,提供了一种简单而直观的方式来学习和实现绘图。

PythonTurtle模块可以帮助你创建一个画布窗口,并提供了一系列的函数和方法来控制一个海龟(turtle),让它在画布上移动、旋转和绘制各种图形。

你可以通过以下命令来安装PythonTurtle模块:
在这里插入图片描述

三、实现流星雨

1.编写python程序

验证Pygame是否成功安装,我参考网上的例程编写一个python流星雨程序来验证。用Notepad++文件创建一个Python文件,命名为test.py,并将以下代码复制到文件中:

import math # 导入math模块(数学函数)
import turtle as tu # 导入turtle 库(绘制基本的图形、动画)
import random as ra # 导入random 库(生成随机数)

tu.setup(1.0, 1.0) # 用于设置窗口的大小
tu.screensize(1.0, 1.0) # 用于设置画布的大小
tu.bgcolor('black')  # 设置画布颜色 黑色
t = tu.Pen()  # 创建一个 Pen 对象(一支画笔),用于绘制图形。
t.ht()  # 隐藏画笔

colors3 = ['purple', 'white', 'cyan', 'pink', 'yellow', 'blue']  # 流星的颜色列表

class Star():  # 定义流星类
    def __init__(self):
        self.x3 = ra.randint(-1500, 1000)  # 流星的横坐标
        self.y3 = ra.randint(-500, 500)  # 流星的纵坐标
        self.r3 = ra.randint(50, 100)  # 流星的半径
        self.t = ra.randint(1, 3)  # 流星的旋转角度
        self.speed3 = ra.randint(1, 5)  # 流星的移动速度
        self.color3 = ra.choice(colors3)  # 流星的颜色

    def star2(self):  # 绘制流星函数
        t.pensize(1)  # 流星的大小
        t.penup()  # 提笔
        t.goto(self.x3, self.y3)  # 移动到流星起始位置
        t.pendown()  # 落笔
        t.color(self.color3) # 设置画笔的颜色
        t.begin_fill() # 开始填充颜色
        t.fillcolor(self.color3) # 设置填充的颜色
        t.setheading(-30) # 将角度设置为 -30 度,也就是使其向右倾斜一定角度
        t.right(self.t) # 调整流星的倾斜角度
        t.forward(self.r3) # 向前移动一定距离,距离为 self.r3,也就是流星的长度
        t.left(self.t) # 调整流星末尾的倾斜角度。
        t.circle(self.r3 * math.sin(math.radians(self.t)), 180)  # 绘制流星头部
        t.left(self.t) # 调整流星末尾的倾斜角度
        t.forward(self.r3) # 向前移动一定距离,距离为 self.r3,也就是流星的长度
        t.end_fill() # 结束填充颜色

    def move(self):  # 移动函数,控制流星的运动
        if self.y3 >= -500:  # 当流星还在画布中时
            self.y3 -= self.speed3  # 设置流星的上下移动速度
            self.x3 += 2 * self.speed3  # 设置流星的左右移动速度
        else:  # 当流星超出画布范围时,重置流星的属性
            self.r3 = ra.randint(50, 100)  # 随机生成流星的半径
            self.t = ra.randint(1, 3)  # 随机生成流星的旋转角度
            self.x3 = ra.randint(-1500, -750)  # 随机生成流星的横坐标
            self.y3 = ra.randint(-500, 1000)  # 随机生成流星的纵坐标
            self.speed3 = ra.randint(1, 5)  # 随机生成流星的移动速度
            self.color3 = ra.choice(colors3)  # 随机生成流星的颜色

Stars = []  # 用列表保存所有流星
for i in range(50):
    Stars.append(Star())  # 创建50个流星对象,并添加到列表中

while True:  # 开始绘制
    tu.tracer(0)  # 关闭动画效果
    t.clear()  # 清空画布内容
    for i in range(50):  # 绘制50个流星
        Stars[i].move()  # 移动流星
        Stars[i].star2()  # 绘制流星
    tu.update()  # 更新画布
tu.mainloop()   # 运行主循环,程序将在这里一直运行,直到手动关闭程序窗口

2.运行python程序

2.1 通过cmd命令运行

在这里插入图片描述

2.2 直接双击python文件运行

在这里插入图片描述

2.图片效果

在这里插入图片描述

3.动图效果

这里的动图不是python转换的,而是我用FastStone Capture录屏软件录制的视频转换成的gif动图。

在这里插入图片描述


四、总结

从我第一次尝试制作Python流星雨项目开始,虽然我对Python的Turtle库还不是很熟悉,也不清楚如何将结果转化为GIF动图,但这确实标志着我开始学习Python的起点。我渴望使用Python绘制出只属于我自己的节日祝福。

下篇讲一下PyCharm的安装以及pyinstaller打包python文件。

感谢你的观看,谢谢!

在这里插入图片描述

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

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

相关文章

所有逐个位置相加的方法

989. 【加法模板】秒杀所有逐位相加 参考教程

python学习14

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

桥接模式-举例

概叙:桥接模式用一种巧妙的方式处理多层继承存在的问题, 用抽象关联取代了传统的多层继承, 将类之间的静态继承关系转换为动态的对象组合关系, 使得系统更加灵活,并易于扩展, 同时有效控制了系统中类的个数…

使用pytorch搭建ResNet并基于迁移学习训练

这里的迁移学习方法是载入预训练权重的方法 net resnet34()# load pretrain weights# download url: https://download.pytorch.org/models/resnet34-333f7ec4.pthmodel_weight_path "./resnet34-pre.pth"assert os.path.exists(model_weight_path), "file {}…

Keras多分类鸢尾花DEMO

完整的一个小demo: pandas1.2.4 numpy1.19.2 python3.9.2 import numpy as np import pandas as pd import matplotlib.pyplot as plt from pandas import DataFrame from scipy.io import loadmat from sklearn.model_selection import train_test_split impor…

硅像素传感器文献调研(三)

写在前面: 引言:也是先总结前人的研究结果,重点论述其不足之处。 和该方向联系不大,但还是有值得学习的地方。逻辑很清晰,易读性很好。 1991年—场板半阻层 使用场板和半电阻层的高压平面器件 0.摘要 提出了一种…

【没有哪个港口是永远的停留~论文简读】Panoptic SegFormer

Panoptic SegFormer 原文:https://arxiv.org/pdf/2109.03814.pdf 代码:GitHub - zhiqi-li/Panoptic-SegFormer: This is the official repo of Panoptic SegFormer [CVPR22] 在全景分割中,图像内容可分为things和stuff两类。 things是可计…

2023.12.28力扣每日一题——收集巧克力

2023.12.28 题目来源我的题解(参考力扣官方题解)方法一 枚举方法二 二次差分 题目来源 力扣每日一题;题序:2735 我的题解(参考力扣官方题解) 嗯……今天不会,就当一次搬运工吧。 方法一 枚举…

去水印软件哪个好用?用他们就够了

随着数字媒体的发展,越来越多的人开始需要处理带有水印的图片或视频。水印不仅是一种版权保护手段,也常常被用来标记图片或视频的来源。然而,在某些情况下,我们可能需要去除水印以实现更好的使用效果。那么,去水印软件…

【C++进阶03】二叉搜索树

一、二叉搜索树的概念和性质 中序遍历二叉搜索树会得到一个有序序列 所以二叉搜索树又称二叉排序树 它可以是一棵空树 也可以是具有以下性质的二叉树: 若它的左子树不为空 则左子树上所有节点的值都小于根节点的值若它的右子树不为空 则右子树上所有节点的值都大于…

技术经验|Java基础之LocalTime类

文章目录 1 背景2 Time包在实际开发中的位置3 本地日期和时间类3.1 LocalTime自带功能3.2 LocalTime继承、重写功能 4 总结 📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端工程师 🔥 三连支持&a…

【Java系列】多线程案例学习——基于阻塞队列实现生产者消费者模型

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得,欢迎大家在评论区交流讨论💌 目录…

九九乘法表c 语言 用于打印九九乘法表

以下是一个简单的C语言程序&#xff0c;用于打印九九乘法表&#xff1a; #include <stdio.h>int main() {int i, j;for (i 1; i < 9; i) {for (j 1; j < i; j) {printf("%d*%d%-2d ", j, i, i*j);}printf("\n");}return 0; }解释&#xff1…

GBASE南大通用GBaseCommand 类

代表一个要对 GBASE南大通用数据库执行操作的 SQL 语句。这个类不能被继承。对 于该类所有成员的列表&#xff0c;参考 GBASE南大通用 GBaseCommand 成员。  继承层次 System.Object |__ System.MarshalByRefObject |__ System.ComponentModel.Component |__ System.D…

go语言,ent库与gorm库,插入一条null值的time数据

情景介绍 使用go语言&#xff0c;我需要保存xxxTime的字段至数据库中&#xff0c;这个字段可能为空&#xff0c;也可能是一段时间。我采取的是统一先赋值为空&#xff0c;若有需要&#xff0c;则再进行插入&#xff08;需要根据另一个字段判断是否插入&#xff09; 在我的数据…

‘>>’,‘<<’和‘’的使用

>>: n n >> 1 是使用位移运算符将 n 向右移动一位的操作。在 C 语言中&#xff0c;>> 是右移位运算符&#xff0c;表示将二进制数向右移动指定的位数。 对于无符号整数&#xff0c;在右移位操作时&#xff0c;高位用 0 填充。例如&#xff0c;如果 n 的二…

Navicat导入与导出表的操作流程

我们使用Navicat时&#xff0c;创建表有两种方法&#xff0c;一种是写SQL语句&#xff0c;这种方法适合数据较少的表&#xff1b;另一种是通过“导入向导”功能导入表&#xff0c;这种方法可以一次性导入大批量的数据&#xff0c;提高效率。 下面我以.xls格式为例&#xff0c;…

程序员的浪漫,2023跨年烟花代码(Python)

跨年倒计时啦 今天分享用python实现一场烟花秀 感兴趣的小伙伴&#xff0c;提前收藏起来&#xff0c;一定要看到最后&#xff01; 话不多说 1.首先制作一个绚丽的夜空 制作夜空&#xff0c;其实就是设置画布。大家知道&#xff0c;夜晚的天空月明如水&#xff0c;星光攒动&a…

创建型设计模式 - 抽象工厂模式 - JAVA

创建型设计模式 - 抽象工厂设计模式 一. 简介二. 列子2.1 定义电脑的抽象类和子类2.2 定义抽象工厂类和其实现类2.3 测试 三. 抽象工厂设计模式的好处四. 抽象工厂模式的案例 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续…

git 如何将某个分支的某个提交复制到另外一个分支

请直接去看原文: 原文链接:git 如何将某个分支的某个提交复制到另外一个分支_gitlab里面的markdown文件可以复用其他分支的吗-CSDN博客 --------------------------------------------------------------------------------------------------------------------------------…