游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10260|回复: 23

[讨论] 3D连连看策划草案

[复制链接]

3

主题

57

帖子

57

积分

注册会员

Rank: 2

积分
57
QQ
发表于 2005-12-5 15:34:00 | 显示全部楼层 |阅读模式
还只是一个草案
请大家多多批评
此外不知道是否有人有兴趣实现
呵呵

sf_2005125153339.doc

54.5 KB, 下载次数:

41

主题

2104

帖子

2109

积分

金牌会员

Rank: 6Rank: 6

积分
2109
发表于 2005-12-5 15:48:00 | 显示全部楼层

Re:3D连连看策划草案

我觉得只要你能同时看得见两块相同的积木,他们就能连起来……
你想想是不是……

3

主题

57

帖子

57

积分

注册会员

Rank: 2

积分
57
QQ
 楼主| 发表于 2005-12-5 15:55:00 | 显示全部楼层

Re:3D连连看策划草案

不是的
还是以4*4*4矩阵说
1,2,2和3,3,1就无法用三折线连接

4

主题

122

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2005-12-5 16:05:00 | 显示全部楼层

Re:3D连连看策划草案

看到最后矩阵那里有点糊涂
琢磨了一下
楼主你说的是不是就是一个每面有16个方格的立方体
玩的时候,要不停旋转这个“魔方”,记忆每个面上的16个图案并和其它面的进行比对?
所谓“三折线”的规则,是不是也可以理解为“临面相消”呢?

总的感觉还不错
但一定要解决操作问题才行
只用鼠标的应该很累
希望把WASD用上,用这四个键旋转魔方,再用鼠标进行点选

41

主题

2104

帖子

2109

积分

金牌会员

Rank: 6Rank: 6

积分
2109
发表于 2005-12-5 16:07:00 | 显示全部楼层

Re:3D连连看策划草案

哦……我晕了……我把斜线算上了……

另一个问题……程序如何实现……

这是2D的算法

//--------------------------------------------------------
关于《连连看》的算法【大 中 小】【打印】【加入收藏】【关闭】 【收藏到新浪ViVi】【收藏到365KEY】 浏览字号:日期:2004-10-13 人气:2934 出处:闪吧 作者: orchin

连连看所要求的是:
1:两个目标是相同的
2:两个目标之间连接线的折点不超过两个。(连接线由x轴和y轴的平行线组成) 那么分析一下连接的情况可以看到,一般分三种情况
1:直线相连 2:一个折点 3:两个折点 如图:

可以发现,如果有折点,每个折点必定有且至少有一个坐标(x或者y)是和其中一个目标点是相同的,也就是说,折点必定在两个目标点所在的x方向或y方向的直线上。
所以设计思路就是:
假设目标点 p1 , p2 ,如果有两个折点分别为z1 , z2 那么,所要进行的是
1:如果验证p1 , p2 直线连线,则连接成立
2:搜索以p1,p2的x,y方向四条直线(可能某两条直线会重合)上的有限点,每次取两点作为z1,z2 ,验证p1到z1/z1到z2/z2到p2 是否都能直线相连 ,是则连接成立。(如果z1=z2也就是只有一个折点喽,对判断没影响)
那么程序算法上,这里先就理论进行一个试验
var mmap=new Array();
mmap[0]=new Array(0,0,0,0,0,0);
mmap[1]=new Array(0,1,2,8,1,0);
mmap[2]=new Array(0,5,5,4,3,0);
mmap[3]=new Array(0,4,6,7,3,0);
mmap[4]=new Array(0,8,2,6,7,0);
mmap[5]=new Array(0,0,0,0,0,0);
p1=new Array(1,4);
p2=new Array(1,2);
//定义一个二维数组作为游戏的映像,相同的数字代表相同的图标,0是空处,p1,p2是选择的点 linelink=function(o1,o2){
var t=new Array(0,0);
if(o1[0]==o2[0] || o1[1]==o2[1]){
if(Math.abs(o1[0]-o2[0])+Math.abs(o1[1]-o2[1])<=1){
return true;
}else{
t[0]=isNaN((o2[0]-o1[0])/Math.abs(o2[0]-o1[0])) ? o1[0] : o1[0]+((o2[0]-o1[0])/Math.abs(o2[0]-o1[0]));
t[1]=isNaN((o2[1]-o1[1])/Math.abs(o2[1]-o1[1])) ? o1[1] : o1[1]+((o2[1]-o1[1])/Math.abs(o2[1]-o1[1]));
return mmap[t[0]][t[1]]==0 ? linelink(t,o2) : false
}
}else{
return false;
}
}
// 上面这个函数是判断任意两个点是否能直线连接(中间的点全为0) var parr=new Array();
pickpoint=function(q1,q2){
var j;
parr.splice(0);
for(j=0;j<mmap[q1[0]].length;j++){
parr=mmap[q1[0]][j]==0?parr.concat([[q1[0],j]]):parr; }
for(j=0;j<mmap[q2[0]].length;j++){
parr=mmap[q2[0]][j]==0?parr.concat([[q2[0],j]]):parr; }
for(j=0;j<mmap.length;j++){
parr=mmap[j][q1[1]]==0?parr.concat([[j,q1[1]]]):parr; }
for(j=0;j<mmap.length;j++){
parr=mmap[j][q2[1]]==0?parr.concat([[j,q2[1]]]):parr; }
}
//上面这个函数是取出两个点的x和y直线方向上的所有空点保存进parr这个数组里面待搜索 islink=function(p1,p2){
var i,j
if(p1==p2){
return false;
}
if(mmap[p1[0]][p1[1]]<>mmap[p2[0]][p2[1]]){
return false;
}
if(linelink(p1,p2)){
return true;
}else{
for(i=0;i<parr.length;i++){
for(j=0;j<parr.length;j++){
if(linelink(p1,parr) && linelink(p2,parr[j]) && linelink(parr,parr[j])) {
trace(parr+"->"+parr[j]);
return true;}
}
} }
return false;
}
//上面这个函数是校验两个目标点是否相连,
//先判断是否同类点,再判断是否直线相连,最后搜索parr里的每对折点是否使目标点相连 pickpoint(p1,p2); //取得parr数组
trace(islink(p1,p2)); //测试p1,p2是否相连 嘿,运行试试?

//--------------------------------------------------

你可以试图把3D的算法用人类语言表达出来……

3

主题

57

帖子

57

积分

注册会员

Rank: 2

积分
57
QQ
 楼主| 发表于 2005-12-5 16:41:00 | 显示全部楼层

Re:3D连连看策划草案

三折线的计算确实很复杂
但是用同视同面就非常简单
首先,用户点选的两个方块都是同视的,否则无法操作(旋转视角会取消此前的点击方块操作)
然后,只要它们的3D坐标中有一维相同,就可消去
Over:)

3

主题

57

帖子

57

积分

注册会员

Rank: 2

积分
57
QQ
 楼主| 发表于 2005-12-5 16:50:00 | 显示全部楼层

Re: Re:3D连连看策划草案

panchan: Re:3D连连看策划草案

看到最后矩阵那里有点糊涂
琢磨了一下
楼主你说的是不是就是一个每面有16个方格的立方体
玩的时候,要不...


呵呵,您所说的视角不太对。
让玩家去记忆这一强度太大了,估计玩家不肯接受的
我的设定是让玩家从某一角去看,可以看到六个表面中的三个。
这样任何相接的平面都是可以在一个视角中看到的。

至于操作,我还没有能够仔细的去分析,参考3D俄罗斯方块游戏中的双向旋转控制三维应该是个不错的选择

4

主题

122

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2005-12-5 16:54:00 | 显示全部楼层

Re:3D连连看策划草案

正方体有8个角12条边
判定一下提交的两个图案所在的面有没有共同的边就知道它们是不是邻接的面了
具体怎么堆码子,不懂....

3

主题

57

帖子

57

积分

注册会员

Rank: 2

积分
57
QQ
 楼主| 发表于 2005-12-5 17:15:00 | 显示全部楼层

Re:3D连连看策划草案

和邻面相消还是不一样的,您可以参看一下我回答GeeGee大人的,呵呵
堆码子的事情就要涉及到关卡了
这个我觉得真的是要有个demo才能继续考虑了
我觉得我的空想完全把握不住-_-b

4

主题

122

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2005-12-5 17:16:00 | 显示全部楼层

Re: Re: Re:3D连连看策划草案

Leyes: Re: Re:3D连连看策划草案



呵呵,您所说的视角不太对。
让玩家去记忆这一强度太大了,估计玩家不肯接受的
我的设定是让玩家从某...

如果能看到的才算邻接面
那看不到邻接面怎么办?
规则说不通了吧,呵呵
sf_2005125171541.gif
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-4 16:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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