游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4239|回复: 13

自娱自乐开发3D俄罗斯方块遇到问题 请教

[复制链接]

3

主题

11

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2007-9-13 16:54:00 | 显示全部楼层 |阅读模式
我在一个结构中存储了方块模型的每个部分的几何中心,我想问每次位置更新时我该怎么存贮这些信息以便下个方块出现之后检测它的下个移动位置有没有物体,用map行吗,用几何中心的坐标当KEY,每次方块移动之前现在集合理查询是否有物体挡着,不知道还有没有别的方法 [em24]

1

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
发表于 2007-9-13 17:04:00 | 显示全部楼层

Re:自娱自乐开发3D俄罗斯方块遇到问题 请教

建议整个方块区状态用一个二维数组保存, 显示只是把这个数组用3d的方式显示出来。 一切逻辑碰撞判断都通过这个数组来做。

3

主题

11

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2007-9-13 17:54:00 | 显示全部楼层

Re:自娱自乐开发3D俄罗斯方块遇到问题 请教

什么意思 我不明白啊
怎么用数组判断碰撞?

1

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
发表于 2007-9-13 18:48:00 | 显示全部楼层

Re:自娱自乐开发3D俄罗斯方块遇到问题 请教

也就是说不要“用几何中心的坐标当KEY”,用数组中的值表示是不是方块。

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2007-9-13 19:41:00 | 显示全部楼层

Re:自娱自乐开发3D俄罗斯方块遇到问题 请教

就是把方块显示效果和方块的数据信息分开来

把方块出现在什么地方什么形状等等储存在数组中
而显示的效果是通过读取这个数组的信息后才生成的显示结果

有种说法就把这叫分层吧,好像就这样(我的理解)

3

主题

11

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2007-9-13 20:45:00 | 显示全部楼层

Re:自娱自乐开发3D俄罗斯方块遇到问题 请教

我这些俄罗斯方块是.x文件读进取的,信息里本来就只有位置信息啊,至于显示信息都在Mesh里啊

1

主题

4

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2007-9-13 22:20:00 | 显示全部楼层

Re:自娱自乐开发3D俄罗斯方块遇到问题 请教

map是二叉树,还不如用hash,如果方块的移动是离散的,步幅比较大不如用数组。

3

主题

11

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2007-9-13 23:25:00 | 显示全部楼层

Re:自娱自乐开发3D俄罗斯方块遇到问题 请教

数组?
那我怎么检验某个位置是否有其他方块,难道遍历数组啊,那多慢!

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-9-14 01:36:00 | 显示全部楼层

Re:自娱自乐开发3D俄罗斯方块遇到问题 请教

用数组不是让你遍历,而是你可以马上得出相邻的区域,根据相应的标志位,马上就能判断碰撞。

area[4][3]

000
020
000
111

比如你在2-area[1][1], 下一个位置自然是area[2][1] 你利用行索引就能立马得到相应位置的标志位。

1

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2007-10-7 02:28:00 | 显示全部楼层

Re:自娱自乐开发3D俄罗斯方块遇到问题 请教

我自己用GUI做了个,是二维平面的.挺简单的.
我用的方法是试探法:就是先定义个图形变量(四个坐标了),把当前的那个图形变量的下一个赋给它,然后将他代入检测是否合法.如果合法.则当前图形就取下个.不合法,,我不用说了吧.
真的不难这个游戏.我只是一个晚上就搞定了.
说实话我刚开始看DX,所以对你的问题没有太.但是我还是把自己的想法说说.虽然不知道对不对得上号..
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-20 12:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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