游戏中精灵管理类,源代码全公开。

tlovexyj 2002-01-11 07:44:53
有个想法,对于游戏中的SPRITE,如果所用的图片很多,管理起来就很费事。
联想到用OO的方法,因为每个动作对应一系列图片,所以如果代码像这样写,就很方便了:

初始化:
CSprite me;
me.LoadPic(动作名1, 帧数, 每一帧对应的图片, 帧间延时)
me.LoadPic(动作名2 ... ...
...
... ...
用户操作:
行走时:
me.SetAction("行走");
跳跃时:
me.SetAction("跳跃");
...
... ...
绘制场景时:(只用一句话就好了:)
me.Show(x, y, desSurface);

当然对于Sprite的一系列管理全自动化了;)

因为网上谈如何优化的文章太多,可总没有一个是为了方便操作而写,初学者看了总会被减低很大的信心。
而我这个SPRITE类,是为了让初学者和高级玩家都可以写自己的游戏,以面向对象的观念来看待SPRITE,未来会加上GP的概念,我想会把timer和显示
等功能交给用户来扩充,因为我写的不一定是最好的:)。可能会是一个类似blt的CALLBACK函数。
还有一些SPRITE的通用操作,正在加入中。


具体情况请到我主页上浏览,并附最新demo及SPRITE类的源码。
大家可以通过源码看看,虽然demo功能不怎么样,但写这样的一个游戏,用SPRITE类是多么的简单。

http://tlovexyj.yeah.net 永久域名

或直接访问: http://go7.163.com/tlovexyj
...全文
392 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
tlovexyj 2002-01-18
  • 打赏
  • 举报
回复
up~
tlovexyj 2002-01-17
  • 打赏
  • 举报
回复
哦,正在改进!
TalentSprite 2002-01-17
  • 打赏
  • 举报
回复
你网页上的字看不清楚。
tlovexyj 2002-01-17
  • 打赏
  • 举报
回复
本站最新更新:
kao,放弃了原先开线程做timer的想法,虽然已经在上面花了大量的时间,可是实际效果决定一切(它甚至没有WM_TIMER的效果好)。我认为主要原因有2:1是在循环访问时浪费时间太长 2是线程无法像windows本身一样可以不停得run,这样导致计时不精确,如果把线程级别打高,又会影响游戏效果。所以,放弃。

现在请大家忘掉老的CTimer,新的CTimer简单、有效!
程序加入了CDirectInput类和FPS类。
CDirectInput类可以根据选择,自动处理用户的键盘和鼠标的输入!
FPS类使用更加方便(不过它需要CTimer的支持)。在声明一个object后,在游戏loop中加入,fps.Refresh()即可,返回fps数。

请大家下载最新的kof_source 源码 125K 或 直接可执行程序 58K
程序若想切换到窗口模式,请将Headers.h中的宏CHANGE_TO_FULLSCREEN注释掉即可!
tlovexyj 2002-01-16
  • 打赏
  • 举报
回复
呵呵,具体代码,已经发表:
请光临我的主页:
http://tlovexyj.yeah.net
tlovexyj 2002-01-16
  • 打赏
  • 举报
回复
who said~?
where?

活活活
starcbh 2002-01-16
  • 打赏
  • 举报
回复
hehehehe
mjm_d 2002-01-16
  • 打赏
  • 举报
回复


to tlovexyj(菠萝菠萝蜜) 
纯属变相侵犯知识产权
shinco 2002-01-15
  • 打赏
  • 举报
回复
tlovexyj(菠萝菠萝蜜):
你在上面说的写自己的TIMER。是否对系统的8253(8254)进行记数值重写来改变时钟频率。8254的实模式下的操作我会,因为在《汇编和接口》学过。但是我想在WINDOWS下应该要写成保护模式的才有用。我正在自学保护模式的编程,不知你的CODE能否SEND 我一份,我的妹儿是xiongxinke@163.com先谢了.
另外,你是否已经工作了?在游戏公司?
microkurt 2002-01-15
  • 打赏
  • 举报
回复
dachun 2002-01-15
  • 打赏
  • 举报
回复
下个来参考参烤
tlovexyj 2002-01-15
  • 打赏
  • 举报
回复
2 shinco:
虽然我从没做过kof,不过我想像这种格斗游戏:
1 不是用线程控制,请要不把思维限制在win32下。不过应该是利用类似消息机制。如:
1p control function()
{
...
getInfo()
...
}
2p control function()
{
...
getInfo()
...
}
draw()
{
如果打起来了... ...
show1p(); //内部图片自动管理
show2p();
}

2. 你指的是3d游戏吧。其实它也应该和2d是一样,不过有的是需要确定运动动作。如一些3d的格斗游戏; 有的需要实时演算,如:极品飞车。

应该发现,在现在的SPRITE类中,关于settimer后没有killtimer。不是我忘了,而只是想暂时用一下win32的timer,因为它不精确,也不准确。
自己的timer已经写好,正在做测试。
近日推出。
tlovexyj 2002-01-15
  • 打赏
  • 举报
回复
2 shinco:
mergen没有试过,下过一个下来不过98、2000下都运行不了。
还是想自己做着试试。;)
jacket3 2002-01-15
  • 打赏
  • 举报
回复
格斗游戏我喜欢耶!可以试试喽!
shinco 2002-01-15
  • 打赏
  • 举报
回复
Thanks tlovexyj
现在做格斗游戏可以用MERGEN来做,首先把各个角色的EXE文件给做出来,然后用MERGEN主程序给串起来,不知你是否有研究?
SwordGrass 2002-01-15
  • 打赏
  • 举报
回复
很有价值
shinco 2002-01-14
  • 打赏
  • 举报
回复
ASK MR tlovexyj(菠萝菠萝蜜)
在实时格斗类游戏中,比如像KOF,每一个人物的控制是否由不同线程控制?另外每一个人物是否先建好骨架并确定动作的运动函数,然后贴图,或者就是实时生成? 
tlovexyj 2002-01-14
  • 打赏
  • 举报
回复
up~
gagasame 2002-01-13
  • 打赏
  • 举报
回复
up~
tlovexyj 2002-01-13
  • 打赏
  • 举报
回复
up~
加载更多回复(6)

8,325

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧