c++ 图形编辑器_C语言 推箱子 EGE精美图形界面版

0052efaf8fc23c14c7b4117d8a534bfa.png

使用C语言和EGE图形库实现简单精美的推箱子小游戏

如果您喜欢我的文章可以点赞支持一下。

如果您对我的程序有什么意见和建议欢迎在评论区发表评论。

这是我目前为止写的,无论从时间上还是从工程量上来说都是最长的一个小程序。

从初学EGE到攻克所有的技术难点,总共历时五天。

全代码一千一百多行。

在此向帮助过我解决问题的陌生人和老师表示由衷的感谢。

首先展示几张程序的运行效果:

主菜单界面

bd56a34b88ae0ae6e7ff7da0f8fdb6f7.png

游戏进行中界面:

2634ef932e78ac81364306f561efcc81.png

12b3060c951396af11a3e3475852ac08.png

7fd4bdf09c8e4ff207261d8dcb92c80e.png

关卡选择界面

07b76b1a61a3d3f43cd912a19f08e449.png

游戏商城界面

0b391bbdf7e44a75e76542f1319e602a.png

地图编辑器界面

37ab86ce81fb2f5b40dcdce01a80ce83.png

程序中除操控人物移动外所有操作均使用鼠标操作

下面进入技术环节:

C语言 EGE实现图形界面版推箱子

编译环境: Windows VS2019

其他编译器,可通过查看下文的“注意事项”将代码更正为其他平台可正常版本

需求:

界面之间互相跳转、选择关卡、控制人物移动推箱子、游戏商城、地图编辑器

思路:

使用EGE库函数在图形界面上画出图片。使用三维数组存储所有关卡。

使用wasd键控制地图数组中的值,根据值的改变实现界面的改变。

地图编辑器根据鼠标移动到的像素坐标判断他属于哪一个格子,鼠标点击则再改格子的位置画出相应图片。

做法:

游戏部分:双重循环找出二维数组中人物的位置,并根据按键和条件改变数组中的值,然后根据数组中的值画出这个数组所对应的地图。

编辑器部分:以格子宽度,通过将循环初始值0加格子边框距离边界的像素值,小于这个像素值加总的格子的宽度,最后内外层循环各循环16次,再根据这个像素值区分鼠标当前坐标所在的格子区域的xy坐标,当鼠标点击左键时在对应xy处画出对应图片。

具体详细做法清查看代码。

使用到知识点:

三维二维数组,写入文件,函数之间相互调用,EGE相关操作

难点:

EGE各种函数的使用

函数之间相互调用

根据按键改变数组中的值

编辑器循环确定鼠标对应网格坐标(不在左上角的情况)

说明:

在写程序的过程中,因为比较赶进度,所以在ege函数的用法和代码规范上可能存在较多缺陷,还请大家多多包涵。

如需要程序需要的图片素材请对我留言。

注意:

因为该程序需要用到ege库函数,所以在编译使用该代码之前需要配置ege图形库

并使用c++编译器进行性编译。

如果要在VS之外的编译环境编译,需要将

文件打开函数fopen_s(&fp, buff, "w");更改为fp = fopen(buff, "w");

fprintf_s更改为fprintf fprintf_s()更改为fprintf

代码实现:

#include 

不足之处和反思:

关于内存管理方面的知识我掌握的并不是很好,因此在写程序的过程中还闹出过几次笑话。

我在写程序的过程中遇到的两个我曾经认为比较大的问题,后来被证明全都是其他地方、并且我早已想到只是没有去解决的问题。

虽然我解决了程序中大部分的问题,但是该程序在内存管理和其他方面还肯定存在着很多其他问题。

ege的库函数大部分是使用c++写的,如:类、对象、函数重载等。这些概念在c语言中并不存在。

在完成这么一个稍显复杂的小程序后,我发现用c面向过程的方法去写稍大的程序会非常复杂,且代码复用率低。且通过写这个程序又暴露了部分我在一些方面的不足。

所以综上考虑,在巩固完基础知识和学习完面向对象程序设计之前,我不会再用C语言写一些其他花里胡哨的程序了。

欢迎大家在评论区对我的程序提出意见和建议。

----

感谢您阅读了这篇文章。

最后,感谢所有愿意对我提出批评和建议的人,您的支持是我坚持下去的强大动力!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值