Python游戏编程之赛车游戏6-1

news/2025/2/26 17:46:15

通过Python的pygame模块可以实现赛车游戏,如图1所示。

图1 赛车游戏

从图1中可以看出,玩家通过键盘的左右键操作蓝色汽车躲避红色汽车的撞击,每成功躲避过一辆红色汽车,则玩家得一分。当蓝色汽车被红色汽车撞击后,游戏结束。

1 pygame框架代码的修改

在《Pygame显示文字》提到了pygame框架代码,该代码是pygame编程的基础,大部分的pygame游戏代码都是通过以框架代码作为基础的,本赛车程序也不例外,只是需要对框架代码进行修改即可,如图2所示。

图2 pygame框架代码的修改

其中,图2①定义了WIDTH和HEIGHT变量表示屏幕的宽度和高度;图2②用变量代替数字;图2③将游戏窗口标题修改为“赛车游戏”。

2 导入赛道作为游戏背景

2.1 导入图片

导入赛道图片的代码如图3所示。

图3 导入赛道图片的代码

其中,“AnimatedStreet.png”是赛道图片,该图片文件必须与游戏源代码文件在同一目录下。

2.2 显示图片

通过图4所示代码,将导入的赛道图片进行显示。

图4 显示图片的代码

其中,blit()函数的作用是显示图片,该函数的第一个参数表示图片,background即为图3中导入的图片;第二个参数表示图片显示的位置。

注意1 图4显示的代码在pygame框架代码的while True循环中。

相关链接1:pygame导入图片及显示图片的相关资料,请参考

《《Python游戏编程入门》注-第6章1》

以上代码运行后的效果如图5所示。

图5 代码运行效果

3 玩家类的定义

3.1 __init__()方法的定义

玩家类的__init__()方法在实例化该类时调用,代码如图6所示。

图6 玩家类的__init__()方法的代码

其中,第13行中将玩家类的名字设置为Player,该类的父类是pygame.sprite.Sprite类。第14-18行代码定义了玩家的__init__()方法,在该方法中,首先在第17行导入表示玩家的红色汽车图片,即“Player.png”;第18行通过image.get_rect()方法得到图片的位置及大小;第18行将图片的中心点的坐标center设置为(160, 520),即设置了玩家汽车的初始位置。

相关链接2  Python中类的定义资料,请参考

《Python中类的使用1》

相关链接3  Python中类的继承资料,请参考

《Python中类的使用4》

相关链接4  Pygame中Sprite类的资料,请参考

《Pygame中Sprite类的使用6-1》


http://www.niftyadmin.cn/n/5869010.html

相关文章

es-head(es库-谷歌浏览器插件)

1.下载es-head插件压缩包,并解压缩 2.谷歌浏览器添加插件 3.使用

SV基础(二):数据类型

文章目录 **1. Verilog 的 4 值数据类型****硬件建模的必要性****2. Testbench 中的问题****Verilog 的局限性****3. SystemVerilog 的 2 值数据类型****示例:明确的 2 值操作****4. 何时使用 2 值 vs 4 值****5. 关键优势****6. 注意事项**7. 有符号数与无符号数详解**无符号…

PostgreSQL的学习心得和知识总结(一百七十)|深入理解PostgreSQL数据库之 处理HAVING子句 的使用和实现

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…

【Linux】Ubuntu服务器的安装和配置管理

ℹ️大家好,我是练小杰,今天周二了,哪吒的票房已经到了138亿了,饺子导演好样的!!每个人的成功都不是必然的,坚信自己现在做的事是可以的!!😆 本文是有关Ubunt…

批量将gitlab仓库转移到gitea中

前言 单位有一个机器,机器里是个vm esxi里面跑着一个虚拟机里面跑着一个gitlab,经历了岁月变迁,网改了一遍,办公室改了一遍,机器折腾来折腾去,可能闪到腰了吧,gitlab总是访问不到,寻…

【WSL2】 Ubuntu20.04 GUI图形化界面 VcXsrv ROS noetic Vscode 主机代理 配置

【WSL2】 Ubuntu20.04 GUI图形化界面 VcXsrv ROS noetic Vscode 主机代理 配置 前言整体思路安装 WSL2Windows 环境升级为 WIN11 专业版启用window子系统及虚拟化 安装WSL2通过 Windows 命令提示符安装 WSL安装所需的 Linux 发行版(如 Ubuntu 20.04)查看…

对比 Vue 中的 defineAsyncComponent 和 React 中的 lazy

Vue3 的 defineAsyncComponent 和 React 的 lazy 都是用于实现组件懒加载的核心 API,但两者在实现机制、功能扩展和应用场景上存在显著差异。 一、底层原理对比 1. Vue3 defineAsyncComponent 实现方式: 基于 Vue 的响应式系统和组件生命周期管理。通过…

C# 根据Ollama+DeepSeekR1开发本地AI辅助办公助手

在上一篇《访问DeepSeekR1本地部署API服务搭建自己的AI办公助手》中,我们通过通过Ollama提供的本地API接口用Python实现了一个简易的AI办公助手,但是需要运行Py脚本,还比较麻烦,下面我们用C#依据Ollama提供的API接口开发一个本地A…