在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
第一章: 开始编写游戏前
欢迎来到 《使用Rust编写推箱子游戏教程》! 在开始动手编写游戏前,我们需要先了解下: 推箱子是个啥样的游戏嘞?没玩过推箱子游戏?想当年用诺基亚黑白屏手机的时候就有这款游戏了。你可以下载一个玩一下或者点这里看下维基百科的介绍。本教程就是教大家怎么使用Rust和现有的游戏引擎、素材,编写一个可以玩的推箱子游戏。 谁编写了本教程呢?本教程是由@oliviff 主笔编写,另外还得到了很多优秀贡献者的支持,感谢您们的辛勤付出(排名不分先后): 为什么要使用Rust编写推箱子游戏呢?我是2019年3月份开始学习Rust的,在编写本教程前我就使用Rust开发过游戏。在学习和使用Rust的过程中我还写了一些博客,感觉从Rust游戏开发中我学到了很多,于是乎我就有个想法:这么好的东西得分享给大家啊,让大家都来体验下啊,独乐乐不如众乐乐!然后就有了本教程。 那是不是得先去学习下Rust呢?不需要。本教程会手把手一步一步教你怎么使用Rust编写游戏,也会对一些Rust的语法进行一些必要的解释。对于一些知识点我们也会提供更详细的介绍链接供您学习参考。当然本教程主要是通过编写一个有趣的游戏顺便对Rust语言进行简单的介绍,所以有些Rust的知识点我们可能不会也没必要过多的深入。 文本样式约定我们使用下面这种样式的文本链接对Rust或者游戏开发等的知识点的扩展信息。
我们使用下面这种样式的文本链接本章内容相关的程序代码。
学习资源如果在学习过程中你需要寻求帮助或者有问题需要找人帮忙解答,可以看下这些地方: 另外Rust背后还有一群很优秀的开发者组成的社区,所以如果有问题也可以寻求社区帮助。 就先介绍到这里吧,接下来让我们开始编写第一个Rust游戏(准确来说,是我的第二个,但希望这是你们的第一个????) 项目搭建建议使用rustup安装管理Rust。安装好Rust后可以在命令行输入以下俩条命令,检查确认是否安装成功: $ rustc --version rustc 1.40.0 $ cargo --version cargo 1.40.0 输出的版本信息未必都是这样的,但建议使用比较新的Rust版本。 创建项目Cargo是Rust的包管理工具,可以使用它创建我们的游戏项目。首先切换到游戏项目存储路径,然后再输入以下命令: $ cargo init rust-sokoban 命令执行成功后,会在当前目录下创建一个名称为 ├── src │ └── main.rs └── Cargo.toml 切换到文件夹 $ cargo run Compiling rust-sokoban v0.1.0 Finished dev [unoptimized + debuginfo] target(s) in 1.30s Running `../rust-sokoban/target/debug/rust-sokoban` Hello, world! 添加游戏开发依赖接下来让我们一起把默认生成的项目修改成一个游戏项目! 我们使用当前最受欢迎的2D游戏引擎之一的ggez 还记得我们刚才在项目目录里看到的 [dependencies] ggez = "0.5.1"
接下来再次执行 cargo run Updating crates.io index Downloaded .... .... Compiling .... .... Finished dev [unoptimized + debuginfo] target(s) in 2m 15s Running `.../rust-sokoban/target/debug/rust-sokoban` Hello, world!
接下来我们在main.rs文件中使用 {{#include ../code/rust-sokoban-c01-01/src/main.rs}} 可以把代码复制到main.rs文件中,并再次执行
基本概念和语法现在我们有了个窗口,我们创建了个窗口耶!接下来我们一起分析下代码并解释下使用到的Rust概念和语法。 引入您应该在其它编程语言中也接触过这个概念,就是把我们需要用到的依赖包(或crate)里的类型和命名空间引入到当前的代码作用域中。在Rust中,使用 // 从ggez命名空间引入conf, event, Context 和 GameResult {{#include ../../code/rust-sokoban-c01-01/src/main.rs:1}} 结构体声明{{#include ../../code/rust-sokoban-c01-01/src/main.rs:4:7}}
实现特征特征类似其它语言中的接口,就是用来表示具备某些行为的特定类型。在我们的示例中需要结构体Game实现EventHandler特征。 {{#include ../../code/rust-sokoban-c01-01/src/main.rs:9:23}}
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论