dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>C/C++>文章内容
关于制作地图时矩阵的使用(适合新手)
来源:本站原创     作者:    

原帖及讨论:

*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国  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

 

 

上一篇:很怀旧的游戏--吃豆子   下一篇:编程证明出世界未解数学问题
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·C语言学习
·C语言指针
·C语言数组排序小结
·c语言 最简单的推箱子游戏
·c语言 全国计算机编程大赛复赛试
·c语言 全国计算机编程大赛复赛试
·c++ 数组与指针
·C++中的内存管理(new、delete、
·如何用C语言开发DSP嵌入式系统
·如何用C语言开发DSP嵌入式系统
·Linux下C语言编程
·学习arm的话先看哪本书?
  相关文章
·很怀旧的游戏--吃豆子
·编程证明出世界未解数学问题
·三言两语,妙说《指针》。
·带符号数表示--机器数与真值--原
·程序测试程序(配合游戏及学习控
·最新Dev-c++与Allegor平台的搭建
·游戏及学习控制管理器
·关于main()函数
·函数型计算器(VC++6.0,win32 con
·C语言开发平台的搭建
·编程初学者易犯的毛病
·C语言猜数字游戏重写版
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763