fichiers utilisees pour la création d'un labyrinthe 3D
GAME_ENGINE.cpp@0:1f10f1e735e0, 2020-04-30 (annotated)
- Committer:
- kangulu
- Date:
- Thu Apr 30 08:19:00 2020 +0000
- Revision:
- 0:1f10f1e735e0
first commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kangulu | 0:1f10f1e735e0 | 1 | #include "GAME_ENGINE.h" |
kangulu | 0:1f10f1e735e0 | 2 | |
kangulu | 0:1f10f1e735e0 | 3 | LCD_DISCO_F746NG lcd; |
kangulu | 0:1f10f1e735e0 | 4 | |
kangulu | 0:1f10f1e735e0 | 5 | int active_layer = 0; |
kangulu | 0:1f10f1e735e0 | 6 | |
kangulu | 0:1f10f1e735e0 | 7 | void screen_init() |
kangulu | 0:1f10f1e735e0 | 8 | { |
kangulu | 0:1f10f1e735e0 | 9 | lcd.Clear(LCD_COLOR_BLACK); |
kangulu | 0:1f10f1e735e0 | 10 | BSP_LCD_SelectLayer(active_layer); |
kangulu | 0:1f10f1e735e0 | 11 | BSP_LCD_SetLayerVisible(active_layer, ENABLE); |
kangulu | 0:1f10f1e735e0 | 12 | BSP_LCD_SetLayerVisible((active_layer+1)%2, DISABLE); |
kangulu | 0:1f10f1e735e0 | 13 | } |
kangulu | 0:1f10f1e735e0 | 14 | |
kangulu | 0:1f10f1e735e0 | 15 | uint32_t ARGBtoColor(int A,int R,int G,int B) |
kangulu | 0:1f10f1e735e0 | 16 | { |
kangulu | 0:1f10f1e735e0 | 17 | //A correspond à la transparence |
kangulu | 0:1f10f1e735e0 | 18 | return (uint32_t) (A*(1<<24)+R*(1<<16)+G*(1<<8)+B); |
kangulu | 0:1f10f1e735e0 | 19 | } |
kangulu | 0:1f10f1e735e0 | 20 | |
kangulu | 0:1f10f1e735e0 | 21 | void draw_seg_v(int c, int l1, int l2, color couleur) |
kangulu | 0:1f10f1e735e0 | 22 | { |
kangulu | 0:1f10f1e735e0 | 23 | /* |
kangulu | 0:1f10f1e735e0 | 24 | c : coordonnée x |
kangulu | 0:1f10f1e735e0 | 25 | i : coordonnée y |
kangulu | 0:1f10f1e735e0 | 26 | et couleur |
kangulu | 0:1f10f1e735e0 | 27 | */ |
kangulu | 0:1f10f1e735e0 | 28 | for(int i=0;i<271;i++) |
kangulu | 0:1f10f1e735e0 | 29 | { |
kangulu | 0:1f10f1e735e0 | 30 | if(i>l1 && i<l2) |
kangulu | 0:1f10f1e735e0 | 31 | { |
kangulu | 0:1f10f1e735e0 | 32 | if(couleur == 2) |
kangulu | 0:1f10f1e735e0 | 33 | { |
kangulu | 0:1f10f1e735e0 | 34 | lcd.DrawPixel(c,i,ARGBtoColor(255,146,72,0)); |
kangulu | 0:1f10f1e735e0 | 35 | } |
kangulu | 0:1f10f1e735e0 | 36 | else if(couleur == 1) |
kangulu | 0:1f10f1e735e0 | 37 | { |
kangulu | 0:1f10f1e735e0 | 38 | lcd.DrawPixel(c,i,ARGBtoColor(255,0,180,0)); |
kangulu | 0:1f10f1e735e0 | 39 | } |
kangulu | 0:1f10f1e735e0 | 40 | else |
kangulu | 0:1f10f1e735e0 | 41 | { |
kangulu | 0:1f10f1e735e0 | 42 | lcd.DrawPixel(c,i,ARGBtoColor(255,0,0,0)); |
kangulu | 0:1f10f1e735e0 | 43 | } |
kangulu | 0:1f10f1e735e0 | 44 | } |
kangulu | 0:1f10f1e735e0 | 45 | else |
kangulu | 0:1f10f1e735e0 | 46 | { |
kangulu | 0:1f10f1e735e0 | 47 | lcd.DrawPixel(c,i,ARGBtoColor(255,0,0,0)); |
kangulu | 0:1f10f1e735e0 | 48 | } |
kangulu | 0:1f10f1e735e0 | 49 | } |
kangulu | 0:1f10f1e735e0 | 50 | } |
kangulu | 0:1f10f1e735e0 | 51 | |
kangulu | 0:1f10f1e735e0 | 52 | //Commandes pour se déplacer |
kangulu | 0:1f10f1e735e0 | 53 | void arrow_up(position *pos,double vx,double vy) |
kangulu | 0:1f10f1e735e0 | 54 | { |
kangulu | 0:1f10f1e735e0 | 55 | pos->x += vx; |
kangulu | 0:1f10f1e735e0 | 56 | pos->y += vy; |
kangulu | 0:1f10f1e735e0 | 57 | } |
kangulu | 0:1f10f1e735e0 | 58 | |
kangulu | 0:1f10f1e735e0 | 59 | void arrow_down(position *pos,double vx,double vy) |
kangulu | 0:1f10f1e735e0 | 60 | { |
kangulu | 0:1f10f1e735e0 | 61 | pos->x -= vx; |
kangulu | 0:1f10f1e735e0 | 62 | pos->y -= vy; |
kangulu | 0:1f10f1e735e0 | 63 | } |
kangulu | 0:1f10f1e735e0 | 64 | |
kangulu | 0:1f10f1e735e0 | 65 | void rotation(double *vx,double *vy, double theta) |
kangulu | 0:1f10f1e735e0 | 66 | { |
kangulu | 0:1f10f1e735e0 | 67 | double tvx = *vx; |
kangulu | 0:1f10f1e735e0 | 68 | double tvy = *vy; |
kangulu | 0:1f10f1e735e0 | 69 | *vx = cos(theta)*tvx + sin(theta)*tvy; |
kangulu | 0:1f10f1e735e0 | 70 | *vy = - sin(theta)*tvx + cos(theta)*tvy; |
kangulu | 0:1f10f1e735e0 | 71 | } |
kangulu | 0:1f10f1e735e0 | 72 | |
kangulu | 0:1f10f1e735e0 | 73 | void arrow_right(double *vx,double *vy) |
kangulu | 0:1f10f1e735e0 | 74 | { |
kangulu | 0:1f10f1e735e0 | 75 | rotation(&(*vx),&(*vy),0.5); |
kangulu | 0:1f10f1e735e0 | 76 | } |
kangulu | 0:1f10f1e735e0 | 77 | void arrow_left(double *vx,double *vy) |
kangulu | 0:1f10f1e735e0 | 78 | { |
kangulu | 0:1f10f1e735e0 | 79 | rotation(&(*vx),&(*vy),0.5); |
kangulu | 0:1f10f1e735e0 | 80 | } |
kangulu | 0:1f10f1e735e0 | 81 | // |
kangulu | 0:1f10f1e735e0 | 82 | |
kangulu | 0:1f10f1e735e0 | 83 | color tangent_wall_h(double xprime, int yprime, double vy, worldmap map) |
kangulu | 0:1f10f1e735e0 | 84 | { |
kangulu | 0:1f10f1e735e0 | 85 | int i=(int) (xprime/WALL_SIZE), j=yprime/WALL_SIZE; |
kangulu | 0:1f10f1e735e0 | 86 | if (vy<0){ |
kangulu | 0:1f10f1e735e0 | 87 | j--; |
kangulu | 0:1f10f1e735e0 | 88 | } |
kangulu | 0:1f10f1e735e0 | 89 | if ((i<0)||(j<0)||(i>=MAP_WIDTH)||(j>=MAP_HEIGHT)){ |
kangulu | 0:1f10f1e735e0 | 90 | /* sortie de la carte */ |
kangulu | 0:1f10f1e735e0 | 91 | return 3; |
kangulu | 0:1f10f1e735e0 | 92 | }else{ |
kangulu | 0:1f10f1e735e0 | 93 | return map[j][i]; |
kangulu | 0:1f10f1e735e0 | 94 | } |
kangulu | 0:1f10f1e735e0 | 95 | } |
kangulu | 0:1f10f1e735e0 | 96 | |
kangulu | 0:1f10f1e735e0 | 97 | color tangent_wall_v(int xprime, double yprime, double vx, worldmap map) |
kangulu | 0:1f10f1e735e0 | 98 | { |
kangulu | 0:1f10f1e735e0 | 99 | int j = xprime / WALL_SIZE; |
kangulu | 0:1f10f1e735e0 | 100 | int i = (int) (yprime / WALL_SIZE); |
kangulu | 0:1f10f1e735e0 | 101 | if (vx < 0) { |
kangulu | 0:1f10f1e735e0 | 102 | j--; |
kangulu | 0:1f10f1e735e0 | 103 | } |
kangulu | 0:1f10f1e735e0 | 104 | |
kangulu | 0:1f10f1e735e0 | 105 | if (i < 0 || i >= MAP_WIDTH || j < 0 || j >= MAP_HEIGHT) { |
kangulu | 0:1f10f1e735e0 | 106 | return 3; |
kangulu | 0:1f10f1e735e0 | 107 | } else { |
kangulu | 0:1f10f1e735e0 | 108 | return map[i][j]; |
kangulu | 0:1f10f1e735e0 | 109 | } |
kangulu | 0:1f10f1e735e0 | 110 | } |
kangulu | 0:1f10f1e735e0 | 111 | |
kangulu | 0:1f10f1e735e0 | 112 | dist_and_color dda_v(position pos, double vx, double vy, worldmap map) |
kangulu | 0:1f10f1e735e0 | 113 | { |
kangulu | 0:1f10f1e735e0 | 114 | dist_and_color dc; |
kangulu | 0:1f10f1e735e0 | 115 | int i=pos.x/WALL_SIZE,di=1; |
kangulu | 0:1f10f1e735e0 | 116 | if (vx>0){ |
kangulu | 0:1f10f1e735e0 | 117 | i++; |
kangulu | 0:1f10f1e735e0 | 118 | }else{ |
kangulu | 0:1f10f1e735e0 | 119 | di=-1; |
kangulu | 0:1f10f1e735e0 | 120 | } |
kangulu | 0:1f10f1e735e0 | 121 | double dx=fabs(WALL_SIZE*i-pos.x); /* distance horizontale au premier bord |
kangulu | 0:1f10f1e735e0 | 122 | vertical dans la direction d'observation (en pixels) */ |
kangulu | 0:1f10f1e735e0 | 123 | double d1; /* distance au premier bord vertical dans la direction d'observation (en pixels) */ |
kangulu | 0:1f10f1e735e0 | 124 | double Dy=vy/fabs(vx); /* distance verticale (en cases) |
kangulu | 0:1f10f1e735e0 | 125 | parcourue quand une case est parcourue horizontalement */ |
kangulu | 0:1f10f1e735e0 | 126 | double du=WALL_SIZE*sqrt(1+Dy*Dy); /* increment de distance lors du passage |
kangulu | 0:1f10f1e735e0 | 127 | au bord vertical suivant (en pixels) */ |
kangulu | 0:1f10f1e735e0 | 128 | if (vx==0) |
kangulu | 0:1f10f1e735e0 | 129 | { /* dans le cas dégénéré où la direction d'observation |
kangulu | 0:1f10f1e735e0 | 130 | est pile verticale */ |
kangulu | 0:1f10f1e735e0 | 131 | dc.distance = INFINITY; |
kangulu | 0:1f10f1e735e0 | 132 | dc.color=tangent_wall_v( pos.x, pos.y, vx, map); |
kangulu | 0:1f10f1e735e0 | 133 | return dc; |
kangulu | 0:1f10f1e735e0 | 134 | } |
kangulu | 0:1f10f1e735e0 | 135 | pos.y += dx*Dy; /* first vertical line crossing coordinate */ |
kangulu | 0:1f10f1e735e0 | 136 | d1 = dx*du/WALL_SIZE; |
kangulu | 0:1f10f1e735e0 | 137 | dc.distance = d1; |
kangulu | 0:1f10f1e735e0 | 138 | |
kangulu | 0:1f10f1e735e0 | 139 | while ((dc.color=tangent_wall_v( WALL_SIZE*i, pos.y, vx, map))==0){ |
kangulu | 0:1f10f1e735e0 | 140 | i += di; |
kangulu | 0:1f10f1e735e0 | 141 | pos.y += WALL_SIZE*Dy; |
kangulu | 0:1f10f1e735e0 | 142 | dc.distance += du; |
kangulu | 0:1f10f1e735e0 | 143 | } |
kangulu | 0:1f10f1e735e0 | 144 | return dc; |
kangulu | 0:1f10f1e735e0 | 145 | } |
kangulu | 0:1f10f1e735e0 | 146 | |
kangulu | 0:1f10f1e735e0 | 147 | dist_and_color dda_h(position pos, double vx, double vy, worldmap map) |
kangulu | 0:1f10f1e735e0 | 148 | { |
kangulu | 0:1f10f1e735e0 | 149 | dist_and_color dc; |
kangulu | 0:1f10f1e735e0 | 150 | int j=pos.y/WALL_SIZE,dj=1; |
kangulu | 0:1f10f1e735e0 | 151 | if (vy>0){ |
kangulu | 0:1f10f1e735e0 | 152 | j++; |
kangulu | 0:1f10f1e735e0 | 153 | }else{ |
kangulu | 0:1f10f1e735e0 | 154 | dj=-1; |
kangulu | 0:1f10f1e735e0 | 155 | } |
kangulu | 0:1f10f1e735e0 | 156 | double dy=fabs(WALL_SIZE*j-pos.y); /* distance verticale au premier bord |
kangulu | 0:1f10f1e735e0 | 157 | horizontal dans la direction d'observation (en pixels) */ |
kangulu | 0:1f10f1e735e0 | 158 | double d1; /* distance au premier bord horizontal dans la direction d'observation (en pixels) */ |
kangulu | 0:1f10f1e735e0 | 159 | double Dx = vx/fabs(vy); /* distance horizontale (en cases) |
kangulu | 0:1f10f1e735e0 | 160 | parcourue quand une case est parcourue verticalement */ |
kangulu | 0:1f10f1e735e0 | 161 | double du=WALL_SIZE*sqrt(1+Dx*Dx); /* increment de distance lors du passage |
kangulu | 0:1f10f1e735e0 | 162 | au bord horizontal suivant (en pixels) */ |
kangulu | 0:1f10f1e735e0 | 163 | if (vy==0){ /* dans le cas dégénéré où la direction d'observation |
kangulu | 0:1f10f1e735e0 | 164 | est pile horizontale, on évite éventuellement la division par 0 */ |
kangulu | 0:1f10f1e735e0 | 165 | dc.distance = INFINITY; |
kangulu | 0:1f10f1e735e0 | 166 | dc.color=tangent_wall_h( pos.x, pos.y, vy, map); |
kangulu | 0:1f10f1e735e0 | 167 | return dc; |
kangulu | 0:1f10f1e735e0 | 168 | } |
kangulu | 0:1f10f1e735e0 | 169 | pos.x += dy*Dx; /* first horizontal line crossing coordinate */ |
kangulu | 0:1f10f1e735e0 | 170 | d1 = dy*du/WALL_SIZE; |
kangulu | 0:1f10f1e735e0 | 171 | dc.distance = d1; |
kangulu | 0:1f10f1e735e0 | 172 | while ((dc.color=tangent_wall_h( pos.x, WALL_SIZE*j, vy, map))==0) |
kangulu | 0:1f10f1e735e0 | 173 | { |
kangulu | 0:1f10f1e735e0 | 174 | j += dj; |
kangulu | 0:1f10f1e735e0 | 175 | pos.x += WALL_SIZE*Dx; |
kangulu | 0:1f10f1e735e0 | 176 | dc.distance += du; |
kangulu | 0:1f10f1e735e0 | 177 | } |
kangulu | 0:1f10f1e735e0 | 178 | return dc; |
kangulu | 0:1f10f1e735e0 | 179 | } |
kangulu | 0:1f10f1e735e0 | 180 | |
kangulu | 0:1f10f1e735e0 | 181 | |
kangulu | 0:1f10f1e735e0 | 182 | dist_and_color dda(position pos,double vx, double vy,worldmap map) |
kangulu | 0:1f10f1e735e0 | 183 | { |
kangulu | 0:1f10f1e735e0 | 184 | dist_and_color v = dda_v(pos,vx,vy,map); |
kangulu | 0:1f10f1e735e0 | 185 | dist_and_color h = dda_h(pos,vx,vy,map); |
kangulu | 0:1f10f1e735e0 | 186 | if(v.distance < h.distance) |
kangulu | 0:1f10f1e735e0 | 187 | { |
kangulu | 0:1f10f1e735e0 | 188 | return v; |
kangulu | 0:1f10f1e735e0 | 189 | } |
kangulu | 0:1f10f1e735e0 | 190 | else |
kangulu | 0:1f10f1e735e0 | 191 | { |
kangulu | 0:1f10f1e735e0 | 192 | return h; |
kangulu | 0:1f10f1e735e0 | 193 | } |
kangulu | 0:1f10f1e735e0 | 194 | } |
kangulu | 0:1f10f1e735e0 | 195 | |
kangulu | 0:1f10f1e735e0 | 196 | void display(position pos, double vx, double vy, worldmap map) |
kangulu | 0:1f10f1e735e0 | 197 | { |
kangulu | 0:1f10f1e735e0 | 198 | active_layer = (active_layer+1)%2; |
kangulu | 0:1f10f1e735e0 | 199 | BSP_LCD_SelectLayer(active_layer); |
kangulu | 0:1f10f1e735e0 | 200 | int hauteur; |
kangulu | 0:1f10f1e735e0 | 201 | dist_and_color dc; |
kangulu | 0:1f10f1e735e0 | 202 | rotation(&vx,&vy, M_PI/6); |
kangulu | 0:1f10f1e735e0 | 203 | for(int i=0;i<SCREEN_WIDTH;i++) |
kangulu | 0:1f10f1e735e0 | 204 | { |
kangulu | 0:1f10f1e735e0 | 205 | dc = dda(pos,vx,vy,map); |
kangulu | 0:1f10f1e735e0 | 206 | hauteur = (int)WALL_SIZE*SCREEN_HEIGHT/dc.distance; |
kangulu | 0:1f10f1e735e0 | 207 | hauteur = hauteur/fabs(cos((30-60*i/SCREEN_WIDTH)*2*M_PI/360)); |
kangulu | 0:1f10f1e735e0 | 208 | |
kangulu | 0:1f10f1e735e0 | 209 | if(hauteur>SCREEN_HEIGHT) |
kangulu | 0:1f10f1e735e0 | 210 | { |
kangulu | 0:1f10f1e735e0 | 211 | hauteur = SCREEN_HEIGHT; |
kangulu | 0:1f10f1e735e0 | 212 | } |
kangulu | 0:1f10f1e735e0 | 213 | draw_seg_v(i,(SCREEN_HEIGHT-hauteur)/2,(hauteur+SCREEN_HEIGHT)/2,dc.color); |
kangulu | 0:1f10f1e735e0 | 214 | rotation(&vx,&vy,2*M_PI-M_PI/3/SCREEN_WIDTH); |
kangulu | 0:1f10f1e735e0 | 215 | } |
kangulu | 0:1f10f1e735e0 | 216 | BSP_LCD_SetLayerVisible((active_layer+1)%2, DISABLE); |
kangulu | 0:1f10f1e735e0 | 217 | |
kangulu | 0:1f10f1e735e0 | 218 | BSP_LCD_SetLayerVisible(active_layer, ENABLE); |
kangulu | 0:1f10f1e735e0 | 219 | } |
kangulu | 0:1f10f1e735e0 | 220 | |
kangulu | 0:1f10f1e735e0 | 221 | int getInputState(inputState *iS) |
kangulu | 0:1f10f1e735e0 | 222 | { |
kangulu | 0:1f10f1e735e0 | 223 | TS_StateTypeDef TS_State; |
kangulu | 0:1f10f1e735e0 | 224 | BSP_TS_GetState(&TS_State); |
kangulu | 0:1f10f1e735e0 | 225 | if (TS_State.touchDetected==1) { |
kangulu | 0:1f10f1e735e0 | 226 | iS->x =TS_State.touchX[0]; |
kangulu | 0:1f10f1e735e0 | 227 | iS->y =TS_State.touchY[0]; |
kangulu | 0:1f10f1e735e0 | 228 | return 1; |
kangulu | 0:1f10f1e735e0 | 229 | } |
kangulu | 0:1f10f1e735e0 | 230 | return 0; |
kangulu | 0:1f10f1e735e0 | 231 | } |
kangulu | 0:1f10f1e735e0 | 232 | |
kangulu | 0:1f10f1e735e0 | 233 | // |
kangulu | 0:1f10f1e735e0 | 234 | //Generation du labyrinhe |
kangulu | 0:1f10f1e735e0 | 235 | // |
kangulu | 0:1f10f1e735e0 | 236 | // |
kangulu | 0:1f10f1e735e0 | 237 | |
kangulu | 0:1f10f1e735e0 | 238 | void createMap(minimap mini, worldmap world) |
kangulu | 0:1f10f1e735e0 | 239 | { |
kangulu | 0:1f10f1e735e0 | 240 | int i = 0; |
kangulu | 0:1f10f1e735e0 | 241 | int j = 0; |
kangulu | 0:1f10f1e735e0 | 242 | int k = 0; |
kangulu | 0:1f10f1e735e0 | 243 | int memPosition = 0; |
kangulu | 0:1f10f1e735e0 | 244 | int memi[LONGUEUR*LARGEUR]; //memoire de la coordonnee i |
kangulu | 0:1f10f1e735e0 | 245 | int memj[LONGUEUR*LARGEUR]; //memoire de la coordonnee j |
kangulu | 0:1f10f1e735e0 | 246 | int memalea[4] = {0,0,0,0}; //memoire des alea non utilisable |
kangulu | 0:1f10f1e735e0 | 247 | |
kangulu | 0:1f10f1e735e0 | 248 | float alea = 0; |
kangulu | 0:1f10f1e735e0 | 249 | int aleaInt = 0; |
kangulu | 0:1f10f1e735e0 | 250 | |
kangulu | 0:1f10f1e735e0 | 251 | int verif = -1; |
kangulu | 0:1f10f1e735e0 | 252 | |
kangulu | 0:1f10f1e735e0 | 253 | //creation du labyrinthe mini de facon aleatoire |
kangulu | 0:1f10f1e735e0 | 254 | |
kangulu | 0:1f10f1e735e0 | 255 | for(i=0;i<LARGEUR;i++) |
kangulu | 0:1f10f1e735e0 | 256 | { |
kangulu | 0:1f10f1e735e0 | 257 | for(j=0;j<LONGUEUR;j++) |
kangulu | 0:1f10f1e735e0 | 258 | { |
kangulu | 0:1f10f1e735e0 | 259 | mini[i][j] = 15; |
kangulu | 0:1f10f1e735e0 | 260 | } |
kangulu | 0:1f10f1e735e0 | 261 | } |
kangulu | 0:1f10f1e735e0 | 262 | |
kangulu | 0:1f10f1e735e0 | 263 | int compteur = 0; //compteur pour savoir le nombre de cases que nous avons fait |
kangulu | 0:1f10f1e735e0 | 264 | do |
kangulu | 0:1f10f1e735e0 | 265 | { |
kangulu | 0:1f10f1e735e0 | 266 | i = rand()%LONGUEUR; |
kangulu | 0:1f10f1e735e0 | 267 | j = rand()%LARGEUR; |
kangulu | 0:1f10f1e735e0 | 268 | alea = rand()%4; |
kangulu | 0:1f10f1e735e0 | 269 | if((alea == 0 & j == 0) | |
kangulu | 0:1f10f1e735e0 | 270 | (alea == 1 & i == LONGUEUR - 1) | |
kangulu | 0:1f10f1e735e0 | 271 | (alea == 2 & j == LARGEUR - 1) | |
kangulu | 0:1f10f1e735e0 | 272 | (alea == 3 & i == 0)) |
kangulu | 0:1f10f1e735e0 | 273 | { |
kangulu | 0:1f10f1e735e0 | 274 | verif = -1; |
kangulu | 0:1f10f1e735e0 | 275 | } |
kangulu | 0:1f10f1e735e0 | 276 | else |
kangulu | 0:1f10f1e735e0 | 277 | { |
kangulu | 0:1f10f1e735e0 | 278 | verif = 0; |
kangulu | 0:1f10f1e735e0 | 279 | } |
kangulu | 0:1f10f1e735e0 | 280 | |
kangulu | 0:1f10f1e735e0 | 281 | }while(verif == -1); |
kangulu | 0:1f10f1e735e0 | 282 | |
kangulu | 0:1f10f1e735e0 | 283 | memi[memPosition] = i; |
kangulu | 0:1f10f1e735e0 | 284 | memj[memPosition] = j; |
kangulu | 0:1f10f1e735e0 | 285 | |
kangulu | 0:1f10f1e735e0 | 286 | mini[i][j] += 16; //bit de verif de la case mis à 1 |
kangulu | 0:1f10f1e735e0 | 287 | |
kangulu | 0:1f10f1e735e0 | 288 | mini[i][j] -= pow(2, alea); //ouverture d'un des murs |
kangulu | 0:1f10f1e735e0 | 289 | |
kangulu | 0:1f10f1e735e0 | 290 | memPosition += 1; |
kangulu | 0:1f10f1e735e0 | 291 | compteur += 1; |
kangulu | 0:1f10f1e735e0 | 292 | |
kangulu | 0:1f10f1e735e0 | 293 | aleaInt = alea; |
kangulu | 0:1f10f1e735e0 | 294 | switch(aleaInt) |
kangulu | 0:1f10f1e735e0 | 295 | { |
kangulu | 0:1f10f1e735e0 | 296 | case 0: |
kangulu | 0:1f10f1e735e0 | 297 | j--; |
kangulu | 0:1f10f1e735e0 | 298 | alea = 2; |
kangulu | 0:1f10f1e735e0 | 299 | aleaInt = 2; |
kangulu | 0:1f10f1e735e0 | 300 | break; |
kangulu | 0:1f10f1e735e0 | 301 | case 1: |
kangulu | 0:1f10f1e735e0 | 302 | i++; |
kangulu | 0:1f10f1e735e0 | 303 | alea = 3; |
kangulu | 0:1f10f1e735e0 | 304 | aleaInt = 3; |
kangulu | 0:1f10f1e735e0 | 305 | break; |
kangulu | 0:1f10f1e735e0 | 306 | case 2: |
kangulu | 0:1f10f1e735e0 | 307 | j++; |
kangulu | 0:1f10f1e735e0 | 308 | alea = 0; |
kangulu | 0:1f10f1e735e0 | 309 | aleaInt = 0; |
kangulu | 0:1f10f1e735e0 | 310 | break; |
kangulu | 0:1f10f1e735e0 | 311 | case 3: |
kangulu | 0:1f10f1e735e0 | 312 | i--; |
kangulu | 0:1f10f1e735e0 | 313 | alea = 1; |
kangulu | 0:1f10f1e735e0 | 314 | aleaInt = 1; |
kangulu | 0:1f10f1e735e0 | 315 | break; |
kangulu | 0:1f10f1e735e0 | 316 | default: |
kangulu | 0:1f10f1e735e0 | 317 | break; |
kangulu | 0:1f10f1e735e0 | 318 | } |
kangulu | 0:1f10f1e735e0 | 319 | |
kangulu | 0:1f10f1e735e0 | 320 | mini[i][j] -= pow(2, alea); //ouverture de l'autre partie du mur |
kangulu | 0:1f10f1e735e0 | 321 | mini[i][j] += 16; //bit de verif de la case mis à 1 |
kangulu | 0:1f10f1e735e0 | 322 | memalea[aleaInt] = 1; |
kangulu | 0:1f10f1e735e0 | 323 | |
kangulu | 0:1f10f1e735e0 | 324 | memi[memPosition] = i; |
kangulu | 0:1f10f1e735e0 | 325 | memj[memPosition] = j; |
kangulu | 0:1f10f1e735e0 | 326 | memPosition += 1; |
kangulu | 0:1f10f1e735e0 | 327 | compteur += 1; |
kangulu | 0:1f10f1e735e0 | 328 | |
kangulu | 0:1f10f1e735e0 | 329 | do |
kangulu | 0:1f10f1e735e0 | 330 | { |
kangulu | 0:1f10f1e735e0 | 331 | //do while pour savoir quel mur ouvrir |
kangulu | 0:1f10f1e735e0 | 332 | do |
kangulu | 0:1f10f1e735e0 | 333 | { |
kangulu | 0:1f10f1e735e0 | 334 | alea = rand()%4; |
kangulu | 0:1f10f1e735e0 | 335 | aleaInt = alea; |
kangulu | 0:1f10f1e735e0 | 336 | switch(aleaInt) |
kangulu | 0:1f10f1e735e0 | 337 | { |
kangulu | 0:1f10f1e735e0 | 338 | case 0: |
kangulu | 0:1f10f1e735e0 | 339 | if(j == 0) |
kangulu | 0:1f10f1e735e0 | 340 | { |
kangulu | 0:1f10f1e735e0 | 341 | memalea[aleaInt] = 1; |
kangulu | 0:1f10f1e735e0 | 342 | } |
kangulu | 0:1f10f1e735e0 | 343 | else |
kangulu | 0:1f10f1e735e0 | 344 | { |
kangulu | 0:1f10f1e735e0 | 345 | if(mini[i][j-1] >= 16) |
kangulu | 0:1f10f1e735e0 | 346 | {memalea[aleaInt] = 1;} |
kangulu | 0:1f10f1e735e0 | 347 | } |
kangulu | 0:1f10f1e735e0 | 348 | break; |
kangulu | 0:1f10f1e735e0 | 349 | |
kangulu | 0:1f10f1e735e0 | 350 | case 1: |
kangulu | 0:1f10f1e735e0 | 351 | if(i == LONGUEUR-1) |
kangulu | 0:1f10f1e735e0 | 352 | { |
kangulu | 0:1f10f1e735e0 | 353 | memalea[aleaInt] = 1; |
kangulu | 0:1f10f1e735e0 | 354 | } |
kangulu | 0:1f10f1e735e0 | 355 | else |
kangulu | 0:1f10f1e735e0 | 356 | { |
kangulu | 0:1f10f1e735e0 | 357 | if(mini[i+1][j] >= 16) |
kangulu | 0:1f10f1e735e0 | 358 | {memalea[aleaInt] = 1;} |
kangulu | 0:1f10f1e735e0 | 359 | } |
kangulu | 0:1f10f1e735e0 | 360 | break; |
kangulu | 0:1f10f1e735e0 | 361 | |
kangulu | 0:1f10f1e735e0 | 362 | case 2: |
kangulu | 0:1f10f1e735e0 | 363 | if(j == LARGEUR-1) |
kangulu | 0:1f10f1e735e0 | 364 | { |
kangulu | 0:1f10f1e735e0 | 365 | memalea[aleaInt] = 1; |
kangulu | 0:1f10f1e735e0 | 366 | } |
kangulu | 0:1f10f1e735e0 | 367 | else |
kangulu | 0:1f10f1e735e0 | 368 | { |
kangulu | 0:1f10f1e735e0 | 369 | if(mini[i][j+1] >= 16) |
kangulu | 0:1f10f1e735e0 | 370 | {memalea[aleaInt] = 1;} |
kangulu | 0:1f10f1e735e0 | 371 | } |
kangulu | 0:1f10f1e735e0 | 372 | break; |
kangulu | 0:1f10f1e735e0 | 373 | |
kangulu | 0:1f10f1e735e0 | 374 | case 3: |
kangulu | 0:1f10f1e735e0 | 375 | if(i == 0) |
kangulu | 0:1f10f1e735e0 | 376 | { |
kangulu | 0:1f10f1e735e0 | 377 | memalea[aleaInt] = 1; |
kangulu | 0:1f10f1e735e0 | 378 | } |
kangulu | 0:1f10f1e735e0 | 379 | else |
kangulu | 0:1f10f1e735e0 | 380 | { |
kangulu | 0:1f10f1e735e0 | 381 | if(mini[i-1][j] >= 16) |
kangulu | 0:1f10f1e735e0 | 382 | {memalea[aleaInt] = 1;} |
kangulu | 0:1f10f1e735e0 | 383 | } |
kangulu | 0:1f10f1e735e0 | 384 | break; |
kangulu | 0:1f10f1e735e0 | 385 | } |
kangulu | 0:1f10f1e735e0 | 386 | |
kangulu | 0:1f10f1e735e0 | 387 | if(memalea[aleaInt] == 1) |
kangulu | 0:1f10f1e735e0 | 388 | { |
kangulu | 0:1f10f1e735e0 | 389 | if(memalea[0] == 1 & |
kangulu | 0:1f10f1e735e0 | 390 | memalea[1] == 1 & |
kangulu | 0:1f10f1e735e0 | 391 | memalea[2] == 1 & |
kangulu | 0:1f10f1e735e0 | 392 | memalea[3] == 1) |
kangulu | 0:1f10f1e735e0 | 393 | { |
kangulu | 0:1f10f1e735e0 | 394 | verif = 2; |
kangulu | 0:1f10f1e735e0 | 395 | } |
kangulu | 0:1f10f1e735e0 | 396 | else |
kangulu | 0:1f10f1e735e0 | 397 | { |
kangulu | 0:1f10f1e735e0 | 398 | verif = 0; |
kangulu | 0:1f10f1e735e0 | 399 | } |
kangulu | 0:1f10f1e735e0 | 400 | } |
kangulu | 0:1f10f1e735e0 | 401 | else |
kangulu | 0:1f10f1e735e0 | 402 | { |
kangulu | 0:1f10f1e735e0 | 403 | verif = 1; |
kangulu | 0:1f10f1e735e0 | 404 | } |
kangulu | 0:1f10f1e735e0 | 405 | }while(verif == 0); |
kangulu | 0:1f10f1e735e0 | 406 | |
kangulu | 0:1f10f1e735e0 | 407 | for(k=0;k<4;k++) |
kangulu | 0:1f10f1e735e0 | 408 | { memalea[k] = 0; } |
kangulu | 0:1f10f1e735e0 | 409 | |
kangulu | 0:1f10f1e735e0 | 410 | switch(verif) |
kangulu | 0:1f10f1e735e0 | 411 | { |
kangulu | 0:1f10f1e735e0 | 412 | case 1: |
kangulu | 0:1f10f1e735e0 | 413 | |
kangulu | 0:1f10f1e735e0 | 414 | mini[i][j] -= pow(2, alea); //ouverture d'un des murs |
kangulu | 0:1f10f1e735e0 | 415 | switch(aleaInt) |
kangulu | 0:1f10f1e735e0 | 416 | { |
kangulu | 0:1f10f1e735e0 | 417 | case 0: |
kangulu | 0:1f10f1e735e0 | 418 | j--; |
kangulu | 0:1f10f1e735e0 | 419 | alea = 2; |
kangulu | 0:1f10f1e735e0 | 420 | aleaInt = 2; |
kangulu | 0:1f10f1e735e0 | 421 | break; |
kangulu | 0:1f10f1e735e0 | 422 | case 1: |
kangulu | 0:1f10f1e735e0 | 423 | i++; |
kangulu | 0:1f10f1e735e0 | 424 | alea = 3; |
kangulu | 0:1f10f1e735e0 | 425 | aleaInt = 3; |
kangulu | 0:1f10f1e735e0 | 426 | break; |
kangulu | 0:1f10f1e735e0 | 427 | case 2: |
kangulu | 0:1f10f1e735e0 | 428 | j++; |
kangulu | 0:1f10f1e735e0 | 429 | alea = 0; |
kangulu | 0:1f10f1e735e0 | 430 | aleaInt = 0; |
kangulu | 0:1f10f1e735e0 | 431 | break; |
kangulu | 0:1f10f1e735e0 | 432 | case 3: |
kangulu | 0:1f10f1e735e0 | 433 | i--; |
kangulu | 0:1f10f1e735e0 | 434 | alea = 1; |
kangulu | 0:1f10f1e735e0 | 435 | aleaInt = 1; |
kangulu | 0:1f10f1e735e0 | 436 | break; |
kangulu | 0:1f10f1e735e0 | 437 | default: |
kangulu | 0:1f10f1e735e0 | 438 | break; |
kangulu | 0:1f10f1e735e0 | 439 | } |
kangulu | 0:1f10f1e735e0 | 440 | |
kangulu | 0:1f10f1e735e0 | 441 | mini[i][j] -= pow(2, alea); //ouverture de l'autre partie du mur |
kangulu | 0:1f10f1e735e0 | 442 | mini[i][j] += 16; //bit de verif de la case mis à 1 |
kangulu | 0:1f10f1e735e0 | 443 | memalea[aleaInt] = 1; |
kangulu | 0:1f10f1e735e0 | 444 | memi[memPosition] = i; |
kangulu | 0:1f10f1e735e0 | 445 | memj[memPosition] = j; |
kangulu | 0:1f10f1e735e0 | 446 | memPosition += 1; |
kangulu | 0:1f10f1e735e0 | 447 | compteur += 1; |
kangulu | 0:1f10f1e735e0 | 448 | break; |
kangulu | 0:1f10f1e735e0 | 449 | |
kangulu | 0:1f10f1e735e0 | 450 | case 2: |
kangulu | 0:1f10f1e735e0 | 451 | memPosition -= 1; |
kangulu | 0:1f10f1e735e0 | 452 | i = memi[memPosition]; |
kangulu | 0:1f10f1e735e0 | 453 | j = memj[memPosition]; |
kangulu | 0:1f10f1e735e0 | 454 | break; |
kangulu | 0:1f10f1e735e0 | 455 | } |
kangulu | 0:1f10f1e735e0 | 456 | } |
kangulu | 0:1f10f1e735e0 | 457 | while(compteur < LONGUEUR*LARGEUR); |
kangulu | 0:1f10f1e735e0 | 458 | |
kangulu | 0:1f10f1e735e0 | 459 | //remplissage de world a partir de mini |
kangulu | 0:1f10f1e735e0 | 460 | for(i=0;i<MAP_HEIGHT;i++) |
kangulu | 0:1f10f1e735e0 | 461 | { |
kangulu | 0:1f10f1e735e0 | 462 | for(j=0;j<MAP_WIDTH;j++) |
kangulu | 0:1f10f1e735e0 | 463 | { |
kangulu | 0:1f10f1e735e0 | 464 | if(i == 0 || i == MAP_HEIGHT - 1 || j == 0 || j == MAP_HEIGHT - 1) |
kangulu | 0:1f10f1e735e0 | 465 | { |
kangulu | 0:1f10f1e735e0 | 466 | world[i][j] = 2; |
kangulu | 0:1f10f1e735e0 | 467 | } |
kangulu | 0:1f10f1e735e0 | 468 | else if((i%3 == 2 || i%3 == 0) && (j%3 == 2 || j%3 == 0)) |
kangulu | 0:1f10f1e735e0 | 469 | { |
kangulu | 0:1f10f1e735e0 | 470 | world[i][j] = 2; |
kangulu | 0:1f10f1e735e0 | 471 | } |
kangulu | 0:1f10f1e735e0 | 472 | else |
kangulu | 0:1f10f1e735e0 | 473 | { |
kangulu | 0:1f10f1e735e0 | 474 | world[i][j] = 0; |
kangulu | 0:1f10f1e735e0 | 475 | } |
kangulu | 0:1f10f1e735e0 | 476 | } |
kangulu | 0:1f10f1e735e0 | 477 | |
kangulu | 0:1f10f1e735e0 | 478 | } |
kangulu | 0:1f10f1e735e0 | 479 | |
kangulu | 0:1f10f1e735e0 | 480 | for(i=0;i<LARGEUR;i++) |
kangulu | 0:1f10f1e735e0 | 481 | { |
kangulu | 0:1f10f1e735e0 | 482 | for(j=0;j<LONGUEUR;j++) |
kangulu | 0:1f10f1e735e0 | 483 | { |
kangulu | 0:1f10f1e735e0 | 484 | verif = mini[i][j] & 0x1; //1er bit soit mur de gauche |
kangulu | 0:1f10f1e735e0 | 485 | if(verif == 0x1) |
kangulu | 0:1f10f1e735e0 | 486 | { |
kangulu | 0:1f10f1e735e0 | 487 | world[3*i + 1][3*j] = 2; |
kangulu | 0:1f10f1e735e0 | 488 | } |
kangulu | 0:1f10f1e735e0 | 489 | |
kangulu | 0:1f10f1e735e0 | 490 | verif = mini[i][j] & 0x2; //2eme bit soit mur du bas |
kangulu | 0:1f10f1e735e0 | 491 | if(verif == 0x2) |
kangulu | 0:1f10f1e735e0 | 492 | { |
kangulu | 0:1f10f1e735e0 | 493 | world[3*i + 2][3*j + 1] = 2; |
kangulu | 0:1f10f1e735e0 | 494 | } |
kangulu | 0:1f10f1e735e0 | 495 | |
kangulu | 0:1f10f1e735e0 | 496 | verif = mini[i][j] & 0x4; //3eme bit soit mur de droite |
kangulu | 0:1f10f1e735e0 | 497 | if(verif == 0x4) |
kangulu | 0:1f10f1e735e0 | 498 | { |
kangulu | 0:1f10f1e735e0 | 499 | world[3*i + 1][3*j + 2] = 2; |
kangulu | 0:1f10f1e735e0 | 500 | } |
kangulu | 0:1f10f1e735e0 | 501 | |
kangulu | 0:1f10f1e735e0 | 502 | verif = mini[i][j] & 0x8; //4eme bit soit mur du haut |
kangulu | 0:1f10f1e735e0 | 503 | if(verif == 0x8) |
kangulu | 0:1f10f1e735e0 | 504 | { |
kangulu | 0:1f10f1e735e0 | 505 | world[3*i][3*j + 1] = 2; |
kangulu | 0:1f10f1e735e0 | 506 | } |
kangulu | 0:1f10f1e735e0 | 507 | } |
kangulu | 0:1f10f1e735e0 | 508 | } |
kangulu | 0:1f10f1e735e0 | 509 | } |
kangulu | 0:1f10f1e735e0 | 510 | |
kangulu | 0:1f10f1e735e0 | 511 | void gerenatePosition(int* i_pt, int* j_pt, worldmap world) |
kangulu | 0:1f10f1e735e0 | 512 | { |
kangulu | 0:1f10f1e735e0 | 513 | int i, j; |
kangulu | 0:1f10f1e735e0 | 514 | int verif = 0; |
kangulu | 0:1f10f1e735e0 | 515 | do |
kangulu | 0:1f10f1e735e0 | 516 | { |
kangulu | 0:1f10f1e735e0 | 517 | i = rand()%MAP_WIDTH; |
kangulu | 0:1f10f1e735e0 | 518 | j = rand()%MAP_HEIGHT; |
kangulu | 0:1f10f1e735e0 | 519 | if(i == 0) |
kangulu | 0:1f10f1e735e0 | 520 | { |
kangulu | 0:1f10f1e735e0 | 521 | if(world[i + 1][j] == 0) |
kangulu | 0:1f10f1e735e0 | 522 | { |
kangulu | 0:1f10f1e735e0 | 523 | i ++; |
kangulu | 0:1f10f1e735e0 | 524 | verif = 1; |
kangulu | 0:1f10f1e735e0 | 525 | } |
kangulu | 0:1f10f1e735e0 | 526 | else |
kangulu | 0:1f10f1e735e0 | 527 | { |
kangulu | 0:1f10f1e735e0 | 528 | verif = 0; |
kangulu | 0:1f10f1e735e0 | 529 | } |
kangulu | 0:1f10f1e735e0 | 530 | } |
kangulu | 0:1f10f1e735e0 | 531 | else if(j == 0) |
kangulu | 0:1f10f1e735e0 | 532 | { |
kangulu | 0:1f10f1e735e0 | 533 | if(world[i][j + 1] == 0) |
kangulu | 0:1f10f1e735e0 | 534 | { |
kangulu | 0:1f10f1e735e0 | 535 | j++; |
kangulu | 0:1f10f1e735e0 | 536 | verif = 1; |
kangulu | 0:1f10f1e735e0 | 537 | } |
kangulu | 0:1f10f1e735e0 | 538 | else |
kangulu | 0:1f10f1e735e0 | 539 | { |
kangulu | 0:1f10f1e735e0 | 540 | verif = 0; |
kangulu | 0:1f10f1e735e0 | 541 | } |
kangulu | 0:1f10f1e735e0 | 542 | } |
kangulu | 0:1f10f1e735e0 | 543 | else |
kangulu | 0:1f10f1e735e0 | 544 | { |
kangulu | 0:1f10f1e735e0 | 545 | verif = 0; |
kangulu | 0:1f10f1e735e0 | 546 | } |
kangulu | 0:1f10f1e735e0 | 547 | }while(verif != 1); |
kangulu | 0:1f10f1e735e0 | 548 | |
kangulu | 0:1f10f1e735e0 | 549 | *i_pt = i; |
kangulu | 0:1f10f1e735e0 | 550 | *j_pt = j; |
kangulu | 0:1f10f1e735e0 | 551 | } |
kangulu | 0:1f10f1e735e0 | 552 | |
kangulu | 0:1f10f1e735e0 | 553 | void generateSortie(int i, int j, worldmap world) |
kangulu | 0:1f10f1e735e0 | 554 | { |
kangulu | 0:1f10f1e735e0 | 555 | int i2 = 0; |
kangulu | 0:1f10f1e735e0 | 556 | int j2 = 0; |
kangulu | 0:1f10f1e735e0 | 557 | if(i == 1) |
kangulu | 0:1f10f1e735e0 | 558 | { |
kangulu | 0:1f10f1e735e0 | 559 | i2 = MAP_WIDTH - 1; |
kangulu | 0:1f10f1e735e0 | 560 | if(j <= MAP_HEIGHT/2) |
kangulu | 0:1f10f1e735e0 | 561 | { |
kangulu | 0:1f10f1e735e0 | 562 | j2 = j + MAP_HEIGHT/2; |
kangulu | 0:1f10f1e735e0 | 563 | while(world[i2 - 1][j2] != 0) |
kangulu | 0:1f10f1e735e0 | 564 | { |
kangulu | 0:1f10f1e735e0 | 565 | j2--; |
kangulu | 0:1f10f1e735e0 | 566 | } |
kangulu | 0:1f10f1e735e0 | 567 | world[i2][j2] = 1; |
kangulu | 0:1f10f1e735e0 | 568 | } |
kangulu | 0:1f10f1e735e0 | 569 | else if(j >= MAP_HEIGHT/2) |
kangulu | 0:1f10f1e735e0 | 570 | { |
kangulu | 0:1f10f1e735e0 | 571 | j2 = j - MAP_HEIGHT/2; |
kangulu | 0:1f10f1e735e0 | 572 | while(world[i2 - 1][j2] != 0) |
kangulu | 0:1f10f1e735e0 | 573 | { |
kangulu | 0:1f10f1e735e0 | 574 | j2++; |
kangulu | 0:1f10f1e735e0 | 575 | } |
kangulu | 0:1f10f1e735e0 | 576 | world[i2][j2] = 1; |
kangulu | 0:1f10f1e735e0 | 577 | } |
kangulu | 0:1f10f1e735e0 | 578 | else |
kangulu | 0:1f10f1e735e0 | 579 | { |
kangulu | 0:1f10f1e735e0 | 580 | j2 = j; |
kangulu | 0:1f10f1e735e0 | 581 | while(world[i2 - 1][j2] != 0) |
kangulu | 0:1f10f1e735e0 | 582 | { |
kangulu | 0:1f10f1e735e0 | 583 | j2++; |
kangulu | 0:1f10f1e735e0 | 584 | } |
kangulu | 0:1f10f1e735e0 | 585 | world[i2][j2] = 1; |
kangulu | 0:1f10f1e735e0 | 586 | } |
kangulu | 0:1f10f1e735e0 | 587 | } |
kangulu | 0:1f10f1e735e0 | 588 | else if(j == 1) |
kangulu | 0:1f10f1e735e0 | 589 | { |
kangulu | 0:1f10f1e735e0 | 590 | j2 = MAP_HEIGHT - 1; |
kangulu | 0:1f10f1e735e0 | 591 | if(i <= MAP_WIDTH/2) |
kangulu | 0:1f10f1e735e0 | 592 | { |
kangulu | 0:1f10f1e735e0 | 593 | i2 = i + MAP_WIDTH/2; |
kangulu | 0:1f10f1e735e0 | 594 | while(world[i2][j2 - 1] != 0) |
kangulu | 0:1f10f1e735e0 | 595 | { |
kangulu | 0:1f10f1e735e0 | 596 | i2--; |
kangulu | 0:1f10f1e735e0 | 597 | } |
kangulu | 0:1f10f1e735e0 | 598 | world[i2][j2] = 1; |
kangulu | 0:1f10f1e735e0 | 599 | } |
kangulu | 0:1f10f1e735e0 | 600 | else if(i >= MAP_WIDTH/2) |
kangulu | 0:1f10f1e735e0 | 601 | { |
kangulu | 0:1f10f1e735e0 | 602 | i2 = i - MAP_WIDTH/2; |
kangulu | 0:1f10f1e735e0 | 603 | while(world[i2][j2 - 1] != 0) |
kangulu | 0:1f10f1e735e0 | 604 | { |
kangulu | 0:1f10f1e735e0 | 605 | i2++; |
kangulu | 0:1f10f1e735e0 | 606 | } |
kangulu | 0:1f10f1e735e0 | 607 | world[i2][j2] = 1; |
kangulu | 0:1f10f1e735e0 | 608 | } |
kangulu | 0:1f10f1e735e0 | 609 | else |
kangulu | 0:1f10f1e735e0 | 610 | { |
kangulu | 0:1f10f1e735e0 | 611 | i2 = i; |
kangulu | 0:1f10f1e735e0 | 612 | while(world[i2][j2 - 1] != 0) |
kangulu | 0:1f10f1e735e0 | 613 | { |
kangulu | 0:1f10f1e735e0 | 614 | i2++; |
kangulu | 0:1f10f1e735e0 | 615 | } |
kangulu | 0:1f10f1e735e0 | 616 | world[i2][j2] = 1; |
kangulu | 0:1f10f1e735e0 | 617 | } |
kangulu | 0:1f10f1e735e0 | 618 | } |
kangulu | 0:1f10f1e735e0 | 619 | } |
kangulu | 0:1f10f1e735e0 | 620 | |
kangulu | 0:1f10f1e735e0 | 621 | int verificationFin(position pos, worldmap world) |
kangulu | 0:1f10f1e735e0 | 622 | { |
kangulu | 0:1f10f1e735e0 | 623 | int retour = 0; |
kangulu | 0:1f10f1e735e0 | 624 | int i = 0; |
kangulu | 0:1f10f1e735e0 | 625 | int j = 0; |
kangulu | 0:1f10f1e735e0 | 626 | int k = 0; |
kangulu | 0:1f10f1e735e0 | 627 | for (k = 0; k<MAP_WIDTH; k++) |
kangulu | 0:1f10f1e735e0 | 628 | { |
kangulu | 0:1f10f1e735e0 | 629 | if(pos.x/64>=k && pos.x/64<k + 1) |
kangulu | 0:1f10f1e735e0 | 630 | { |
kangulu | 0:1f10f1e735e0 | 631 | i = k; |
kangulu | 0:1f10f1e735e0 | 632 | } |
kangulu | 0:1f10f1e735e0 | 633 | } |
kangulu | 0:1f10f1e735e0 | 634 | |
kangulu | 0:1f10f1e735e0 | 635 | for (k = 0; k<MAP_HEIGHT; k++) |
kangulu | 0:1f10f1e735e0 | 636 | { |
kangulu | 0:1f10f1e735e0 | 637 | if(pos.y/64>=k && pos.y/64<k + 1) |
kangulu | 0:1f10f1e735e0 | 638 | { |
kangulu | 0:1f10f1e735e0 | 639 | j = k; |
kangulu | 0:1f10f1e735e0 | 640 | } |
kangulu | 0:1f10f1e735e0 | 641 | } |
kangulu | 0:1f10f1e735e0 | 642 | |
kangulu | 0:1f10f1e735e0 | 643 | if(world[i][j] == 1) |
kangulu | 0:1f10f1e735e0 | 644 | { |
kangulu | 0:1f10f1e735e0 | 645 | retour = 1; |
kangulu | 0:1f10f1e735e0 | 646 | } |
kangulu | 0:1f10f1e735e0 | 647 | return retour; |
kangulu | 0:1f10f1e735e0 | 648 | } |