| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2293 人关注过本帖, 1 人收藏
标题:[原创]关于制作地图时矩阵的使用(适合新手)
只看楼主 加入收藏
奔跑的鸟
Rank: 1
等 级:新手上路
帖 子:391
专家分:0
注 册:2006-1-20
结帖率:100%
收藏(1)
 问题点数:0 回复次数:9 
[原创]关于制作地图时矩阵的使用(适合新手)

*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bc-cn.net
*/ 作者: 奔跑的鸟
*/ 时间: 2007-8-9 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------


通过制作前面的游戏,我个人认为,利用矩阵来辅助制作游戏地图是很方便的,也很适合初学者掌握,因此特意将思想和方法总结一下,希

望对大家有所帮助:
首先,应用矩阵的基础是将屏幕分割,例如应用这段程序:
#include<graphics.h>
#include<conio.h>
int main()
{
int gd=VGA,gm=VGAHI,x,y;
initgraph(&gd,&gm,'');
setcolor(2);
for(x=19;x<600;x=x+40)
for(y=19;y<440;y=y+40)
rectangle(x,y,x+40,y+40);
getch();
closegraph();
return(0);
}

这样就将屏幕内的(19,19,600,440)内分割成了11行、15列的方格,则可以建立如下矩阵:
map[11][15]=
{ {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
};
这样建立好了对应的矩阵,矩阵建立好了就要使之与屏幕建立对应

for(my=0;my<11;my++)
for(mx=0;mx<15;mx++)
if(map[my][mx]==1) tree(19+40*mx,19+40*my);/*这只是例子,具体画什么你自己决定*/
这样就和前面建立的分割好的屏幕联系起来了,要注意,在这里屏幕的纵坐标要放在矩阵前面的括号里,而横坐标要放在后面的括号里,这样

才是真正正确的对应关系。
至此,矩阵和屏幕地图对应起来了,如果以后要加新的绘图元素,以后只要在开始修改矩阵的数字,再在上面的循环内加上
if(map[my][mx]==N) picture(19+40*mx,19+40*my);
就可以方便的修改和制作地图了。
以上只是个示范,相信在实际制作地图的时候以上的分割数量远达不到精度要求,因而实际要分割到多精细你要自己从新设计,有一点,分

割的越精细则矩阵越大,所以不要过于贪求精细而分割太小,否则到时候成千上万的矩阵元素定义就有的你忙了。
高策
2007。8。9

搜索更多相关主题的帖子: 矩阵 地图 制作 
2007-08-09 18:11
leopardxp
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2007-7-26
收藏
得分:0 
好东西~~~~

Never stop running
2007-08-09 18:19
奔跑的鸟
Rank: 1
等 级:新手上路
帖 子:391
专家分:0
注 册:2006-1-20
收藏
得分:0 
分享经验,互相帮助,共同提高,哈哈

简单的快乐着~
2007-08-09 19:10
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
收藏
得分:0 
哦,奔鸟叫高策啊?呵呵,写的不错,顶一个。
2007-08-10 08:33
RockCarry
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:13
帖 子:662
专家分:58
注 册:2005-8-5
收藏
得分:0 
这个就被称为TILE
2007-08-10 19:50
anlogo
Rank: 2
等 级:论坛游民
威 望:1
帖 子:293
专家分:20
注 册:2007-7-20
收藏
得分:0 
学习了
2007-08-11 14:01
奔跑的鸟
Rank: 1
等 级:新手上路
帖 子:391
专家分:0
注 册:2006-1-20
收藏
得分:0 
请教RockCarry大侠什么叫TILE?

简单的快乐着~
2007-08-11 14:34
RockCarry
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:13
帖 子:662
专家分:58
注 册:2005-8-5
收藏
得分:0 

TILE就是一个图块,游戏地图有许多小图块拼接而成,使用用一个矩阵加图块的方式,就可以很好的来表示游戏地图。这种技术在2D游戏引擎中经常使用,又被称为TILE地图。

2007-08-11 19:24
奔跑的鸟
Rank: 1
等 级:新手上路
帖 子:391
专家分:0
注 册:2006-1-20
收藏
得分:0 
多谢指教:)又长知识了,呵呵

简单的快乐着~
2007-08-11 19:27
廉价的咖啡
Rank: 2
来 自:湖北 荆门
等 级:论坛游民
威 望:2
帖 子:53
专家分:17
注 册:2014-10-9
收藏
得分:0 
赞一个

就在这一刻,你的对手依旧不停的翻动书页。
2014-11-18 01:43
快速回复:[原创]关于制作地图时矩阵的使用(适合新手)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035800 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved