home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Games / antipolix-2.0 / creation.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-22  |  1.7 KB  |  73 lines

  1. #include "creation.h"
  2. #include "game.h"
  3.  
  4. #include <malloc.h>
  5.  
  6. void CreateUniverse(Univers *U, int NbNiveaux, int Taille)
  7. {
  8.   int i, j, k;
  9.   U->NbPlateaux=NbNiveaux;
  10.   U->P=malloc(NbNiveaux*sizeof(Plateau));
  11.   for (i=0; i<U->NbPlateaux; i++)
  12.     {
  13.       U->P[i].Taille=Taille;
  14.       U->P[i].Case=malloc(Taille*sizeof(Piece *));
  15.       for(j=0; j<Taille; j++)
  16.     {
  17.       U->P[i].Case[j]=malloc(Taille*sizeof(Piece));
  18.       for(k=0; k<Taille; k++)
  19.         {
  20.           U->P[i].Case[j][k].Couleur=(CASE_VIDE);
  21.           U->P[i].Case[j][k].Type=(CASE_VIDE);
  22.         }
  23.     }
  24.     }
  25. }
  26.  
  27.  
  28. void CopyUniverse(Univers *Destination, Univers *Source)
  29. {
  30.   /* L'univers de destination est suppose deja cree */
  31.   int i, j, k;
  32.  
  33.   for (i=0; i<Source->NbPlateaux; i++)
  34.     for (j=0; j<Source->P[i].Taille; j++)
  35.       for (k=0; k<Source->P[i].Taille; k++)
  36.     if (Source->P[i].Case[j][k].Type >= 0) /* on ne recopie que les cases occupees */
  37.       {
  38.         Destination->P[i].Case[j][k].Type=
  39.           Source->P[i].Case[j][k].Type;
  40.         Destination->P[i].Case[j][k].Couleur=
  41.           Source->P[i].Case[j][k].Couleur;
  42.         Destination->P[i].Case[j][k].Caract=
  43.           Source->P[i].Case[j][k].Caract;
  44.         /* Energie... */
  45.       }
  46. }
  47.  
  48.  
  49. void TransformUniverse(Univers *U, int joueur)
  50. {
  51.   int p, x, y;
  52.  
  53.   for (p=0; p<U->NbPlateaux; p++)
  54.     for (x=0; x<U->P[p].Taille; x++)
  55.       for (y=0; y<U->P[p].Taille; y++)
  56.     if (IsWhom(U, p, x, y, joueur)==ENNEMY)
  57.       {
  58.         switch(U->P[p].Case[x][y].Caract)
  59.           {
  60.           case INVISIBLE:
  61.         U->P[p].Case[x][y].Couleur=CASE_VIDE;
  62.         U->P[p].Case[x][y].Type=CASE_VIDE;
  63.         U->P[p].Case[x][y].Caract=NORMAL;
  64.         break;
  65.           case CHEF:
  66.         U->P[p].Case[x][y].Caract=NORMAL;
  67.           case TELEPORT:
  68.         U->P[p].Case[x][y].Caract=NORMAL;
  69.         break;
  70.           }
  71.       }
  72. }
  73.