用c语言画出矩阵图形,[原创]关于制作地图时矩阵的使用(适合新手)

[原创]关于制作地图时矩阵的使用(适合新手)

*/ --------------------------------------------------------------------------------------

*/ 出自: 编程中国 http://www.bc-cn.net

*/ 作者: 奔跑的鸟

*/ 时间: 2007-8-9 编程论坛首发

*/ 声明: 尊重作者劳动,转载请保留本段文字

*/ --------------------------------------------------------------------------------------

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

望对大家有所帮助:

首先,应用矩阵的基础是将屏幕分割,例如应用这段程序:

#include

#include

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);

就可以方便的修改和制作地图了。

以上只是个示范,相信在实际制作地图的时候以上的分割数量远达不到精度要求,因而实际要分割到多精细你要自己从新设计,有一点,分

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

13a2f4bd84d8af35e7645442bb7a26a3.gif

高策

2007。8。9

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值