游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2786|回复: 8

大家看看Quest写的坦克大战

[复制链接]

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2004-6-26 17:42:00 | 显示全部楼层 |阅读模式
Quest的第一个2D游戏,虽然有点简单
不过写的好辛苦啊.只有5关,里面有一个
简单的地图编辑器和所有的源码
[em20] [em20]

sf_2004626174231.rar

84.23 KB, 下载次数:

9

主题

50

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2004-6-26 21:24:00 | 显示全部楼层

Re:大家看看Quest写的坦克大战

1、砖快可以一次打1/8, 你做成一次只能打1/4了。
2、有的坦克可以打几次,而你的每个坦克只能打一次。
3、没有宝物和出宝物的坦克。
----------------------------------------------------------------
不过,能做出来已经非常不错了。

我也想做坦克大战,可是还没动手呢。

以后得向你学习。

谈谈你做这个游戏的“碰撞检测”模块的编程思想,好吗?
(1、子弹与地图元素、特别是砖块;
2、坦克与地图元素,特别是破碎的砖块。)

谢谢你!!
谢谢。

11

主题

132

帖子

132

积分

注册会员

Rank: 2

积分
132
QQ
发表于 2004-6-27 07:53:00 | 显示全部楼层

Re:大家看看Quest写的坦克大战

不必都和以前的一样。

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
 楼主| 发表于 2004-6-27 12:40:00 | 显示全部楼层

Re:大家看看Quest写的坦克大战

环境碰撞只要把像素坐标分别除以Tile的宽和高得到tile坐标
然后读地图索引值来判断是否碰撞,不过这只能做到tile级的
如果要把1/8的碎块做出来的话,最好是用读像素的方式,根据读到的像素颜色
来判断,比如黑色为没有障碍,其她为有障碍

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
 楼主| 发表于 2004-6-27 12:47:00 | 显示全部楼层

Re:大家看看Quest写的坦克大战

我这个只不过是简单的程序,不过要扩充还是挺方便的,多加几个state就行了
不过要砖快可以一次打1/8可是要对碰撞模块改动大了,因为我的tile只是1/4
快的,,估计FC中是用像素来判断碰撞的,因为FC中的tile是10x8或8x8的跟我的一样

28

主题

433

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
发表于 2004-6-27 19:28:00 | 显示全部楼层

Re:大家看看Quest写的坦克大战

??!FC 的机能 能 用像素来判断碰撞吗?

你的 tank 有时会被 卡住~~~~

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
 楼主| 发表于 2004-6-27 20:37:00 | 显示全部楼层

Re:大家看看Quest写的坦克大战

失误,,失误,,FC是Tile的,,那因该如何改进

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
 楼主| 发表于 2004-6-28 07:06:00 | 显示全部楼层

Re:大家看看Quest写的坦克大战

呜呜,,看来还是我自己来回答自己吧,,想要不卡很简单,,只要在坦克转弯时
根据障碍物使坦克的坐标对齐到相应的Tile像素坐标上即可

打1/8转快也很简单,,只要根据子弹的方向把1/4转快改为相应的1/8转快即可
这些都要预先做好Tile

现在我已经完成了完整的tank大战了(包括吃宝)




9

主题

50

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2004-6-28 10:56:00 | 显示全部楼层

Re:大家看看Quest写的坦克大战

看了一个“坦克大战”的代码,发现它的TILE用以下结构表示。

struct TILE
{
        int index; // the bitmap index of the TILE
        WORD mask; //用来判断破碎的TILE
}

----------------------------------------
对除了砖块和钢铁的TILE,mask = 0xffff
即:

1111
1111
1111
1111

------------------------------------
对于上半块TILE, mask = 0xff00
即:

1111
1111
0000
0000

同理可得:对下半块,mask = 0x00ff
---------------------------------------
同样对左半块TILE, mask = 0xcccc
即:

1100
1100
1100
1100

同理可得:对右半块, mask = 0x3333
-----------------------------------------

对于碰撞检测的方法,我还没看出来呢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-2 20:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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