这一期开始我们使用Rust编写一个乒乓球小游戏,这个游戏虽然简单但也“麻雀虽小五脏俱全”从这个游戏入门游戏开发再好不过了。
游戏界面包含三个部分,一个窗口一个球拍和一个乒乓球。可以通过按左右上下方向键在窗口范围内移动球拍击打乒乓球,乒乓球遇到窗口边缘或球拍时反弹,遇到窗口底部时即游戏失败。我们后面还可以给这个游戏添加记分器,通过增加乒乓球的移动速度提升游戏的难度甚至还可以增加双人对战模式增加游戏的趣味性。
在编写游戏前我们需要先了解几个游戏编程和图像编程中几个基本的概念:
第一个是像素:可以把我们的屏幕想象成是有很多个大小一样的方格组成的
每个方格就称为一个像素,用px表示,在图像编程中,经常使用像素作为长度单位,比如我们看到照片的分辨率为600乘800像素,就是这个图片的宽为600像素,高为800像素。
第二个是坐标系,用于确定图像的位置,一般坐标系的原点在窗口的左上角,也就窗口左上角的位置的坐标为(0,0)。水平向右为正向x轴,垂直向下为正向y轴,这跟我们数学课中遇到的坐标系可能不一样,数学里一般都是垂直向上是正向的。如果我们设置一个图像的位置在(100,200)位置,也就是这个图像的左上角在坐标系的x轴为100,y轴为200的位置,长度单位就是像素。
第三个需要了解颜色值,颜色值用于表示图像的颜色,最常用的表示方法为RGBA表示法,也就是使用三原色红绿蓝和透明度表示颜色。
第四个需要了解一个比较抽象的感念——帧,我们是通过播放连续的图片形成动画效果的,可以说电影视频就是通过很多张静态照片的连续播放形成的。每次播放一个照片我们称为1帧,每秒钟内播放的帧越多视频动画的效果就越流畅,一般我们每秒钟播放30帧。也就是每秒钟要完成30次图像的重新绘制。
了解了这些概念我们就可以开始编写乒乓球小游戏了,使用cargo new 创建一个game_pingpang项目,接下来我们需要找一个游戏引擎,因为直接调用底层的绘图API工作量比较大,游戏引擎帮我们做了封装,使用起来相对简单。这里我们选用Rust编写的piston游戏引擎,在github上打开piston项目。
这里有个入门的例子,我们按照这个说明编写一个绘制红色长方形的例子。打开Cargo.toml文件在denpendencies添加piston_window依赖。在把示例代码复制到main.rs文件里。复制好后,保存,使用cargo run运行下项目,如果是第一次运行会比较慢因为需要下载配置的依赖包。我这边先前运行过所以比较快。在我们的电脑上就打开了个窗口上面有个红色的小四方块。如果你在运行中有报错,可以使用rustc --version命令查看下当前使用的rust版本,我当前使用的是最新的rust 1.38.0,如果你使用的版本比这个旧,可以执行rustup update命令更新下rust。
rust当前也在快速更新中也越来越易用,比如我们先前遇到的由于使用习惯写if表达式时总是带上小括号引起的错误,在rust最新的版本中已经兼容了这种写法,只是给出了一个不影响程序运行的警告,不再是一个错误了。
这一期就先到这里,下一期我们分析下这段示例代码。
相关推荐
rust-snake使用rust编写的贪吃蛇游戏 仅供学习参考。 rust-snake使用rust编写的贪吃蛇游戏 仅供学习参考。 rust-snake使用rust编写的贪吃蛇游戏 仅供学习参考。 rust-snake使用rust编写的贪吃蛇游戏 仅供学习参考。...
### Rust在操作系统的应用 #### Redox OS:内存安全与高效能的新选择 - **核心概念**:Redox OS是一个采用Rust语言构建的全新类Unix操作系统,它着重于提高安全性、可靠性和性能。 - **架构特点**: - **微内核...
piston 一个用户友好的游戏引擎,用 Rust 编写。Piston 项目来自众多开发者的协作,用 2D、3D 库,事件编程,AI,图像处理等等。通过共享维护,我们有更多的时间来创建新的东西。项目主要领域:图形,2D 和 3DRust ...
一个使用 Rust 编写的圣诞树代码特效,同时添加了雪花效果一个使用 Rust 编写的圣诞树代码特效,同时添加了雪花效果一个使用 Rust 编写的圣诞树代码特效,同时添加了雪花效果一个使用 Rust 编写的圣诞树代码特效,...
如何使用Rust和WebGL在浏览器中制作3D图形的示例_Rust_JavaScript_下载.zip
通过这个项目,开发者可以学习如何使用 Rust 进行游戏开发,并理解 Rust 独特的内存管理方式。 五子棋是一种两人对弈的棋类游戏,玩家轮流在棋盘上放置黑白棋子,目标是先在横、竖或对角线方向上连成五个同色棋子。在 ...
下面是一个简单的Rust嵌入式系统开发的例子,我们将使用Rust编写一个简单的LED闪烁程序。 这个例子假设你使用的是STM32F1系列微控制器,并且你的开发板有一个LED连接到PA引脚。你需要根据你的具体硬件和开发环境...
用 Rust 编写的 Windows 内核模式驱动程序\n这个库只是 windows 内核模式驱动程序的概念验证,可以用 Rust 编程语言编写。\n它包含Windows Driver Kit的类型、常量和绑定 ,目标操作系统从 Windows XP (x86x64) 开始...
这是一个用 Rust 编写的国际象棋机器人,使用带有基本 alpha beta 修剪的 minimax 算法。 注意:此分支尚未完成。它正在重写原始项目,以拥有更清洁且希望更快的代码。一项修改是它允许在运行时作为双方播放,而...
学习Rust时候写的百行小项目。百度网盘秒传(标准格式)生成器,支持单个文件,不限大小。可在不同平台上编译。 用法:`执行文件 <待处理文件>` 仅可在命令行模式下使用。 原理:文件MD5值#前256KiB的MD5值#获取到...
Rust猜数游戏:这是一款使用Rust编程语言编写的猜数游戏。Rust是一种注重安全性和性能的系统编程语言,常用于开发操作系统、游戏引擎、Web服务器等。 包含的文件和目录: src目录:这是源代码的根目录,所有的Rust...
节点绑定使用惯用的 Rust 编写原生 Node.js 模块的简单方法特征简单:只需编写惯用的 Rust 代码,node-bindgen 负责生成 Node.js FFI 包装器代码。安全:基于 Rust 类型自动检查 Node.js 参数。异步:支持异步 Rust...
【标题】"Python-一个Rust编写的简单快速和可中断的下载加速器"揭示了这个项目是将Rust编程语言应用于创建一个Python环境下的高效下载工具。在IT领域,这种跨语言协作常见于追求性能优化和利用不同语言的优势。 ...
【小程序】基于Rust开发的微信小程序
Starbound的首席程序员,Chucklefish的技术主管,专注游戏开发。...在可以预计的未来,他将继续使用Rust进行游戏开发。 本文介绍了游戏开发中使用Rust进行OO设计的各种弊端,并且通过示例逐渐给出了ECS架构的思想。
标题中的“Python-一个用于GTK桌面的Google字体浏览器用Rust编写”表明这是一个关于使用Rust语言构建的桌面应用程序,其主要功能是浏览Google Fonts库。这个应用是为GTK(GIMP Toolkit)桌面环境设计的,GTK是一个...
此方法仅供个人使用。切勿分发来自 Minecraft 的受版权保护的内容。 在 Minecraft 启动器中,单击“新建配置文件”按钮 在下拉“使用版本”中,选择1.8.8 点击“保存个人资料” 单击“播放”(这将下载快照) ...
Rust实战项目二:区块链开发 02用Rust编写区块链,区块等数据结构的介绍 课程实战性强,通俗易懂,系统全面的学习 下一节 03用Rust编写区块链,实现序列化与反序列化
stm32l0xx-hal是 STMicro STM32L0xx 系列微控制器的硬件抽象层 (HAL)。 这个 crate 依赖 Adam Greig 的stm32l0 crate 来提供适当的寄存器定义并实现部分嵌入的 hal...更多详情、使用方法,请下载后阅读README.md文件
rust.ko, 在 Rust 中,编写了一个最小的Linux内核模块 rust.ko用 Rust 编写的最小Linux内核 MODULE 。要求最近构建的Rust ( 最新的nightly )这里代码使用功能标志,因此你需要使用一个每晚的Rust 版本来编译它。 ;...