好吧,我马上道歉,因为代码实际上有点大。问题是,我正在与 SDL 合作,实际上是在学习。我已经设法创建动画,但我决定我想更深入一点。这就是代码的工作方式
App - 用途:这里有主循环,Init 函数,Render 函数,整个软件都源自这里。
动画 - 用途:这将包含并声明动画类中的所有功能。它仅在名为 Running 的布尔变量为 true 时才有效。
Surface - 用途:这会将文件加载到表面上,使某些颜色透明并将图像或部分图像绘制到 MainSurface 上。
事件 - 用途:这具有事件的所有虚拟功能
对象 - 用途:这是重要的部分。它工作得很好。在我在主类上拥有一个名为 Yoshi 的 Surface 之前,我将使用该 Surface 与动画进行交互。我认为在主类上显示“字符”的方法有点令人困惑,当屏幕上有多个图像时会引起问题。因此,我决定创建一个名为 Object 的类,它有自己的 SDL_Surface,它自己在屏幕上的位置,它自己的变量决定了它是哪一帧。我所做的是我在 APP 类上为这个类创建了一个对象......就像
Object MainCharacter;
因此,我将能够单独操纵该角色,如果我需要在屏幕上显示另一个对象,我会使用
Object *SecondCharacter;
等等......那么对象类将调用动画。APP 类将通过类似这样的函数渲染所有图像
MySurface::OnDraw(Surf_Display, MainCharacter.Img_Surface, MainCharacter.RetrievePosX(), MainCharacter.RetrievePosY(), MainCharacter.RetrieveFrameByID(0), MainCharacter.RetrieveFrameByID(1), 64, 64);
嗯......但问题是:代码停止工作。这远不是一个完成的代码,但我想马上解决这个问题,所以我只能在它已经有了一个基础之后才能完成。
以下是所有文件: 其中一些文件的行数不多。我还写了一些评论来帮助任何能够帮助我的人。
标题:
Animation.h - http://pastebin.com/v4REcmBd
Object.h - http://pastebin.com/KdeamZTG
Events.h - http://pastebin.com/dpQ7zwpG
CApp.h - http://pastebin.com/5zZYwDjv
Surface.h - http://pastebin.com/S66ChQ3f
来源:
Surface.cpp - http://pastebin.com/KRgAkHpw
Object.cpp - http://pastebin.com/RtDRwVj4
Events.cpp - http://pastebin.com/dpXn8Rh3
OnRender.cpp - http://pastebin.com/AqgMTacb
OnLoop.cpp - http://pastebin.com/UAeAt7y6
OnInit.cpp - http://pastebin.com/1iiZVeyK
OnEvent.cpp - http://pastebin.com/AjRXnKC1
OnCleanUp.cpp - http://pastebin.com/cv0M11nV
CApp.cpp - http://pastebin.com/L0jhfWY8
Animation.cpp - http://pastebin.com/0BZhh6TG
好吧,就是这些。其中一些真的很短。好吧,如果有人可以帮助我找出我的错误在哪里,我会很高兴。除此之外,我真的很想对软件的结构发表意见,你认为我在做什么实用吗?您在创建 SDL 软件或游戏时使用什么设计???