游戏开发论坛

 找回密码
 立即注册
搜索
查看: 9518|回复: 18

古月学习问题集锦(1)

[复制链接]

26

主题

101

帖子

119

积分

注册会员

Rank: 2

积分
119
发表于 2005-10-2 22:35:00 | 显示全部楼层 |阅读模式
胡兄:
  小弟乃初学,为了加快学习的进度,试着改写一个飞机的游戏,现在遇到了几个问题,请指教,小弟不胜感激。(相关图片资源在附件中)

1。如何实现图片的滚屏。
现在背景图片是640×1440大小,游戏是640×480,要作到背景图片不停的向下滚动,我简单的利用Draw()的位置来实现,发现画面有干扰,不很干净,不知道如何用其他方法实现?
(background.bmp)

2。如何实现图片中某种颜色为透明色?
我想读出我的精灵图片在某一个点的颜色,然后设置这种颜色为透明色,如何实现?(plane.bmp)

3.如何实现图片动画效果?(flame.bmp)

4.游戏的背景音乐如何循环播放?

sf_2005102223442.rar

226.98 KB, 下载次数:

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2005-10-3 12:21:00 | 显示全部楼层

Re:古月学习问题集锦(1)

1.不知道你所说的不干净是何意义,但你的背景图有使用jpg格式,所以会造成图片压缩有损失。
2.透明色不被古月所支持,你在转换BMP到TEX时,在转换列表中双击图片,会出现一个预览窗口,在里面点击图片要透明掉的颜色即会出现透明色设置效果。
3.另外你可以将图片做成GIF或是其它可以带ALPHA通道的图,直接在绘图软件里实现透明,转换时即可自动支持。
4.动画请将图片做成GIF动画,然而转换成.Anim,使用时和普通texture2d一样,它自动会刷新图片内容。
5.放动画还有一种办法就是做成多层PSD,转换成HGP后手动换层实现动画。当然你要做成多个.TEX也是可以的。
6.使用AudioPlayer,在调用AudioPlayer:lay时,带上参数Play(true)就是循环播放。

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2005-10-3 13:25:00 | 显示全部楼层

Re:古月学习问题集锦(1)

刚发了播放GIF小动画的例子,用的就是你的动画文件,把那几行代码抄过去就可以了,动画文件也替你做好了。

那第一个问题还是要麻烦你说的清楚一点儿!不然无法解决。

26

主题

101

帖子

119

积分

注册会员

Rank: 2

积分
119
 楼主| 发表于 2005-10-7 23:12:00 | 显示全部楼层

Re:古月学习问题集锦(1)

多谢胡兄!动画文件的制作,请问有没有一个快捷的方法来转换和制作,你也知道很多资源图片都是这个样子的,在一个图片里面放着每一帧的图片,分割起来费时费力,你可以替我做好一个,但是替我作不了全部,所以有没有省时省力的方法推荐。

关于第一个问题,现在我也描述不清楚,暂且放下先,如果将来还是不行,在发代码给你,帮我看看。多谢啦!

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2005-10-8 09:19:00 | 显示全部楼层

Re:古月学习问题集锦(1)

目前有一些动画GIF文件制作工具你可以使用,比如Animiation Shop Pro,Image Reader等。

所有的帧放在一块是旧技术下的产物,可以提供解决方案,但存在很多问题,而且想彻底解决势必是要提供动画剪切编辑工具。

26

主题

101

帖子

119

积分

注册会员

Rank: 2

积分
119
 楼主| 发表于 2005-10-13 11:35:00 | 显示全部楼层

Re:古月学习问题集锦(1)

5.很多函数的参数意义在哪里可以找到啊,有没有详细的说明,例如:
glBegin(GL_POLYGON);
glBegin(GL_LINES);

6.关于DisplayList的使用,不是很明白,具体实现的原理可以简单介绍一下吗?

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2005-10-13 13:57:00 | 显示全部楼层

Re:古月学习问题集锦(1)

glBegin这一类gl开头的函数是OpenGL函数,查OpenGL的相关手册即可。

最简单的办法是查开发工具中的帮助,不管是BDN,MSDN都有这个的帮助信息。

DisplayList是记录从DisplayList::Compile开始到DisplayList::End之间的所有绘图操作,

执行DisplayList::Execute即会将记录的绘图操作再重现一篇。

26

主题

101

帖子

119

积分

注册会员

Rank: 2

积分
119
 楼主| 发表于 2005-10-16 09:01:00 | 显示全部楼层

Re:古月学习问题集锦(1)

7.关于全屏的设置,例如我在设置中设置为640×480全屏,但是我的系统分辨率为1024×768,游戏在运行中没有将系统分辨率修改过来。也就是说在1024×768的界面上出现了一个没有边框的小窗口(640×480)。如何实现真正的全屏?

8。 鼠标光标的设置,游戏中我想用一个图片来替代原有的鼠标光标,如何消除原有的系统光标?

26

主题

101

帖子

119

积分

注册会员

Rank: 2

积分
119
 楼主| 发表于 2005-10-16 09:13:00 | 显示全部楼层

Re:古月学习问题集锦(1)

9。滚屏的实现。例如在由随机高度图产生2D斜45度地图的例子中,用鼠标可以拖动地图的移动显示,现在如何实现鼠标往边上移动,实现滚屏?

10。随机数的实现。在用到rand()函数的时候,需要添加#include <stdlib.h>,如果这样子,部分例子就会有冲突了,编译出错。例如时钟,还有accoressmap等例子。
"

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2005-10-16 13:16:00 | 显示全部楼层

Re:古月学习问题集锦(1)

7.你没有设置sii.graphics.fs.FullScreen=true;
如果不做这个设置,那sii.graphics.fs.Width等指定的值会是窗口大小。

8.在Application->Run()之前,设置Application->SystemCursor=false;就会隐藏系统光标。
之后每次通过OnMouseMove来取鼠标坐标值,自己绘制鼠标就可以了。

9.一般是以鼠标在最边上的象素时就移动。你可以在OnMouseMove函数里添加一个标记,如果鼠标在最边界上,就移动的偏移值。如果不在最边界上,就将偏移值设成0。然后每次Draw时将地图的总偏移值加上这个值。

10.函数冲突是标准库的一些问题,暂时可以用“换一个函数”的办法来解决。

P.S: 针对问题8,我们将在v18.LR-21中提供v17时代的MouseBase程序,来更为方便的实现自绘鼠标程序。

针对问题9所以我们将提供一个示例程序来为大家演示如何实现这一设计。这个示例不必等待v18.LR-21,很快就可以提供。

问题10,我们将提供自有的随机数函数,用以解决标准库冲突的问题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-12-12 05:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表