0%

使用 raylib 进行图形化相关开发

放在最前

%%% sto 神犇 dalao yuruilin dalao 神犇 orz %%%

背景

作者是蒟蒻,最近在开发 3D 游戏,见洛谷上似乎并没有关于 raylib 的文章,故作此篇。

广告语

你是否有以下苦恼

  • 想做游戏却只会写黑框框
  • 游戏引擎过于复杂搞不懂?
  • 算法可视化受像素的拘束

不必担心,用
raylib

raylib 是什么?

“raylib是一个简单易用的库,可以享受视频游戏编程的乐趣。” —— 官网

有什么用?

  • 独立游戏开发
  • 算法可视化
  • 装B

开始!

前置知识

本文仅讲解必要的知识。了解更多,见小熊猫C++作者瞿华raylib绘图库简介

环境配置

推荐工具:懒人专用小熊猫C++(内置 raylib )。

相关函数

  • SetConfigFlags(FLAG_MSAA_4X_HINT);启用反锯齿。

  • InitWindow(w,h,s);初始化窗口为宽 ww ,高 hh,标题为字符串 ss

  • SetTargetFPS(f);将最大帧率设置为 ff

  • DisableCursor();隐藏光标(防止你在打游戏时光标乱跑。

  • BeginDrawing();EndDrawing();中间夹你要画的东西。

  • BeginMode3D(camera);EndMode3D();以相机 cameracamera 视角绘制3D模型。

  • IsKeyDown(k) kk 键是否被按下。 kk 一般都是 KEY_ + 按键名(大写),如KEY_W

  • DrawCube(Vector3{x,y,z},a,b,c,cor);绘制一个坐标在 (x,y,z)(x,y,z) ,边长分别为 aabbcc ,颜色为 corcor长方体corcor 可以是定义好的常量,也可以是{red,green,blue,algha}

  • 更多类似函数,另见raylib所有API接口中文释义

示例

1
2
3
DrawCube(Vector3{600,60,600},10,10,10,RED);//红色方块
DrawCubeWires(Vector3{600,60,600},10,10,10,BLACK);//黑色方框
ClearBackground(SKYBLUE);//天蓝色天空
如图

基本结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <raylib.h>//raylib有几个头文件,按需使用
#include <bits/stdc++.h>
using namespace std;
int main() {
//这几个函数上面讲过了
SetConfigFlags(FLAG_MSAA_4X_HINT);
InitWindow(1920, 1080, "United Pineapple Bread");
SetTargetFPS(60);
DisableCursor();
//相机相关,自行BDFS
Camera3D camera = { 0 };
camera.fovy = 60.0f;
camera.projection = CAMERA_PERSPECTIVE;
camera.up = {0, 1, 0};

while (!WindowShouldClose()) {//按ESC退出
/*
进行运算
*/
BeginDrawing();
/*
画的代码
*/
BeginMode3D(camera);
/*
画3D模型的代码
*/
EndMode3D();
EndDrawing();
}
CloseWindow();//关闭
return 0;
}

制作游戏!

1、先写好控制台版本

2、替换

用 raylib 的函数替换原来的。

  • 原来的字符画输出,用现在 raylib 画长方形||长方体的函数代替。
  • 原来的键盘||鼠标事件,用 raylib 的函数代替。(仅是为了让其跨平台)。

3、升级

加入 raylib 独有的函数。

  • DrawFPS(x,y);在屏幕 (x,y)(x,y) 位置输出帧率。
如图,游戏

结束了?

结语

你已初步掌握游戏开发。快拿去装B。

链接

祝你们成功(滑稽

在 Luogu 上看