父亲节礼物:用Python编写一个小型游戏

名字:阿玥的小东东

学习:Python、C/C++

主页链接:阿玥的小东东的博客_CSDN博客-python&&c++高级知识,过年必备,C/C++知识讲解领域博主

目录

安装必要的库

绘制游戏界面

添加游戏元素

为游戏添加交互性

结论

一、父亲节的来历简介

二、父亲节的由来


父亲节是一个向父亲们表达感激和尊敬的节日。在这个特别的日子里,为什么不给您的父亲一个特殊的礼物?您可以使用Python编写一个小型游戏,展示您的编程技能和对父亲的敬爱之情。

在本文中,我们将介绍如何使用Python编写一个简单的射击游戏。

安装必要的库

要编写这个游戏,我们需要安装pygame库。您可以使用以下命令在终端中安装它:

pip install pygame

当然,在安装 Pygame 包之前,您需要先确保已经安装好了 Python 和 pip。

绘制游戏界面

在游戏中,我们需要一个窗口来显示游戏内容。我们可以使用pygame中的display模块来创建窗口。以下是初始化Pygame,创建窗口和设置背景的基本代码:

import pygame

# 初始化 Pygame
pygame.init()

# 创建游戏窗口
screenWidth = 800
screenHeight = 600
screen = pygame.display.set_mode((screenWidth, screenHeight))

# 设置背景颜色
backgroundColor = (255, 255, 255)
screen.fill(backgroundColor)

# 设置游戏标题
pygame.display.set_caption("射击游戏")

在此代码中,我们首先在程序中导入了pygame模块。然后,我们使用pygame.init()函数初始化Pygame。接下来,我们创建了一个名为screen的窗口,并设置了其宽度和高度。我们还设置了窗口的背景颜色,并将其命名为backgroundColor。

最后,我们设置了游戏窗口的标题为“射击游戏”。

添加游戏元素

在我们的游戏中,我们需要添加一些元素,例如玩家和敌人。在此示例中,我们将创建一个简单的射击游戏,其中玩家可以在一个方块内移动并射击来袭的敌人。

我们可以使用pygame中的Rect类来创建这些元素。以下是添加玩家和敌人的代码:

# 创建玩家
playerSize = 50
player = pygame.Rect(screenWidth // 2 - playerSize // 2, screenHeight - playerSize, playerSize, playerSize)

# 创建敌人
enemySize = 50
enemyPosition = [random.randint(0, screenWidth - enemySize), 0]
enemyList = [pygame.Rect(enemyPosition[0], enemyPosition[1], enemySize, enemySize)]
enemySpeed = 10

# 绘制玩家和敌人
playerColor = (0, 0, 255)
pygame.draw.rect(screen, playerColor, player)

enemyColor = (255, 0, 0)
pygame.draw.rect(screen, enemyColor, enemyList[0])

在此代码中,我们首先创建了一个名为player的玩家。我们使用screenWidth和screenHeight变量来计算玩家的初始位置,该位置位于窗口的底部中央。我们还创建了一个名为enemyPosition的列表来存储敌人的位置。使用Rect类创建敌人。

然后,我们定义了enemyList,其初始化为一个包含一个敌人的列表。我们还为敌人设置了enemySpeed,该变量将控制敌人的下落速度。

在代码的最后部分,我们绘制了玩家和敌人,使用pygame.draw.rect()函数来绘制矩形,使用颜色变量对它们进行着色。

为游戏添加交互性

现在,我们已经创建了游戏元素,我们需要为游戏添加交互性。在我们的射击游戏中,玩家可以使用箭头键移动,按下空格键射击。敌人将在屏幕上从上往下移动,玩家必须射击敌人以保留生命值和提高得分。

以下是为游戏添加交互性的代码:

# 游戏循环
while True:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

        # 处理按键事件
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                player.x -= 50
            elif event.key == pygame.K_RIGHT:
                player.x += 50
            elif event.key == pygame.K_SPACE:
                # 创建子弹
                bullet = pygame.Rect(player.x + playerSize // 2, player.y - 10, 5, 10)
                bulletColor = (0, 0, 0)
                bulletList.append(bullet)
    
    # 移动敌人
    for enemy in enemyList:
        enemy.y += enemySpeed

        # 检查是否撞到了玩家
        if enemy.colliderect(player):
            pygame.quit()
            sys.exit()
        
        # 检查是否超出屏幕范围
        if enemy.y > screenHeight:
            enemyList.remove(enemy)
    
    # 移动子弹
    for bullet in bulletList:
        bullet.y -= 20

        # 检查是否击中敌人
        for enemy in enemyList:
            if enemy.colliderect(bullet):
                enemyList.remove(enemy)
                bulletList.remove(bullet)
    
        # 检查是否超出屏幕范围
        if bullet.y < 0:
            bulletList.remove(bullet)
    
    # 绘制玩家和敌人
    screen.fill(backgroundColor)
    pygame.draw.rect(screen, playerColor, player)
    
    for enemy in enemyList:
        pygame.draw.rect(screen, enemyColor, enemy)
    
    # 绘制子弹
    for bullet in bulletList:
        pygame.draw.rect(screen, bulletColor, bullet)

    # 更新屏幕
    pygame.display.update()

在此代码中,我们使用了pygame.event.get()函数来检查是否发生了事件。如果事件类型是QUIT,我们将退出游戏。如果事件类型是KEYDOWN,我们检查是否按下了箭头键或空格键,如果是,我们将移动玩家或创建一个新子弹。

我们还使用循环来移动敌人和子弹。如果敌人被子弹击中或超出屏幕范围,我们将从相应的列表中删除它们。

最后,我们绘制玩家、敌人和子弹,并使用pygame.display.update()函数更新屏幕。

结论

恭喜你,您已经完成了一个简单的射击游戏!在父亲节这个特殊的日子里,您可以将这个游戏作为礼物送给您的父亲,或者与他一起玩这个游戏,这是一种表达您对他的爱和感激的方式。

希望这个小型游戏的开发过程对您的Python编程技能有所提高。在未来的编程过程中,在Pygame的基础上,你可以尽情发挥创意,创造出更加有趣和充满挑战的游戏。

 

一、父亲节的来历简介

其实在世界上的第一个父亲节是出现在1910年的美国,是由布鲁斯多德夫人一直倡导的,她居住在美国华盛顿州斯波坎,多德夫人的母亲在生育第六个孩子时,因难产而死,多德夫人的父亲威廉·斯马特先生曾参加过南北战争,他在妻子过世后,独自一人在华盛顿州东部的一个乡下农场,承担起抚养、教育六个孩子的重任,多德夫人在家中排行老二,亦是家里唯一的女孩,女性的细心特质,让她更能体会父亲的辛劳,斯马特先生白天辛劳地工作,晚上回家还要照料家务与每一个孩子的生活,经过几十年的辛苦,儿女们终于长大成人,当子女们盼望能让斯马特先生好好安享晚年之际,斯马特先生却因多年的过度劳累于1909年辞世。这也是父亲节的由来,在之后,每到了父亲节的时候,子女就会通过一些方式来表达对父亲的感激和尊敬之情。

二、父亲节的由来

在中国也是有属于自己的父亲节,这个节日的起源是来自于民国时期,主要的起源是在1945年8月8日,上海发起了庆祝父亲节的活动,市民立即响应,抗日战争胜利后,上海市各界名流,联名请上海市政府转呈中央政府,定“爸爸”谐音的8月8日为全国性的父亲节,在父亲节这天,人们佩戴鲜花,表达对父亲的敬重和思念。每年的8月8日,遂成为全国性质的法定“父亲节”。是日,子女佩花以作纪念——父亲健在者,佩以红花;逝世者,佩以白花。④相关的推广工作也随后展开。譬如,作为“父亲节”的首倡者之一,1946年8月7日,颜惠庆被邀请去“青年会”做关于“父亲节”的演讲,“谈了不同社会中父亲的地位和责任”。次日,他又在日记中写道:“报上满载关于‘父亲节’的报道”。之后,每次一到父亲节的时候,大部分子女都会给父亲送上祝福,这一天对每一位父亲也很宽容,是属于所有父亲的节日。

 

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

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

相关文章

UE4/5样条线学习(三):样条线与时间轴

目录 简单的小模板 物品跟随样条线移动 粒子特效类&#xff1a; 简单的小模板 通过之前的案例&#xff0c;我们可以直接创建一个actor蓝图&#xff0c;加上要用的样条组件&#xff1a; 然后我们就可以通过时间轴做出不同的一些效果 在蓝图中找到时间轴的这个节点 双击时间…

1745_Perl中的switch结构

全部学习汇总&#xff1a; GreyZhang/perl_basic: some perl basic learning notes. (github.com) 用了很久时间的Perl了&#xff0c;但是一直没有使用过switch结构。即使有的时候&#xff0c;基本上也通过其他的形式完成了相关工作。虽说有时候可能会效率低一些&#xff0c;但…

【备战秋招】每日一题:5月13日美团春招第三题:题面+题目思路 + C++/python/js/Go/java带注释

为了更好的阅读体检&#xff0c;为了更好的阅读体检&#xff0c;&#xff0c;可以查看我的算法学习博客第三题-火车调度 在线评测链接:P1288 题目描述 塔子哥是一位火车车厢调度员。 这一天&#xff0c;一列带有 n 个编号车厢的列车进站了&#xff0c;编号为 1\rightarrow …

【linux网络配置】多个网卡一起使用,一个网卡连内网,一个网卡连外网

一、问题背景 因为有一个工作站在内网中&#xff0c;但是没有办法联网&#xff08;校园网账户有限&#xff09;。 虽然工作站没有联网&#xff0c;但是我仍然可以通过局域网远程控制工作站&#xff0c;使其访问校园网验证页面实现上网。 当给工作站安装软件或依赖项时&#…

grpc 实现grpc gateway(window环境)

官网&#xff1a;https://grpc-ecosystem.github.io/grpc-gateway/ github&#xff1a;https://github.com/grpc-ecosystem/grpc-gateway grpc gateway的原理官网有介绍。总结一下就是&#xff1a; gRPC-Gateway帮助你同时以gRPC和RESTful风格提供你的API。grpc-gateway旨在为您…

【Linux】linux下使用命令修改jar包内某一个文件中的内容并重新运行jar程序

linux下使用命令修改jar包内某一个文件中的内容并重新运行jar程序 一、背景描述二、vi命令编辑三、启动程序四、拓展--启动脚本 一、背景描述 需求&#xff1a;发现线上的 iotp-irsb-server-v1.0.0.2.jar 包中配置文件的日志级别配置错误&#xff0c;需要在线修改jar包中文件的…

MFC的定义和实际操作方法

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天从另一个角度来看一下MFC。 完整的应用一般由四个类组成&#xff1a;CWinApp应用类&#xff0c;CFrameWnd窗口框架类&#xff0c;CDocument文档类&#xff0c;CView视类 过程&#xff1a;CWinApp创建CF…

ubuntu iptables开机自启动

一、配置ubuntu路由转发 用在一台电脑有多个网卡的情形下&#xff0c;一个网卡5网段、一个网卡8网段&#xff0c;8网段是网络出口&#xff0c;所以5网段的设备需要入网的话&#xff0c;要路由转发。 sudo iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -j SNAT --to-sou…

STM32速成笔记—概述

文章目录 前言一、专栏简介二、前期准备三、编程规范以及程序架构简介1. 编程规范2. 程序架构 四、STM32F103ZET6简介五、程序模板六、ST-Link调试6.1 硬件连接6.2 Keil配置6.3 下载调试 前言 本人技术菜鸟一枚&#xff0c;2022年大学毕业&#xff0c;大学加入老师实验室&#…

chatgpt赋能python:如何在Python中创建模块:完整指南

如何在Python中创建模块&#xff1a;完整指南 如果你是一位Python开发者&#xff0c;你肯定需要用到模块。模块使得代码更容易组织和管理&#xff0c;并且可以复用许多代码片段&#xff0c; 提高代码的可重用性。在Python中&#xff0c;模块是一组相关函数&#xff0c;方法和变…

oracle expdp导致system表空间满

今天下午&#xff0c;项目经理反馈有套11204版本数据库无法使用了&#xff0c;立刻登录检查环境发现SYSTEM表空间使用率99.99%了 TABLESPACE_NAME MAXSIZE_MB ACTUALSIZE_MB USED_MB FREESPACE_MB SPACE USAGE ----------------- ---------- ------------- ---------- …

Trace32 SRST和TRST、system.attach 和 system.up的区别

目录 TRST-Resets the JTAG TAP controller and the CPU internal debug logic SRST- Resets the CPU core and peripherals SYStem.Mode Down SYStem.Mode Nodebug SYStem.Mode Prepare SYStem.Mode Go SYStem.Mode Attach SYStem.Mode StandBy SYStem.Mode Up 下图为…

ProGuard 进阶系列(二)配置解析

书接上文&#xff0c;从开源库中把代码下载到本地后&#xff0c;就可以在 IDE 中进行运行了。从 main 方法入手&#xff0c;可以看到 ProGuard 执行的第一步就是去解析参数。本文的内容主要分析源码中我们配置的规则解析的实现。 在上一篇文章末尾&#xff0c;在 IDE 中&#x…

大数据Doris(三十七):Spark Load导入HDFS数据

文章目录 Spark Load导入HDFS数据 一、准备HDFS数据 二、创建Doris表 三、创建Spark Load导入任务

【Reids】搭建主从集群以及主从数据同步原理

目录 一、搭建主从集群 1、介绍 2、搭建 二、数据同步原理 1、全量同步 2、主节点如何判断是不是第一次连接 3、增量同步 4、优化主从数据同步 一、搭建主从集群 1、介绍 单节点的Redis并发能力存在上限&#xff0c;要提高并发能力就需要搭建主从集群&#xff0c;实现…

【LLM GPT】李宏毅大型语言模型课程

目录 1 概述1.1 发展历程1.2 预训练监督学习预训练的好处 1.3 增强式学习1.4 对训练数据的记忆1.5 更新参数1.6 AI内容检测1.7 保护隐私1.8 gpt和bert穷人怎么用gpt 2 生成式模型2.1 生成方式2.1.1 各个击破 Autoregressive2.1.2 一次到位 Non-autoregressive2.1.3 两者结合 2.…

RabbitMQ虚拟主机无法启动的原因和解决方案

RabbitMQ虚拟主机无法启动的原因和解决方案 摘要&#xff1a; RabbitMQ是一个广泛使用的开源消息代理系统&#xff0c;但在使用过程中可能会遇到虚拟主机无法启动的问题。本文将探讨可能导致该问题的原因&#xff0c;并提供相应的解决方案&#xff0c;以帮助读者解决RabbitMQ虚…

第五章 模型篇: 模型保存与加载

参考教程&#xff1a; https://pytorch.org/tutorials/beginner/basics/saveloadrun_tutorial.html 文章目录 pytorch中的保存与加载torch.save()torch.load()代码示例 模型的保存与加载保存 state_dict()nn.Module().load_state_dict()加载模型参数保存模型本身加载模型本身 c…

K8s 中 port, targetPort, NodePort的区别

看1个例子&#xff1a; 我们用下面命令去创建1个pod2&#xff0c; 里面运行的是1个nginx kubectl create deployment pod2 --imagenginx当这个POD被创建后&#xff0c; 其实并不能被外部访问&#xff0c; 因为端口映射并没有完成. 我们用下面这个命令去创建1个svc &#xff…

chatgpt赋能python:Python怎样让画笔变粗

Python怎样让画笔变粗 Python是一门强大的编程语言&#xff0c;不仅适用于数据分析和机器学习等领域&#xff0c;也可以用来进行图像处理。在Python中&#xff0c;我们可以使用Pillow库来进行图像操作。在本篇文章中&#xff0c;我们将介绍如何使用Python和Pillow来让画笔变粗…