您的位置:首页 > 运维架构

OpenGL制作简易地图(二)

2012-07-12 21:44 148 查看
1.设置一个活动的block,从红方块出发,随机寻找兰方块,直到找到位置才停止.

2. 部分代码

#include "tree.h"
#include "global.h"
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

struct Tree_Node
{
NODE_ID id;
POS pos;
short status;
TREE_NODE *left_node;
TREE_NODE *right_node;
TREE_NODE *up_node;
TREE_NODE *below_node;
};

TREE_NODE * new_node()
{
TREE_NODE *t;
t=(TREE_NODE *)malloc(sizeof(TREE_NODE));
t->below_node=NULL;
t->left_node=NULL;
t->right_node=NULL;
t->up_node=NULL;
return t;
}

void create_tree()
{
TREE_NODE *t;

for(int i=0; i<N; i++)
for(int j=0; j<M; j++)
{
t=new_node();
t->pos.i=i;
t->pos.j=j;
t->id=getID(i,j); //maping the code from MAP[][] to tree_ node[][]
tree_node[i][j]=t;

}

init_move_matrix();
}

void init_move_matrix()
{
move_matrix[0].i=1;
move_matrix[0].j=0;

move_matrix[1].i=1;
move_matrix[1].j=1;

move_matrix[2].i=0;
move_matrix[2].j=1;

move_matrix[3].i=-1;
move_matrix[3].j=1;

move_matrix[4].i=-1;
move_matrix[4].j=0;

move_matrix[5].i=-1;
move_matrix[5].j=-1;

move_matrix[6].i=0;
move_matrix[6].j=-1;

move_matrix[7].i=1;
move_matrix[7].j=-1;

}

NODE_ID getID(int i,int j) // get the ID from map for each position
{
int t=0;
t=MAP[i][j];
switch(t)
{
case 0:
return FREE;
break; // FREE PLACE
case 1:
return BLOCK;
break;   //BLOCK POSITION
case 2:
return BLUE;
break; // START POSITION
case 3:
return RED;
break;   // TARGET POSITION
default :
return FREE;
break;

}

}

bool goNEXT()
{
srand(time(NULL));
while(1)
{

int t=rand()%8;
int x=temp_pos.i+move_matrix[t].i;
int y=temp_pos.j+move_matrix[t].j;
if(x>=0&&x<N&&y>=0&&y<N)
{
if(checkNEXT(x,y)==true)
{
temp_pos.i=x;
temp_pos.j=y;
break;;
}

else continue;

}
else continue;

}
return true;
}
bool checkNEXT(int i,int j)
{
if(tree_node[i][j]->id!=BLOCK) return true;
else return false;
}

// THE END
3.出图.



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: