当前位置: 首页 > news >正文

Python学习笔记40:游戏篇之外星人入侵(一)

前言

入门知识已经学完,常用标准库也了解了,pygame入门知识也学了,那么开始尝试小游戏的开发。

当然这个小游戏属于比较简单的小游戏,复杂的游戏需要长时间的编写累计开发经验,同时也需要一定的时间才能编写出来。现在的话还是嫩了点。

从基础的简单的开始,学习实践,慢慢的成长才是正确的学习方式!

创建项目

我们使用pychram创建出一个新的项目,来对游戏项目的代码和一些本地资源做管理,项目名称和目录随意就好了。

目录结构

在项目创建好以后,为了方便管理我们的代码和文件,我们在进行实际的编写之前应当先进行项目目录的结构处理,方便后续代码的编写,资源的存放等工作。

这里我会给出一个项目的目录结构层次并做解释,尽可能的按这个格式对你自己的项目进行处理就行。

project_name/
│
├── project_name/               # 包含项目的主要源代码
│   ├── __init__.py            # 初始化模块,使目录成为Python包
│   ├── module1.py             # 项目的一个模块
│   ├── module2.py             # 另一个模块
│   └── ...
│
├── tests/                      # 单元测试代码
│   ├── __init__.py            # 测试包初始化
│   ├── test_module1.py        # 测试module1.py的单元测试
│   ├── test_module2.py        # 测试module2.py的单元测试
│   └── ...
│
├── docs/                       # 文档
│   ├── source/                # Sphinx文档源文件
│   └── build/                 # 构建后的文档
│
├── scripts/                    # 脚本文件,如命令行工具
│   ├── script1.py             # 项目的一个脚本
│   └── ...
│
├── data/                       # 数据文件,如配置文件或数据集
│   └── ...
│
├── requirements.txt           # 项目依赖的Python包列表
│
├── setup.py                   # Python的构建脚本,用于安装项目
│
├── .gitignore                 # Git忽略文件列表
│
├── LICENSE                    # 许可证文件
│
├── README.md                  # 项目的主读我文件,通常为Markdown格式
│
├── CHANGELOG.md               # 版本变更记录
│
└── .editorconfig              # 编辑器配置文件,确保代码风格一致性
  • project_name/: 主要的源代码目录,包含项目的各个模块和子包。
  • init.py: 使目录成为Python包的必要文件。
  • module*.py: 实现项目功能的具体模块。
  • tests/: 单元测试代码,确保代码质量。
  • docs/: 文档目录,通常使用Sphinx等工具来生成文档。
  • scripts/: 执行脚本,如CLI工具。
  • data/: 静态数据文件,如配置文件或数据集。
  • requirements.txt: 列出项目依赖的第三方Python包。
  • setup.py: 用于构建、安装和发布项目的脚本。
  • .gitignore: Git版本控制中忽略的文件和目录列表。

那么依照这个参考,我们大致可以整理出一个我们的项目目录。

alien_invasion/
│
├── alien_invasion/             # 游戏主模块
│   ├── __init__.py            # 初始化alien_invasion模块
│   ├── game_functions.py      # 游戏的核心功能函数
│   ├── settings.py            # 游戏设置
│   ├── ship.py                # 飞船类
│   ├── alien.py               # 外星人类
│   ├── bullet.py              # 子弹类
│   └── ...
│
├── assets/                     # 游戏资源,如图像和声音
│   ├── images/                # 图像资源
│   │   ├── alien.png          # 外星人的图像
│   │   ├── ship.png           # 飞船的图像
│   │   └── ...
│   └── sounds/                # 声音资源
│       ├── bullet_sound.wav   # 子弹发射的声音
│       └── ...
│
├── tests/                      # 单元测试代码
│   ├── __init__.py            # 测试包初始化
│   ├── test_game_functions.py # 测试game_functions.py的功能
│   ├── test_ship.py           # 测试Ship类
│   ├── test_alien.py          # 测试Alien类
│   └── ...
│
├── main.py                     # 游戏的入口点
│
├── .gitignore                  # Git忽略文件列表
│
├── README.md                   # 项目的主读我文件,通常为Markdown格式
│
└── requirements.txt            # 项目依赖的Python包列

在这里插入图片描述
像这样,我们的目录就算建好了。注意一下上面中的一些模块,跟着文章一起一点一点的填充。

最后,我们稍微给README.md文件写上一些信息,我们的项目目录就算建好了。

概述

这是一个基于Python的太空射击游戏,玩家需要操控飞船击退不断进犯的外星舰队。游戏使用pygame库进行图形渲染和事件处理。

## 使用- 使用箭头键控制飞船移动。
- 按空格键发射子弹。## 贡献欢迎对游戏进行改进!## 许可证本项目遵循MIT许可协议。## 联系我们如果有任何问题或反馈,请通过电子邮件联系我们:example@example.com

在这里插入图片描述

结尾

今天主要讲讲项目目录的一些知识,并建立好我们的项目目录,接下来就是正式开始编写代码了,加油!

相关文章:

Python学习笔记40:游戏篇之外星人入侵(一)

前言 入门知识已经学完,常用标准库也了解了,pygame入门知识也学了,那么开始尝试小游戏的开发。 当然这个小游戏属于比较简单的小游戏,复杂的游戏需要长时间的编写累计开发经验,同时也需要一定的时间才能编写出来。现在的话还是嫩…...

R的数据集读取和利用,如何高效地直接复制黏贴数据到R

​​​​​​R语言自带了许多内部数据集,这些数据集不仅为初学者提供了丰富的练习资源,还为研究人员和数据分析师提供了方便的数据测试和模型验证工具。在这篇文章中,我们将详细探讨如何读取和使用数据集。 一、认识数据集 1、数据和数据集 数据(Data)是指以某种形式表示…...

@JsonProperty 踩坑

JsonProperty 在fastjson 和 hutooljson 中是不会生效的。 在 fastjson 中,对应的注解是 JSONField。如果你正在使用 fastjson 进行 JSON 的序列化和反序列化,并且想要改变字段的 JSON 属性名,你应该使用 JSONField 注解,而不是 …...

业务架构、数据架构、应用架构和技术架构分析

一文看懂:什么是业务架构、数据架构、应用架构和技术架构 TOGAF(开放集团架构框架)是企业广泛应用的架构设计和管理利器。其核心在于四大架构领域:业务、数据、应用和技术,助力组织高效运作。TOGAF,让架构设…...

android studio中svn的使用

第一步,建立一个项目。 第二步,share project。 第三步,选择存放的位置,然后添加提交信息,最后点击share。这样就可以在svn上面看到一个空的项目名称。 第四步,看到文件变成了绿色,点击commit图…...

敏捷CSM认证:精通敏捷Scum估算方法,高效完成项目!

咱们做项目的时候可能都遇到过这种情况:项目一开始信心满满,觉得 deadline 稳了。结果呢?各种意外状况频出,时间好像怎么都不够用了,最后项目只能无奈延期,整个团队都像霜打的茄子。 说到底,还…...

三、建造者模式

文章目录 1 基本介绍2 案例2.1 Car 类2.2 CarBuilder 抽象类2.3 EconomyCarBuilder 类2.4 LuxuryCarBuilder 类2.5 CarDirector 类2.6 测试程序2.7 测试结果2.8 总结 3 各角色之间的关系3.1 角色3.1.1 Product ( 产品 )3.1.2 Builder ( 抽象建造者 )3.1.3 ConcreteBuilder ( 具…...

MySQL-----索引

一、什么是索引 存储引擎用于快速找到记录的一种数据结构。 索引类似于目录。就比如我们要找书里的一段话,我们先按目录找,然后再具体定位,这样速度会很快。 二、索引的作用 通过创建唯一性索引,可以保证数据库表中每一行数据的…...

Webpack 5 Tree Shaking与Module Federation

Webpack是一个流行的JavaScript模块打包器,它在前端工程化中扮演着核心角色。Webpack 5引入了许多新特性,其中两个最值得关注的是Tree Shaking和Module Federation。这两个特性分别解决了代码体积优化和微前端架构的问题。接下来,我们将深入探…...

免费分享一套微信小程序图书馆座位预约管理系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】,帅呆了~~

大家好,我是java1234_小锋老师,看到一个不错的微信小程序图书馆座位预约管理系统(SpringBoot后端Vue管理端),分享下哈。 项目介绍 随着移动互联网技术的飞速发展和智能设备的普及,图书馆服务模式正在经历深刻的变革。本论文旨在…...

k8s入门:从安装到实际应用

Kubernetes (K8s) 入门指南:从安装到实际应用 Kubernetes 是一个开源的容器编排平台,用于自动化容器化应用程序的部署、扩展和管理。它能帮助你管理多个容器化应用程序,并确保它们在不同环境下的一致性和可用性。本文将介绍如何在本地环境安…...

基于Qt的上位机通用框架

0.前言 最近一年多的时间一直在开发设备控制相关的软件,加上之前在聚光的两年时间,前前后后开发这种设备控制类型的上位机软件也有三年的时间了。总结出了一套基于Qt的上位机编程框架,核心思想类似于C#的依赖注入,对象的初始化都…...

Vulnhub靶场DC-7练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集1. 获取用户名/密码2. ssh连接目标主机3. drush命令修改Drupal密码 0x03 漏洞查找与利用1. Drupal写入php木马2. 连接shell3. 反弹shell并提权 0x04 总结 0x00 准备 下载链接:https://download.vulnhub.com/dc/DC-…...

吴恩达深度学习笔记1 Neural Networks and Deep Learning

参考视频:(超爽中英!) 2024公认最好的【吴恩达深度学习】教程!附课件代码 Professionalization of Deep Learning_哔哩哔哩_bilibili Neural Networks and Deep Learning 1. 深度学习引言(Introduction to Deep Learning) 2. 神 经 网 络 的 编 程 基 础…...

(十)Spring教程——Spring配置概述

目录 前言 1.Spring容器高层视图 2.基于XML的配置 前言 在使用Spring所提供的各项丰富而神奇的功能之前,必须在Spring IoC容器中装配好Bean,并建立好Bean和Bean之间的关联关系。Spring的配置文件已经很精简了,但是广大的开发者希望它做得更…...

飞书群聊机器人自定义机器人接入,并实现艾特@群成员功能

飞书群聊机器人还是比钉钉的要麻烦一点,钉钉的直接通过手机号就可以艾特群里面的人,但是飞书的要想艾特群里面的人,需要使用用户的 Open ID 或 User ID。这两个ID怎么获取呢?还需要在飞书的开放平台上创建一个应用,然后…...

CrowdStrike更新致850万Windows设备宕机,微软紧急救火!

7月18日,网络安全公司CrowdStrike发布了一次软件更新,导致全球大范围Windows系统宕机。 预估CrowdStrike的更新影响了将近850万台Windows设备,多行业服务因此停滞,全球打工人原地放假,坐等吃瓜,网络上爆梗…...

银行黄金交易流程

银行黄金交易流程 银行黄金交易流程通常包括以下几个步骤: 咨询和开户: 首先,客户需要到银行的贵金属交易柜台或在线平台咨询黄金交易的相关规定和手续,然后进行开户,在银行开立有关黄金交易的账户。这可能需要提供个…...

MATLAB实验五:MATLAB数据分析

1. 某线路上不同时间对应的电压如下表所示: 1)用 3 次多项式拟合(polyfit)该实验曲线,要求绘制 2 原始采样 点,并在 1~8 范围内,使用时间间隔为 0.2 的数据绘制拟合曲线。 建立一个脚本文件:text5_1.m 如下…...

Cannot perform upm operation: connect ETIMEDOUT 34.36.199.114:443 [NotFound]

版本:Unity 2018 Windows 问题:打开 Package Manager,加载报错 尝试解决: 删除项目文件里的Packages下的mainfest.json文件,然后重新打开项目(X)重新登录 Unity 账号(X&#xff09…...

用ChatTTS打造你的专属AI语音助手:从音色定制到批量合成音频的完整工作流

用ChatTTS打造你的专属AI语音助手:从音色定制到批量合成音频的完整工作流 在内容创作领域,音频正成为越来越重要的媒介形式。无论是知识付费课程的讲解、播客节目的制作,还是智能设备的语音交互,一个稳定、个性化的语音合成系统都…...

OpenClaw快速安装部署:让AI住进你的电脑

一、前言 上篇说完OpenClaw是什么,有小伙伴留言说:“听起来挺猛,但安装肯定很复杂吧?”确实,之前我也有这个顾虑。毕竟涉及到Gateway、Agent、多渠道配置,听起来就头大。 但实际搞下来——就两条命令。 今天…...

FreeRTOS+LwIP 2.2.0实战:手把手教你理解tcpip_thread的消息处理机制

FreeRTOSLwIP 2.2.0实战:深入解析tcpip_thread的消息驱动架构 在嵌入式网络开发中,理解协议栈的线程模型是构建稳定系统的关键。当FreeRTOS遇上LwIP,tcpip_thread就像一位不知疲倦的邮差,日夜处理着来自各方的网络报文。本文将带您…...

用Mermaid Live Editor 5分钟搞定技术图表:从零开始的完整实战指南

用Mermaid Live Editor 5分钟搞定技术图表:从零开始的完整实战指南 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid…...

ROS2接口实战:从传感器数据到自定义消息的完整开发流程(附Python示例)

ROS2接口实战:从传感器数据到自定义消息的完整开发流程(附Python示例) 在机器人开发领域,数据的高效传递与标准化处理是系统稳定运行的关键。ROS2作为新一代机器人操作系统,其接口系统提供了强大的数据交换能力&#x…...

新手零基础入门:借助快马AI生成你的第一个班级宠物园网页应用

作为一个刚接触编程的新手,想要快速上手开发一个班级宠物园网页应用,确实会遇到不少挑战。不过现在有了InsCode(快马)平台这样的工具,整个过程变得简单多了。下面我就分享一下自己从零开始构建这个项目的经验,希望能帮助到同样想入…...

Vitis新手避坑:自定义IP编译报错?先检查这个Makefile路径!

Vitis新手避坑指南:自定义IP编译报错的核心排查思路 第一次在Vitis中集成自定义IP时遇到编译报错,那种挫败感我至今记忆犹新。明明硬件描述文件(XSA)已经正确生成,软件工程却莫名其妙地报出"xxx.h: No such file …...

OpenMemories-Tweak完整指南:如何安全解锁索尼相机的隐藏功能

OpenMemories-Tweak完整指南:如何安全解锁索尼相机的隐藏功能 【免费下载链接】OpenMemories-Tweak Unlock your Sony cameras settings 项目地址: https://gitcode.com/gh_mirrors/op/OpenMemories-Tweak OpenMemories-Tweak是一款专为索尼相机设计的开源解…...

VSCode远程开发必备:SSH端口转发一键配置指南(含常见问题排查)

VSCode远程开发实战:SSH端口转发高效配置与深度排错 当你在咖啡厅修改代码时,远程服务器上的数据库服务突然需要紧急调试;当团队协作时,同事的内网API接口需要临时开放给你测试——这些场景下,SSH端口转发就像一把瑞士…...

【NR 定位】3GPP NR Positioning 5G定位标准解读(七):RRC_INACTIVE状态下的高效定位机制

1. RRC_INACTIVE状态下的5G定位挑战与机遇 在5G网络中,RRC_INACTIVE状态是一种独特的节能模式,它允许设备在保持部分网络连接的同时大幅降低功耗。这种状态特别适合物联网设备,比如智能电表、资产追踪器和可穿戴设备。想象一下你家的智能门锁…...