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

文章作者 100test 发表时间 2007:09:06 13:15:42
来源 100Test.Com百考试题网


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

  望对大家有所帮助:
  首先,应用矩阵的基础是将屏幕分割,例如应用这段程序:
  #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);
  就可以方便的修改和制作地图了。
   以上只是个示范,相信在实际制作地图的时候以上的分割数量远达不到精度要求,因而实际要分割到多精细你要自己从新设计,有一点,  割的越精细则矩阵越大,所以不要过于贪求精细而分割太小,否则到时候成千上万的矩阵元素定义就有的你忙了。



相关文章


三言两语,妙说《指针》。
2007年计算机等级考试二级C语言考试真题
关于制作地图时矩阵的使用(适合新手)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛