合集-raylib
摘要:为什么是raylib: raylib是一个C++的图形化开源库。但C++的开源库也很多,为什么单单使用raylib呢,不为别的,因为直接就可以写,环境、库什么的通通都不用管,只需要你安装一个小熊猫DEVC++。并且网上有完整的教程。 推荐知乎raylib绘图库教程:raylib绘图库教程 小熊猫官网
阅读全文
摘要:
在写raylib的时候,代码有一个基本的结构,不同功能的代码按照这个机构去填充。 一般来说,我们可以把一个raylib的程序分成三个模块: 创建窗口和元素 主循环,实时计算和渲染 结束程序,释放空间 下面是基本框架的代码。以后大家写raylib,可以直接先把这段代码复制上 #include <ray
阅读全文
在写raylib的时候,代码有一个基本的结构,不同功能的代码按照这个机构去填充。 一般来说,我们可以把一个raylib的程序分成三个模块: 创建窗口和元素 主循环,实时计算和渲染 结束程序,释放空间 下面是基本框架的代码。以后大家写raylib,可以直接先把这段代码复制上 #include <ray
阅读全文
摘要:基本使用 看上面的代码里,除了基本结构只写了一行 DrawRectangle(100,100,100,30,RED); 下面给出几个常见形状的对比 画矩形 函数原型: void DrawRectangle(int posX, int posY, int width, int height, Colo
阅读全文
摘要:我们在程序窗口上显示图片,最终都要把图片加载到Texture上面去。 Texture是raylib里,专门用来渲染绘图的数据结构。有的地方叫纹理。 加载图片Texture的两种方式 第一种:直接加载 注意直接加载的时候用的是图片的路径。关于路径如果有不理解,请先学习一下路径的知识。 第二种:加载到I
阅读全文
摘要:
键盘和鼠标事件注意理解动作和状态的区别: 不论是捕捉状态还是动作,都要放到循环里 把下面的代码复制进去,执行看看日志是怎么输出的。 up状态一直在持续,所以大家可以在观察了up之后把对应的代码注释掉。 //按下去的这个动作触发pressed事件,注意按下动作只捕捉一次 if(IsKeyPressed
阅读全文
键盘和鼠标事件注意理解动作和状态的区别: 不论是捕捉状态还是动作,都要放到循环里 把下面的代码复制进去,执行看看日志是怎么输出的。 up状态一直在持续,所以大家可以在观察了up之后把对应的代码注释掉。 //按下去的这个动作触发pressed事件,注意按下动作只捕捉一次 if(IsKeyPressed
阅读全文
摘要:
这篇笔记我们实现在窗口上画上几个小球,然后让小球反弹运动的功能。分成两个部分: 第一部分简单说一下基本原理 第二部分讲实现代码。 不喜欢看原理的同学可以直接跳到第二部分去。 原理 简单地理解,我们在计算机上看到的所有画面,都是计算机渲染出来的一个个图片,这些图片在屏幕上一张张被显示出来,当速度足够快
阅读全文
这篇笔记我们实现在窗口上画上几个小球,然后让小球反弹运动的功能。分成两个部分: 第一部分简单说一下基本原理 第二部分讲实现代码。 不喜欢看原理的同学可以直接跳到第二部分去。 原理 简单地理解,我们在计算机上看到的所有画面,都是计算机渲染出来的一个个图片,这些图片在屏幕上一张张被显示出来,当速度足够快
阅读全文
摘要:
绘制文字说难也难,说简单也简单。 有个大前提就是大家要理解char类型的数组如果被识别成字符串,以及char类型的数组又如何存储中文。 本课代码的demo和对应的字体下载地址:绘制文字示例代码 先来看基本的绘制文字 函数原型: void DrawText(const char *text, int
阅读全文
绘制文字说难也难,说简单也简单。 有个大前提就是大家要理解char类型的数组如果被识别成字符串,以及char类型的数组又如何存储中文。 本课代码的demo和对应的字体下载地址:绘制文字示例代码 先来看基本的绘制文字 函数原型: void DrawText(const char *text, int
阅读全文
摘要:
在游戏开发中,音频是不可或缺的一部分。无论是背景音乐的沉浸感,还是音效的即时反馈,都需要开发者合理管理音频资源。使用 raylib 这一轻量级游戏开发库时,你可能会遇到两种音频类型:Music 和 Sound。它们看似相似,但设计目标和应用场景截然不同。这篇文章介绍音乐和音效的区别,后面我们会把音乐
阅读全文
在游戏开发中,音频是不可或缺的一部分。无论是背景音乐的沉浸感,还是音效的即时反馈,都需要开发者合理管理音频资源。使用 raylib 这一轻量级游戏开发库时,你可能会遇到两种音频类型:Music 和 Sound。它们看似相似,但设计目标和应用场景截然不同。这篇文章介绍音乐和音效的区别,后面我们会把音乐
阅读全文
摘要:
音乐的应用场景主要有三个: 播放游戏或应用的背景音乐,背景音乐经常性的就会要暂停或者继续播放。 播放对话或朗读的声音、比如有声小说。 音乐播放器。 接下来让我们一起开始探索raylib的Music。 加载音乐的基本流程 注意释放 Music的相关函数 函数名 作用 PlayMusicStream 播
阅读全文
音乐的应用场景主要有三个: 播放游戏或应用的背景音乐,背景音乐经常性的就会要暂停或者继续播放。 播放对话或朗读的声音、比如有声小说。 音乐播放器。 接下来让我们一起开始探索raylib的Music。 加载音乐的基本流程 注意释放 Music的相关函数 函数名 作用 PlayMusicStream 播
阅读全文
摘要:
对于音效Sound,建议只用在短的声音效果上,比如跳跃,点击等等。声音很短,很快播放完就不需要去控制什么。这样的话,用起来也会很简单。 使用音效Sound
阅读全文
对于音效Sound,建议只用在短的声音效果上,比如跳跃,点击等等。声音很短,很快播放完就不需要去控制什么。这样的话,用起来也会很简单。 使用音效Sound
阅读全文
摘要:U3部分是最早讲raylib的时候,带着学生实现了几个小功能。 但是讲着讲着发现实现这些似乎没啥意义: 对于听不懂的来说,第二单元能学明白都已经是奇迹了,第三单元将是他们学习的终点。 对于听得懂的来说,为啥不直接讲项目中实际的用法呢? 于是乎就有了后面的第四单元——封装一个按钮。 如果你是自学到这一
阅读全文
摘要:说明 从这一部分开始,是一些常用的功能或者小例子,涉及到的功能和代码复杂度会比较高,代码中也会加入越来越多的算法。 让小球做反弹运动 上一篇文章,我们让小球动力起来。接下来咱们让小球做个反弹运动。 在讲反弹运动之前,先来了解一下屏幕上绘制元素的坐标系: 窗口的布局,都是从左上角开始的。 左上角是0,
阅读全文
摘要:
先看效果 有了鼠标控制,再加上碰撞检测,基本上就是一个反弹球的小游戏了。 代码实现 这个功能其实很简单,三个步骤: 1、创建这个元素 2、获取鼠标的位置 3、把金色小球绘制到鼠标的位置 下面的代码分不同的模块给出了对应的代码。请大家尽量尝试自己添加到之前的代码里去。 实在不知道怎么加的,文章最后给出
阅读全文
先看效果 有了鼠标控制,再加上碰撞检测,基本上就是一个反弹球的小游戏了。 代码实现 这个功能其实很简单,三个步骤: 1、创建这个元素 2、获取鼠标的位置 3、把金色小球绘制到鼠标的位置 下面的代码分不同的模块给出了对应的代码。请大家尽量尝试自己添加到之前的代码里去。 实在不知道怎么加的,文章最后给出
阅读全文
摘要:
给程序添加页面的基本原理是用变量来区分不同的状态,然后写个判断,不同的变量值执行不同的代码。 先来看效果 看之前让我吐个槽。刚才编辑一半,结果我手贱点了个退出登录,然后都没了˃̣̣̥᷄⌓˂̣̣̥᷅ 开始按钮的图片是用豆包AI生成的,然后用美图秀秀抠图,改颜色。懒得自己搞素材的同学保存下面的三个图,注
阅读全文
给程序添加页面的基本原理是用变量来区分不同的状态,然后写个判断,不同的变量值执行不同的代码。 先来看效果 看之前让我吐个槽。刚才编辑一半,结果我手贱点了个退出登录,然后都没了˃̣̣̥᷄⌓˂̣̣̥᷅ 开始按钮的图片是用豆包AI生成的,然后用美图秀秀抠图,改颜色。懒得自己搞素材的同学保存下面的三个图,注
阅读全文
摘要:
这一篇实现的效果还是开始按钮,但是在代码上做了大量的封装。 在实现复杂功能的时候,把重复的代码封装起来,是编程必须掌握的技能。 后面我们会再用class类来做一次封装。 主要的修改: 把按钮相关的功能都用结构体封装了,尽量让main函数里的代码更简洁。 使用raylib自带的碰撞检测。 上代码: #
阅读全文
这一篇实现的效果还是开始按钮,但是在代码上做了大量的封装。 在实现复杂功能的时候,把重复的代码封装起来,是编程必须掌握的技能。 后面我们会再用class类来做一次封装。 主要的修改: 把按钮相关的功能都用结构体封装了,尽量让main函数里的代码更简洁。 使用raylib自带的碰撞检测。 上代码: #
阅读全文
摘要:
计分功能的实现依赖于绘制文字,绘制文字的功能一定要会哦。 接下来让我们开始计分。 准备工作 我们在raylib上绘制的是一个char *指向的字符串。所以计分功能的实现自然也是在这个字符串上动手脚。 我们先把计分需要的文字加载出来,然后限定只显示四位 注意理解下标: 计分算法的实现 首先我们要有一个
阅读全文
计分功能的实现依赖于绘制文字,绘制文字的功能一定要会哦。 接下来让我们开始计分。 准备工作 我们在raylib上绘制的是一个char *指向的字符串。所以计分功能的实现自然也是在这个字符串上动手脚。 我们先把计分需要的文字加载出来,然后限定只显示四位 注意理解下标: 计分算法的实现 首先我们要有一个
阅读全文
摘要:
本来想做一个文字逃脱游戏的demo的。但是写起来之后发现——是真的不好写,要实现的功能太多了。要是在一节课或者一篇文章里把功能实现完,我吃不消学起来也难受,索性就拆开实现了。 这一篇先实现一个拖动的效果。看图: 实现的功能: 一个小球,可以在鼠标按下的时候跟着鼠标走 从窗口中心位置,画一条线连接小球
阅读全文
本来想做一个文字逃脱游戏的demo的。但是写起来之后发现——是真的不好写,要实现的功能太多了。要是在一节课或者一篇文章里把功能实现完,我吃不消学起来也难受,索性就拆开实现了。 这一篇先实现一个拖动的效果。看图: 实现的功能: 一个小球,可以在鼠标按下的时候跟着鼠标走 从窗口中心位置,画一条线连接小球
阅读全文
摘要:
通过背景图的滑动来创造角色移动的效果是游戏的基础操作之一。像什么横版闯关游戏,超级玛丽、魂斗罗、迷宫类的都是这个原理。 这一篇就简单实现一个大的背景图在小窗口里移动的效果 背景的移动其实很好做,横坐标不停减就行了。这里我们讲一下怎么判断有没有到边界。画个图,计算一下边界值,这个式子很容易就出来了。
阅读全文
通过背景图的滑动来创造角色移动的效果是游戏的基础操作之一。像什么横版闯关游戏,超级玛丽、魂斗罗、迷宫类的都是这个原理。 这一篇就简单实现一个大的背景图在小窗口里移动的效果 背景的移动其实很好做,横坐标不停减就行了。这里我们讲一下怎么判断有没有到边界。画个图,计算一下边界值,这个式子很容易就出来了。
阅读全文
摘要:
恭喜你来到第四单元——封装。 面向对象和封装是编程世界极其精彩的部分。写得多了你会有一种掌控世界的感觉。 你仿佛能觉得自己的代码里可以装下整个世界。 很美妙,并且不要觉得这很夸张。就像《我的世界》里,手搓什么的都有,他们用简简单单的方块都能搓,更何况我们写代码。 万丈高楼平地起,让我们一点点开始。
阅读全文
恭喜你来到第四单元——封装。 面向对象和封装是编程世界极其精彩的部分。写得多了你会有一种掌控世界的感觉。 你仿佛能觉得自己的代码里可以装下整个世界。 很美妙,并且不要觉得这很夸张。就像《我的世界》里,手搓什么的都有,他们用简简单单的方块都能搓,更何况我们写代码。 万丈高楼平地起,让我们一点点开始。
阅读全文

浙公网安备 33010602011771号