1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413
|
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//On définit une structure booléen.
typedef enum bool {true,false} boolean ;
//On définit une structure plateau
struct plateau
{
int ligne;
int colonne;
int cases;
int posx1;
int posx2;
int posy1;
int posy2;
boolean* matrix ;
};
//On nomme struct plateau en matriciel.
typedef struct plateau matriciel ;
//On définit une structure Joueur.
struct Joueur
{
char nom [26];
int poscol;
int poslig;
int idjoueur;
};
//On nomme struct Joueur en joueur.
typedef struct Joueur joueur;
/******************************************************************************/
//Fonction choixdeplacement appelé par la fonction deplacementjoueur
matriciel choixdeplacement (matriciel matrice, joueur j, char choix)
{
if ((choix == 'D') || (choix == 'G'))
/*
positionX du joueur = + 1
case ou il était = true
case ou il va = false
*/
return matrice;
}
//Fin fonction choixdeplacement
/******************************************************************************/
//Fonction de deplacementjoueur appelée par les procédure un_joueur et deux_joueurs.
matriciel deplacementjoueur(matriciel matrice, joueur j)
{
//Déclaration des variables
char choix = ""; //pour savoir ou le joueur veut se déplacer.
char posj[2]; //pour connaitre la position du joueur avant son déplacement.
boolean deplacement = false; //pour savoir si le placement du joueur est bon.
//Tant que le déplacement n'est pas bon.
while (deplacement == false)
{
printf("%d", j.poscol);
//Vérification de la position du joueur.
//Si le joueur est à gauche du plateau de jeu.
if (j.poscol == 0)
{
//Si le joueur est a gauche et en haut du plateau de jeu.
if (j.poslig == 0)
{
do
{
//Affichage des déplacements possible.
printf("\n%s saisissez la direction dans laquelle vous voulez vous deplacer\n",j.nom);
printf("D. Droite.\n");
printf("B. Bas.\n");
printf("Saisissez votre choix : ");
scanf("%d",&choix);
//si le choix n'est pas bon
if ((choix != 'D') && (choix != 'B'))
{
printf("%s votre choix est invalide.\n", j.nom);
}
else
{
//Appel de la fonction choixdeplacement (A FAIRE).
matrice = choixdeplacement(matrice, j, choix);
}
}while ((choix == 'B') || (choix == 'D'));
}
}
deplacement = true;
}
return matrice;
}
//Fin fonction deplacementjoueur
/******************************************************************************/
//Fonction de placementjoueur appelée par les procédure un_joueur et deux_joueurs.
matriciel placementjoueur(matriciel matrice, joueur j)
{
//Déclaration des variables
//pour savoir ou le joueur veut se positionner.
int ligneplace;
int colonneplace;
//pour savoir si le placement du joueur est bon.
boolean placement = false;
while (placement == false)
{
//Demande de la position de départ du joueur.
//Demande pour la ligne
printf("\n%s saisissez la ligne ou vous voulez vous placer : ",j.nom);
scanf("%d",&ligneplace);
//Les valeurs doivent êre comprisent entre 0 et la taille de la matrice.
while ((ligneplace <= 0) || (ligneplace > matrice.ligne))
{
//Afichage d'un message d'erreur si les valeurs saisies ne sont pas bonnes.
printf("%s, vous devez saisir des valeur comprisent entre 1 et %d\n\n", j.nom, matrice.ligne);
printf("%s saisissez la ligne ou vous voulez vous placer : ",j.nom);
scanf("%d",&ligneplace);
}
//Demande pour la ligne
printf("%s saisissez la colonne ou vous voulez vous placer : ",j.nom);
scanf("%d",&colonneplace);
//Les valeurs doivent êre comprisent entre 0 et la taille de la matrice.
while ((colonneplace <= 0) || (colonneplace > matrice.colonne))
{
//Afichage d'un message d'erreur si les valeurs saisies ne sont pas bonnes.
printf("%s, vous devez saisir des valeur comprisent entre 1 et %d\n\n", j.nom, matrice.colonne);
printf("%s saisissez la colonne ou vous voulez vous placer : ",j.nom);
scanf("%d",&colonneplace);
}
//On décrémente les valeur de 1 pour se mettre au méme niveau que les valeur du plateau de jeu (commence à 0, pas à 1).
colonneplace = colonneplace - 1;
ligneplace = ligneplace - 1;
//Vérification du placement du joueur, si sa position est fausse, on lui demande de ressaisir.
if (matrice.matrix[(ligneplace*matrice.ligne)+colonneplace] == false)
{
printf("%s la position que vous avez choisie n'est pas accessible, veuillez ressaisir des valeurs correctes.\n\n", j.nom);
}
else
{
placement = true;
}
}
//Enregistrement de la position du joueur.
matrice.posy1 = colonneplace;
matrice.posx1 = ligneplace;
j.poslig = ligneplace;
j.poscol = colonneplace;
//Mise a faux de la place prise par le joueur et on diminue les nombre de cases du plateau de jeu..
matrice.matrix[(ligneplace*matrice.ligne)+colonneplace] = false;
matrice.cases--;
//Appel de la procédure afficher.
afficher(matrice, j);
return matrice;
}
//Fin fonction placementjoueur
/******************************************************************************/
//Fonction CreateDynMatrice2d appelée par la fonction tailleplateau.
matriciel CreateDynMatrice2d(matriciel matrice, int ligne,int colonne)
{
int i ;
//Sauvegarde des dimensions de la matrice dans la structure.
matrice.ligne = ligne ;
matrice.colonne = colonne ;
//Réservation de la mémoire pour la matrice.
matrice.matrix = (boolean*)malloc(ligne*colonne*sizeof(boolean));
//Mise de toutes les cases de la matrice à vrai.
for (i = 0 ; i < (ligne*colonne); i++)
{
matrice.matrix[i] = true;
}
//Enregistrement du nombre de cases du plateau de jeu
matrice.cases = (ligne*colonne);
//On renvoie la matrice créée.
return matrice ;
}
//Fin fonction CreateDynMatrice2d
/******************************************************************************/
//Début fonction tailleplateau appelée par les procédures un_joueur et deux_joueurs.
matriciel tailleplateau(matriciel matrice)
{
//Variables pour savoir le nombre de lignes et de colonne du plateau de jeu.
int nblig;
int nbcol;
joueur j;
//Demande des dimensions du plateau de jeu.
printf("Saisissez la taille du plateau de jeu \n\n");
//Le nombre de ligne.
printf("Nombre de ligne : ");
scanf("%d",&nblig);
//tant que le nombre de ligne n'est pas valide.
while (nblig<3)
{
//On affiche que la taille minimale du plateau de jeu est de dimension 3 par 3.
printf("Les dimensions minimales sont de 3 par 3.\n\n");
printf("Nombre de ligne : ");
scanf("%d",&nblig);
}
//Le nombre de colonne.
printf("Nombre de colonne : ");
scanf("%d",&nbcol);
//tant que le nombre de colonne n'est pas valide.
while (nbcol<3)
{
//On affiche que la taille minimale du plateau de jeu est de dimension 3 par 3.
printf("Les dimensions minimales sont de 3 par 3.\n");
printf("Nombre de colonne : ");
scanf("%d",&nbcol);
}
//Appel la fonction CreateDynMarice2d.
matrice=CreateDynMatrice2d(matrice, nblig, nbcol);
//Appel de la procédure afficher.
afficher(matrice, j);
//Renvoi de la matrice.
return matrice;
}
//Fin de la fonction tailleplateau
/******************************************************************************/
//Fonction infojoueur appelée par les procédures un_joueur et deux_joueur.
joueur infojoueur(joueur j)
{
//Demande et enregistrament du nom du joueur.
printf("saisissez votre nom : ");
scanf("%s",j.nom);
printf("\nBon jeu %s\n", j.nom);
system("pause");
system("cls");
return j;
}
//Fin de la fonction infojoueur.
/******************************************************************************/
//Procédure deux_joueurs appelée par la procédure selection.
void deux_joueurs()
{
//Déclaration des variables.
//initialisation des joueurs.
joueur j1;
joueur j2;
//initialisation du plateau de jeu.
matriciel matrice ;
//Affichage du mode un joueur.
system("cls");
printf("Mode deux joueur\n\n");
//Appel de la fonction infojoueur.
printf("Joueur 1, ");
j1=infojoueur(j1);
j1.idjoueur = 1;
printf("Joueur 2, ");
j2=infojoueur(j2);
j2.idjoueur = 2;
//Appel de la fonction tailleplateau.
matrice = tailleplateau(matrice);
//Appel de la fonction placementjoueur.
matrice = placementjoueur(matrice, j1);
matrice = placementjoueur(matrice, j2);
//Appel de la fonction deplacementjoueur.
matrice = deplacementjoueur(matrice, j1);
matrice = deplacementjoueur(matrice, j2);
}
//Fin de la procédure deux_joueurs.
/******************************************************************************/
//Procédure un_joueur appelée par la procédure selection.
void un_joueur()
{
//Déclaration des variables.
joueur j1; //initialisation d'un joueur.
matriciel matrice; //initialisation du plateau de jeu.
//Affichage du mode un joueur.
system("cls");
printf("Mode un joueur\n\n");
//Appel de la fonction infojoueur.
j1 = infojoueur(j1);
j1.idjoueur = 1;
//Appel de la fonction tailleplateau.
matrice = tailleplateau(matrice);
//Appel de la fonction placementjoueur.
matrice = placementjoueur(matrice, j1);
//Appel de la fonction deplacementjoueur.
matrice = deplacementjoueur(matrice, j1);
}
//Fin de la procédure un_joueur.
/******************************************************************************/
//Procédure selection appelée par la procédure menu.
void selection (int choix)
{
//selon le choix.
switch (choix)
{
//Appel de la fontion un_joueur.
case 1: un_joueur();
break;
//Appel de la fontion deux_joueurs.
case 2: deux_joueurs();
break;
//Fin du programme.
case 9: printf("Au revoir\n");
break;
}
}
//Fin de la procédure selection.
/******************************************************************************/
//Procédure menu appelée par le programme prinipal.
void menu ()
{
int choix;
//Effacement de l'écran.
system("cls");
//Tant que le choix du joueur n'est pas de quitter (9).
do
{
//Affichage des choix du menu.
printf("Bienvenue dans Isola\n\n");
printf("1) 1 joueur ? \n\n");
printf("2) 2 joueurs ? \n\n");
printf("9) Quitter ? \n\n");
printf("Faites votre choix : ");
scanf("%d",&choix);
//si le carctère saisis n'est pas dans les choix possible.
if (choix != 1 && choix != 2 && choix != 9)
{
printf("Choix invalide ! \n\n");
}
else
{
//Appel de la procédure selection.
selection(choix);
}
}while (choix != 9);
}
//Fin de la procédure menu.
/******************************************************************************/
//Programme principal.
int main(int argc, char *argv[])
{
//Appel de la procédure menu.
menu();
return 0;
}
//Fin du programme principal. |
Partager