Advertisement
Guest User

Gobblet Gobblers1

a guest
Dec 8th, 2019
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.35 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. void viderBuffer()
  13. {
  14. int c = 0;
  15. while (c != '\n' && c != EOF)
  16. {
  17. c = getchar();
  18. }
  19. }
  20.  
  21. void tour_joueur(player current_player){
  22.  
  23. if(current_player == 1){
  24. printf("\033[1;32m");
  25. printf("Joueur Numéro %d, à toi de jouer !\n\n", current_player);
  26. }
  27.  
  28. if(current_player == 2){
  29. printf("\033[1;34m");
  30. printf("Joueur Numéro %d, à vous de jouer !\n\n", current_player);
  31. }
  32. printf("\033[0m");
  33. }
  34.  
  35. void affiche_jeu(board game){
  36.  
  37. printf("\n\n\n");
  38. for(int i=0;i<3;i++){
  39. printf("\n");
  40. if(i == 0)printf("┌───┬───┬───┐\n");
  41. else(printf("├───┼───┼───┤\n"));
  42. printf("│ ");
  43. for(int j=0;j<3;j++){
  44. printf("\033[1;34m");
  45. if(get_place_holder(game,i,j)==2){
  46. if(get_piece_size(game,i,j)==0){
  47. printf(" ");
  48. }
  49. if(get_piece_size(game,i,j)==1){
  50. char a[3]="•";
  51. printf("%s",a);
  52. }
  53. if(get_piece_size(game,i,j)==2){
  54. printf("o");
  55. }
  56. if(get_piece_size(game,i,j)==3){
  57. printf("0");
  58. }
  59. }
  60. else{
  61. printf("\033[1;32m");
  62. if(get_piece_size(game,i,j)==0){
  63. printf(" ");
  64. }
  65. if(get_piece_size(game,i,j)==1){
  66. printf("*");
  67. }
  68. if(get_piece_size(game,i,j)==2){
  69. printf("x");
  70. }
  71. if(get_piece_size(game,i,j)==3){
  72. printf("X");
  73. }
  74. }
  75. printf("\033[0m");
  76. printf(" │ ");
  77.  
  78. }
  79. }
  80. printf("\n└───┴───┴───┘\n");
  81.  
  82.  
  83. }
  84.  
  85.  
  86. int condition_ajout_piece(board game, int line, int column,size piece_size, player current_player){
  87. int resultat=0;
  88. if(piece_size > get_piece_size(game,line,column )){
  89. resultat=1;
  90. }else{
  91. if(get_nb_piece_in_house(game,current_player,piece_size) == 0){
  92. printf("\n Vous n'avez plus de pièce de taille %d", piece_size);
  93. }else{
  94. printf("\n\nUne pièce de même taille où de taille supérieur se trouve déjà sur cette case\n\n");
  95. }
  96. }
  97. return resultat;
  98. }
  99.  
  100. int condition_deplacer_piece(board game, int line, int column,size piece_size, player current_player){
  101. int resultat=0;
  102. if(get_piece_size(game,line,column) != 0){
  103. if(piece_size > get_piece_size(game,line,column )){
  104. resultat=1;
  105. }else{
  106. printf("\n\nUne pièce de même taille où de taille inférieur se trouve déjà sur cette case :");
  107. }
  108. }
  109. else{
  110. resultat=1;
  111. }
  112. return resultat;
  113. }
  114.  
  115.  
  116.  
  117. void affiche_maison(board game, player current_player){
  118. int size=0;
  119. printf("Il vous reste");
  120. for(size=1;size<4;size++){
  121. if (size==1){
  122. printf(" %d petite(s) pièce(s),",get_nb_piece_in_house(game, current_player,size));
  123. }
  124. if(size==2){
  125. printf(" %d moyenne(s) pièce(s) et",get_nb_piece_in_house(game, current_player,size));
  126. }
  127. if(size==3){
  128. printf(" %d grande(s) pièce(s).\n",get_nb_piece_in_house(game, current_player,size));
  129. }
  130. }
  131. printf("\n");
  132. }
  133.  
  134. void accueil(){
  135. printf("┌───────────────────────────────────────────────────────────┐\n");
  136. printf("│▁ ▂ ▄ ▅ ▆ ▇ █ ⓖ ⓞ ⓑ ⓑ ⓛ ⓔ ⓣ ⓖ ⓞ ⓑ ⓑ ⓛ ⓔ ⓡ ⓢ █ ▇ ▆ ▅ ▄ ▂ ▁ │\n");
  137. printf("└───────────────────────────────────────────────────────────┘\n");
  138. printf("\n\n");
  139. printf("Bienvenue sur le jeu Gobblet Gobblers ! \nDéveloppé par Félix Lafontaine et Hugo Mercier\n\n\n");
  140.  
  141. }
  142.  
  143. void quitter(){
  144. int color=1;
  145. printf("┌");
  146. for(int k=0;k<11;k++){
  147. if(color%2==1){
  148. printf("\033[1;31m");
  149. }
  150. else{
  151. printf("\033[0m");
  152. }
  153. printf("─");
  154. color++;
  155. }
  156. printf("\033[0m");
  157. printf("┐\n│");
  158. printf(" À bientot ");
  159. printf("\033[1;31m");
  160. printf("│\n└");
  161. for(int k=0;k<11;k++){
  162. if(color%2==1){
  163. printf("\033[1;31m");
  164. }
  165. else{
  166. printf("\033[0m");
  167. }
  168. printf("─");
  169. color++;
  170. }
  171. printf("┘\n");
  172. }
  173.  
  174.  
  175. int main(){
  176. system("clear");
  177.  
  178. player current_player=1;
  179. int choix;
  180. accueil();
  181. do{
  182. board game =new_game();
  183. printf("Faites un choix :\n\n");
  184. printf("\033[1;31m");
  185. printf("┌────────────────────┐\n│");
  186. printf("\033[0m");
  187. printf(" 1-Nouvelle partie ");
  188. printf("\033[1;31m");
  189. printf("│\n└────────────────────┘\n");
  190. printf("\033[0m"); //encadrage en rouge
  191. printf("\033[1;35m");
  192. printf("┌────────────────────┐\n│");
  193. printf("\033[0m");
  194. printf(" 2-Règles ");
  195. printf("\033[1;35m");
  196. printf("│\n└────────────────────┘\n");
  197. printf("\033[0m"); //encadrage en violet
  198. printf("\033[1;33m");
  199. printf("┌────────────────────┐\n│");
  200. printf("\033[0m");
  201. printf(" 3-Quitter ");
  202. printf("\033[1;33m");
  203. printf("│\n└────────────────────┘\n");
  204. printf("\033[0m"); //encadrage en jaune
  205. do{
  206. printf("\nChoix : ");
  207. scanf(" %d",&choix);
  208. printf("\n");
  209. printf("\033[1;31m");
  210. printf("───────────────────────────────────\n\n");
  211. printf("\033[0m");
  212. if(choix<1 || choix>3){
  213. printf("Mauvaise réponse\n");
  214. }
  215. viderBuffer();
  216. }while(choix!=1 && choix!=2 && choix!=3);
  217. switch (choix){
  218. case 1:
  219. printf("Un nouveau plateau a été créé.\n\n");
  220. printf("┌───┬───┬───┐\n│ │ │ │\n├───┼───┼───┤\n│ │ │ │\n├───┼───┼───┤\n│ │ │ │\n└───┴───┴───┘\n\n");
  221. printf("Les joueurs ont chacun 2 petites pièces, 2 moyennes et 2 grandes.\n\n");
  222. while(get_winner(game) == 0){
  223. int tour=1;
  224. tour_joueur(current_player);
  225. affiche_maison(game, current_player);
  226. printf("Voulez-vous ajouter [1] ou déplacer une pièce [2] ?\nChoix : ");
  227. int choix2;
  228. do{
  229. scanf("%d",&choix2);
  230. if(choix2!=1 && choix2!=2){
  231. printf("Mauvaise réponse !\nChoix : ");
  232. }
  233. viderBuffer();
  234. }while(choix2!=1 && choix2!=2);
  235. tour++;
  236. if(choix2==2){
  237. int ligneDepart;
  238. int colonneDepart;
  239. int ligneArrivee;
  240. int colonneArrivee;
  241. int resultat;
  242. do{
  243. printf("Quelle est la ligne de la pièce à déplacer ?\nChoix : ");
  244. do{
  245. scanf("%d",&ligneDepart);
  246. if(ligneDepart<1 || ligneDepart>3){
  247. printf("Mauvaise réponse !\nChoix :");
  248. }
  249. viderBuffer();
  250. }while(ligneDepart<1 || ligneDepart>3);
  251. ligneDepart--;
  252. printf("Quelle est la colonne de la pièce à déplacer ?\nChoix : ");
  253. do{
  254. scanf("%u",&colonneDepart);
  255. if(colonneDepart<1 || colonneDepart>3){
  256. printf("Mauvaise réponse !\nChoix : ");
  257. }
  258. }while(colonneDepart<1 || colonneDepart>3);
  259. colonneDepart--;
  260. if(get_place_holder(game,ligneDepart, colonneDepart) != current_player){
  261. printf("Mauvaise réponse !\nChoix : ");
  262. }
  263. viderBuffer();
  264. }while(get_place_holder(game,ligneDepart, colonneDepart) != current_player);
  265. do{
  266. printf("Sur quelle ligne voulez-vous la déplacer ?\nChoix : ");
  267. do{
  268. scanf("%d",&ligneArrivee);
  269. if(ligneArrivee<1 || ligneArrivee>3){
  270. printf("Mauvaise réponse !\nChoix : ");
  271. }
  272. viderBuffer();
  273. }while(ligneArrivee<1 || ligneArrivee>3);
  274. ligneArrivee--;
  275. printf("Sur quelle colonne voulez-vous la déplacer ?\nChoix : ");
  276. do{
  277. scanf("%d",&colonneArrivee);
  278. if(colonneArrivee<1 || colonneArrivee>3){
  279. printf("Mauvaise réponse !\nChoix : ");
  280. }
  281. }while(colonneArrivee<1 || colonneArrivee>3);
  282. colonneArrivee--;
  283. size piece = get_piece_size(game, ligneDepart, colonneDepart);
  284. resultat=condition_deplacer_piece(game, ligneArrivee, colonneArrivee,piece ,current_player);
  285. }while(resultat !=1);
  286. move_piece(game ,ligneDepart, colonneDepart, ligneArrivee, colonneArrivee);
  287.  
  288. }else{
  289. int resultat;
  290. size tailleP;
  291. int ligneP;
  292. int colonneP;
  293. do{
  294. printf("Quelle ligne ?\nChoix : ");
  295. do{
  296. scanf("%d",&ligneP);
  297. if(ligneP<1 || ligneP>3){
  298. printf("Mauvaise réponse !\nChoix : ");
  299. }
  300. viderBuffer();
  301. }while(ligneP<1 || ligneP>3);
  302. ligneP--;
  303. printf("Quelle colonne ?\nChoix : ");
  304. do{
  305. scanf("%u",&colonneP);
  306. if(colonneP<1 || colonneP>3){
  307. printf("Mauvaise réponse !\nChoix : ");
  308. }
  309. viderBuffer();
  310. }while(colonneP<1 || colonneP>3);
  311. colonneP--;
  312. printf("Quelle taille ? [1] petit, [2] moyen, [3] grand\nChoix : ");
  313. do{
  314. scanf("%u",&tailleP);
  315. if(tailleP<1 || tailleP>3){
  316. printf("Mauvaise réponse !\nChoix : ");
  317. }
  318. viderBuffer();
  319. }while(tailleP<1 || tailleP>3);
  320. resultat = condition_ajout_piece(game, ligneP, colonneP, tailleP, current_player);
  321. }while(resultat != 1);
  322. place_piece(game, current_player, tailleP, ligneP, colonneP);
  323. resultat=0;
  324. }
  325. affiche_jeu(game);
  326. current_player = next_player(current_player);
  327.  
  328. }
  329. printf("Le joueur %d a perdu, dommage !\n",current_player );
  330. printf("La partie est terminée.\n\n");
  331. printf("\033[1;31m");
  332. printf("______________________\n\n");
  333.  
  334. break;
  335. case 2:
  336. regles();
  337. break;
  338. case 3:
  339. quitter();
  340. break;
  341. }
  342. destroy_game(game);
  343. }while(choix!=3);
  344. return 0;
  345. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement