第一次尝试,抱住路过的佬们的大腿!(带带我呀)
前言
现在是2023.1.15.23:08,又在赶ddl,但其实1月初就做完了,但一直拖延到今晚才来记录一下,也是借机再复盘一下这次4个星期的历程,以及遇到的问题吧!作为纯纯新手小白的我,这篇记录肯定会有很多不严谨,甚至是错误的地方,也请看到的佬们多多指教,如果能够纠正我,真的感激不尽!!!(真的对很多东西一知半解,甚至是完全不明白,仅限于拿过来用,甚至是照抄的程度!)
一、SDL学习的历程
这部分看了两个系列的视频,时长总计
1.【事SDL2的一些基本操作捏~】 https://www.bilibili.com/video/BV1QZ4y197Yk/? share_source=copy_web&vd_source=9d1b426da133239720fc8c3d6510f712
sa酱带领我进入SDL的世界。认识的最基本的:main函数的创建,renderer的渲染,事件处理模块,QUIT以及free的重要性。
2.【SDL入门教程】 https://www.bilibili.com/video/BV1gs411X7zz/?share_source=copy_web&vd_source=9d1b426da133239720fc8c3d6510f712
同样也是SDL基础的入门引领。
3.【SDL2 C语言跨平台游戏开发基础 陈云老师】 https://www.bilibili.com/video/BV1rK411V7eu/?share_source=copy_web&vd_source=9d1b426da133239720fc8c3d6510f712
开始实现动画,但是后来才发现,实现动画和游戏操控的逻辑完全不一样,又反复纠结,思考了一个星期左右。
4.【C语言编写游戏(SDL)】 https://www.bilibili.com/video/BV11W411373o/?share_source=copy_web&vd_source=9d1b426da133239720fc8c3d6510f712
我真正领悟了,什么是游戏的操控!从这里,项目才有了实质性的进展。
二、问题以及我的解决方法
1.环境配置
至今还是感觉环境配置真的好难,好难!!!
我的方法是把SDL的库下载之后,直接在CMakelist里面写下了如下的代码,但是现在也不知道什么才是标准的写法。
(sa酱gg的指引)
(【【配环境如此简单】C 图形界面 SDL2 配置教程(2022新版)】 https://www.bilibili.com/video/BV1w841157uD/?share_source=copy_web&vd_source=9d1b426da133239720fc8c3d6510f712
target_link_libraries(V2V_Adventure mingw32)
target_link_libraries(V2V_Adventure SDL2main)
target_link_libraries(V2V_Adventure SDL2)
target_link_libraries(V2V_Adventure SDL2_image)
target_link_libraries(V2V_Adventure SDL2_ttf)
2.如何渲染图片
sa酱gg的教程里教了,SDL_Createsurface+SDL_CreateTextureformSurface+SDL_Rendererpresent,不过这里写的不能保证对,在IDE(编译器)里面输入一点就会有提示啦,不过后来我改成直接CreateTexture了,前一种方法内存占用更多,但反应更快,后一种则相反,
3.如何做动画
刚开始是每次先全部present之后,clear,再重新present,来改变人物的位置,后来才发现可以直接通过修改图像的x,y来更新位置。
4.如何更新位置
从这里开始才是精髓!用了一个结构体存储所有需要的东西,eg:人物,障碍物,道具;然后在draw,gameplay模块都当做参数传进去!就起到控制的效果啦!这一步简直就是灵魂!
5.怎样渲染分数
因为分数是在实时变化的,可是SDL的渲染字体部分函数只支持const char类型的,那要怎么把一个变量给渲染出来呢?用sprintf函数!每次都sprintf一次就好啦!!!
6.段错误
段错误的类型很多,我这次犯的是乱用指针,具体表现为在函数体内部又开了一个SDL_Renderer,导致renderer冲突了,所以不可以乱用指针!!!
7.电脑插上电就跑得快???
emem,这个也是我没有完善的地方,是因为没有控制帧率,导致虽然游戏的速度虽然是设置好的,但是,与电脑的cpu性能直接挂钩惹!
三.心得
第一次接触编程的世界,我现在的水平在与链表搏斗的阶段,真的觉得程序员真的各个都是聪明人!!编程让我看待世界发生了改变,也逐渐开始习惯于分析现象背后的原理了,我不像佬们,三两天搞定,这个小游戏,我总共花了三到四个星期,但其实最多的时间还是花在了找引导资源以及做自我的心理建设了,希望以后做事情,特别是写程序可以不要急躁,不要崩溃,要有韧性,有三四个小时毫无进展的淡定,骂归骂,编程在我心里,其实真的还是挺有意思的,希望未来的我看到这篇记录,能够会心一笑吧!