QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: lanche

坦克大战 (练习项目,谁都有机会说两句)

[复制链接]
发表于 2004-7-21 01:53:21 | 显示全部楼层
唉,看来没有图的话……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2004-7-21 09:06:59 | 显示全部楼层
在坦克游戏里,建议不要加入加速度模拟,因为对于坦克这些小画面娱乐游戏,加入加速度模拟将让操作感大大下降,失去那种干脆利落的行进感,导致新手感觉操纵不灵,老手又觉得过于简单
回复

使用道具 举报

发表于 2004-7-21 09:24:48 | 显示全部楼层
那么如果是宇宙飞船呢……
回复

使用道具 举报

 楼主| 发表于 2004-7-21 22:10:12 | 显示全部楼层
看来sjinny是想做一个飞船游戏,我支持你!
虽然我不懂C++(),但明白受力模拟在飞船游戏中是非常有用的,但你的代码好象没有作边界检查,而且受力也太大了,我在试运行时不小心眨了一下眼睛,“飞船”就早已飞出屏幕外面,而信息则显示坐标x和y也早已是正负几万了。

我的坦克大战已经添加了不少代码,但www.8u8.com的原因无法更新我的网页。
回复

使用道具 举报

发表于 2004-7-21 22:39:35 | 显示全部楼层
老兄,我那个演示里……
物体质量是1kg,按住方向键的时候物体在相应方向上的受力是1N,所以……物体的加速度会是1 m/s^2或者sqrt(2) m/s^2……还是很大滴……屏幕上坐标的单位也是m……你跟默难一样……不适合驾驶神州号……
其实受力大小可以改变的……至于飞船嘛……得看玩家有没有购买大功率的引擎了……

边界检查嘛……我想你是指碰撞检测吧……Map对象的一个成员函数:
int check(Obj *obj);
就是用来做碰撞检测的~
或者你是指飞出屏幕边缘?恩……其实我想的是……一个地图会比一个屏幕要大得多……到时候只要不飞出地图边缘就行了……
回复

使用道具 举报

 楼主| 发表于 2004-7-21 23:02:25 | 显示全部楼层
我也玩过类似游戏,很不好操作,除非是很频繁地按键盘,我可心痛的,管它什么神州五,撞就撞呗,早点造神州六...
回复

使用道具 举报

发表于 2004-7-21 23:39:17 | 显示全部楼层
呵呵
关于地图,有什么想法吗?
我的想法:
提图是拼接起来的。
在运行期间,使用一个三维数组来管理地图上的各种元素。
地图是分层的,不同层的对象只有显示时的遮挡关系,同层的对象则会有碰撞发生。
那个三维数组,类型是一个Tile类(偶英语学的不好,有的变量名就用中文了):
[code:1]
class Tile
{
protected:
  SDL_Surface* img;
  bool 是否是障碍;
  int hp;//一个很大的负值表示不会被破坏,正值则表示可以被破坏,正值也表示受损程度
}
[/code:1]
运行时所有可运动物体(子弹、飞船等)都是单独的对象,用链表管理。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 21:01 , Processed in 0.036704 second(s), 14 queries .

© 2021 Powered by Discuz! X3.5.

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