Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.85 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "board.h"
  4.  
  5. void regles(){
  6. printf("Le jeu se joue à deux joueurs sur un plateau de trois cases sur trois,\nbien que des variantes puissent être jouées sur des plateaux plus grands.\nChaque joueur a le contrôle d'un ensemble de six pièces dont le propriétaire est facilement identifiable,\npar exemple par la forme ou la couleur de la pièce.\nLes pièces sont de trois tailles différentes (grande, moyenne, petite),\nchaque joueur ayant deux de chaque taille.\n\n");
  7. printf("Au cours de la partie, les joueurs effectuent alternativement un coup qui consiste en l'un ou l'autre :\n-En ajoutant une pièce de leur collection sur le tableau.\n-En déplaçant une de ses pièces visibles déjà sur le plateau vers une autre case.\n-Une pièce peut être placée soit sur une case vide,\n");
  8. printf("soit sur une case contenant uniquement des pièces plus petites,\nindépendamment du propriétaire de la pièce.\n\nDans ce dernier cas, la pièce recouvre et cache les plus petites pièces.\nLorsqu'une pièce placée au-dessus d'autres pièces est déplacée d'une case,\nla plus grande pièce couverte est révélée et peut être jouée dans un tour ultérieur.\n");
  9. printf("La partie est gagnée par le premier joueur qui parvient à faire une ligne visible de ses pièces\nà travers le plateau (sur une ligne, une colonne, ou une diagonale, comme pour le Tic-Tac-Toe).\n\n______________________\n\n");
  10. }
  11.  
  12.  
  13. void tour_joueur(player current_player){
  14.  
  15. if(current_player == 1){
  16. printf("\033[1;32m");
  17. printf("Joueur Numéro %d, à toi de jouer !\n\n", current_player);
  18. }
  19.  
  20. if(current_player == 2){
  21. printf("\033[1;34m");
  22. printf("Joueur Numéro %d, à vous de jouer !\n\n", current_player);
  23. }
  24. printf("\033[0m");
  25. }
  26.  
  27. void affiche_jeu(board game){
  28.  
  29. printf("\n\n\n");
  30. for(int i=0;i<3;i++){
  31. printf("\n");
  32. if(i == 0)printf("┌───┬───┬───┐\n");
  33. else(printf("├───┼───┼───┤\n"));
  34. printf("│ ");
  35. for(int j=0;j<3;j++){
  36. printf("\033[1;34m");
  37. if(get_place_holder(game,i,j)==2){
  38. if(get_piece_size(game,i,j)==0){
  39. printf(" ");
  40. }
  41. if(get_piece_size(game,i,j)==1){
  42. char a[3]="•";
  43. printf("%s",a);
  44. }
  45. if(get_piece_size(game,i,j)==2){
  46. printf("o");
  47. }
  48. if(get_piece_size(game,i,j)==3){
  49. printf("0");
  50. }
  51. }
  52. else{
  53. printf("\033[1;32m");
  54. if(get_piece_size(game,i,j)==0){
  55. printf(" ");
  56. }
  57. if(get_piece_size(game,i,j)==1){
  58. printf("*");
  59. }
  60. if(get_piece_size(game,i,j)==2){
  61. printf("x");
  62. }
  63. if(get_piece_size(game,i,j)==3){
  64. printf("X");
  65. }
  66. }
  67. printf("\033[0m");
  68. printf(" │ ");
  69.  
  70. }
  71. }
  72. printf("\n└───┴───┴───┘\n");
  73.  
  74.  
  75. }
  76.  
  77.  
  78. int condition_ajout_piece(board game, int line, int column,size piece_size, player current_player){
  79. int resultat=0;
  80. if(piece_size > get_piece_size(game,line,column )){
  81. resultat=1;
  82. }else{
  83. if(get_nb_piece_in_house(game,current_player,piece_size) == 0){
  84. printf("\n vous n'avez plus de pièce de taille %d", piece_size);
  85. }else{
  86. printf("\n\nUne pièce de même taille où de taille supérieur se trouve déjà sur cette case\n\n");
  87. }
  88. }
  89. return resultat;
  90. }
  91.  
  92. int condition_deplacer_piece(board game, int line, int column,size piece_size, player current_player){
  93. int resultat=0;
  94. if(piece_size > get_piece_size(game,line,column )){
  95. resultat=1;
  96. }else{
  97. printf("\n\nUne pièce de même taille où de taille supérieur se trouve déjà sur cette case\n\n");
  98. }
  99. return resultat;
  100. }
  101.  
  102.  
  103.  
  104. void affiche_maison(board game, player current_player){
  105. int size=0;
  106. printf("Il vous reste");
  107. for(size=1;size<4;size++){
  108. if (size==1){
  109. printf(" %d petite(s) pièce(s),",get_nb_piece_in_house(game, current_player,size));
  110. }
  111. if(size==2){
  112. printf(" %d moyenne(s) pièce(s) et",get_nb_piece_in_house(game, current_player,size));
  113. }
  114. if(size==3){
  115. printf(" %d grande(s) pièce(s).\n",get_nb_piece_in_house(game, current_player,size));
  116. }
  117. }
  118. printf("\n");
  119. }
  120.  
  121. void accueil(){
  122. printf("┌───────────────────────────────────────────────────────────┐\n");
  123. printf("│▁ ▂ ▄ ▅ ▆ ▇ █ ⓖ ⓞ ⓑ ⓑ ⓛ ⓔ ⓣ ⓖ ⓞ ⓑ ⓑ ⓛ ⓔ ⓡ ⓢ █ ▇ ▆ ▅ ▄ ▂ ▁ │\n");
  124. printf("└───────────────────────────────────────────────────────────┘\n");
  125. printf("\n\n");
  126. printf("Bienvenue sur le jeu Gobblet Gobblers ! \nDéveloppé par Félix Lafontaine et Hugo Mercier\n\n\n");
  127.  
  128. }
  129.  
  130. void quitter(){
  131. int color=1;
  132. printf("┌");
  133. for(int k=0;k<11;k++){
  134. if(color%2==1){
  135. printf("\033[1;31m");
  136. }
  137. else{
  138. printf("\033[0m");
  139. }
  140. printf("─");
  141. color++;
  142. }
  143. printf("\033[0m");
  144. printf("┐\n│");
  145. printf(" À bientot ");
  146. printf("\033[1;31m");
  147. printf("│\n└");
  148. for(int k=0;k<11;k++){
  149. if(color%2==1){
  150. printf("\033[1;31m");
  151. }
  152. else{
  153. printf("\033[0m");
  154. }
  155. printf("─");
  156. color++;
  157. }
  158. printf("┘\n");
  159. }
  160.  
  161.  
  162. int main(){
  163. system("clear");
  164.  
  165. player current_player=1;
  166. int choix=0;
  167. accueil();
  168. do{
  169. board game =new_game();
  170. printf("Faites un choix :\n\n");
  171. printf("\033[1;31m");
  172. printf("┌────────────────────┐\n│");
  173. printf("\033[0m");
  174. printf(" 1-Nouvelle partie ");
  175. printf("\033[1;31m");
  176. printf("│\n└────────────────────┘\n");
  177. printf("\033[0m"); //encadrage en rouge
  178. printf("\033[1;35m");
  179. printf("┌────────────────────┐\n│");
  180. printf("\033[0m");
  181. printf(" 2-Règles ");
  182. printf("\033[1;35m");
  183. printf("│\n└────────────────────┘\n");
  184. printf("\033[0m"); //encadrage en violet
  185. printf("\033[1;33m");
  186. printf("┌────────────────────┐\n│");
  187. printf("\033[0m");
  188. printf(" 3-Quitter ");
  189. printf("\033[1;33m");
  190. printf("│\n└────────────────────┘\n");
  191. printf("\033[0m"); //encadrage en jaune
  192. do{
  193. printf("\nChoix : ");
  194. scanf("%d",&choix);
  195. printf("\n");
  196. printf("\033[1;31m");
  197. printf("───────────────────────────────────\n\n");
  198. printf("\033[0m");
  199. if(choix<0 || choix>3){
  200. printf("Mauvaise réponse\n");
  201. }
  202. }while(choix!=1 && choix!=2 && choix!=3);
  203. switch (choix){
  204. case 1:
  205. printf("Un nouveau plateau a été créé.\n\n");
  206. printf("┌───┬───┬───┐\n│ │ │ │\n├───┼───┼───┤\n│ │ │ │\n├───┼───┼───┤\n│ │ │ │\n└───┴───┴───┘\n\n");
  207. printf("Les joueurs ont chacun 2 petites pièces, 2 moyennes et 2 grandes.\n\n");
  208. while(get_winner(game) == 0){
  209. tour_joueur(current_player);
  210. affiche_maison(game, current_player);
  211. printf("Voulez-vous ajouter [1] ou déplacer une pièce [2] ?\nChoix : ");
  212. int choix2;
  213. do{
  214. scanf("%d",&choix2);
  215. if(choix2!=1 && choix2!=2){
  216. printf("Mauvaise réponse !\n");
  217. }
  218. }while(choix2!=1 && choix2!=2);
  219. if(choix2==2){
  220. int ligneDepart;
  221. int colonneDepart;
  222. int ligneArrivee;
  223. int colonneArrivee;
  224. int resultat;
  225. do{
  226. printf("Quelle est la ligne de la pièce à déplacer ?\nChoix : ");
  227. scanf("%d",&ligneDepart);
  228. ligneDepart--;
  229. printf("Quelle est la colonne de la pièce à déplacer ?\nChoix : ");
  230. scanf("%u",&colonneDepart);
  231. colonneDepart--;
  232. if(get_place_holder(game,ligneDepart, colonneDepart) != current_player){
  233. printf("Mauvaise réponse !\n");
  234. }
  235. }while(get_place_holder(game,ligneDepart, colonneDepart) != current_player);
  236. do{
  237. do{
  238. printf("Sur quelle ligne voulez-vous la déplacer ?\nChoix : ");
  239. scanf("%d",&ligneArrivee);
  240. ligneArrivee--;
  241. printf("Sur quelle colonne voulez-vous la déplacer ?\nChoix : ");
  242. scanf("%d",&colonneArrivee);
  243. colonneArrivee--;
  244. }while(get_place_holder(game,ligneArrivee,colonneArrivee) != 0);
  245. size piece=get_piece_size(game,ligneDepart,colonneDepart);
  246. resultat=condition_deplacer_piece(game, ligneArrivee, colonneDepart,piece ,current_player);
  247. }while(resultat !=1);
  248. move_piece(game ,ligneDepart, colonneDepart, ligneArrivee, colonneArrivee);
  249. }else{
  250. int resultat;
  251. size tailleP;
  252. int ligneP;
  253. int colonneP;
  254. do{
  255. printf("Quelle ligne ?\nChoix : ");
  256. scanf("%d",&ligneP);
  257. ligneP--;
  258. printf("Quelle colonne ?\nChoix : ");
  259. scanf("%u",&colonneP);
  260. colonneP--;
  261. printf("Quelle taille ? [1] petit, [2] moyen, [3] grand\nChoix : ");
  262.  
  263. scanf("%u",&tailleP);
  264. resultat = condition_ajout_piece(game, ligneP, colonneP, tailleP, current_player);
  265. }while(resultat != 1);
  266. place_piece(game, current_player, tailleP, ligneP, colonneP);
  267. resultat=0;
  268. }
  269. affiche_jeu(game);
  270. current_player = next_player(current_player);
  271.  
  272. }
  273. printf("Le joueur %d a perdu, dommage !\n",current_player );
  274. printf("La partie est terminée.\n\n");
  275. printf("\033[1;31m");
  276. printf("______________________\n\n");
  277.  
  278. break;
  279. case 2:
  280. regles();
  281. break;
  282. case 3:
  283. quitter();
  284. break;
  285. }
  286. destroy_game(game);
  287. }while(choix!=3);
  288. return 0;
  289. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement