Advertisement
Guest User

Untitled

a guest
Oct 28th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.83 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <string.h>
  5.  
  6. #define TAILLEXMAX 18
  7. #define TAILLEYMAX 24
  8. #define PORTEAVIONID 4
  9. #define TAILLE_PORTEAVION 6
  10. #define CROISEURID 3
  11. #define TAILLE_CROISEUR 4
  12. #define DESTROYERID 2
  13. #define TAILLE_DESTROYER 3
  14. #define CORVETTEID 1
  15. #define TAILLE_CORVETTE 1
  16.  
  17. void waitFor(unsigned int secs){
  18.  
  19. unsigned int retTime = time(0) + secs;
  20. while (time(0) < retTime);
  21.  
  22. }
  23.  
  24. int doRand(int startVal, int endVal){
  25.  
  26. waitFor(0.05);
  27. srand(time(NULL)*rand());
  28. if(startVal == 0 && endVal == 1){
  29. return rand() % 2;
  30. }else{
  31. return (rand() % ((endVal + startVal -1)) + startVal);
  32. }
  33.  
  34. }
  35.  
  36. void FilerWrite(){
  37. FILE* ftp = fopen("./test1.txt","a+");
  38. int i = 0;
  39. while(i < 1000){
  40. fprintf(ftp,"Hello world %d",i);
  41. i++;
  42. }
  43. fclose(ftp);
  44. }
  45.  
  46. void FilerRead(){
  47. FILE* fptr = fopen("./test1.txt","r");
  48. char c;
  49. while(1)
  50. {
  51. c = fgetc(fptr);
  52. if ( feof(fptr) )
  53. {
  54. break;
  55. }
  56. printf ("%c", c);
  57. }
  58. fclose(fptr);
  59. }
  60.  
  61. int Superposition(int random_position, int taille, int joueur[18][24], int x, int y){ //Fonction pour vérifier s'il y a superposition ou pas
  62.  
  63. int i=0;
  64.  
  65. switch(random_position){
  66. case 1:
  67. for(i=0;i<=taille;i++){
  68. if(joueur[x+i][y] != 0)
  69. return 1;
  70. }
  71. break;
  72. case 2:
  73. for(i=0;i<=taille;i++){
  74. if(joueur[x-i][y] != 0)
  75. return 1;
  76. }
  77. break;
  78. case 3:
  79. for(i=0;i<=taille;i++){
  80. if(joueur[x][y+i] != 0)
  81. return 1;
  82. }
  83. break;
  84. case 4:
  85. for(i=0;i<=taille;i++){
  86. if(joueur[x][y-i] != 0)
  87. return 1;
  88. }
  89. break;
  90. }
  91. return 0;
  92.  
  93. }
  94.  
  95. void PlacementUnBateauIA(int joueur[18][24], int tailleX, int tailleY, int taillebateau, int idbateau){ //Fonction pour placement des bateaux
  96.  
  97. int j=0;
  98. int y=0;
  99. int x=0;
  100. int random_position=0;
  101. int superpo=1;
  102.  
  103. random_position=doRand(1,4);
  104. x=doRand(0, tailleX-1);
  105. y=doRand(0, tailleY-1);
  106. superpo=1;
  107. for(j=0;j<taillebateau;j++){
  108. if(random_position==1){ //Vers le bas
  109. while(x+taillebateau>=tailleX || superpo==1){
  110. x=doRand(0, tailleX-1);
  111. y=doRand(0, tailleY-1);
  112. superpo=Superposition(random_position, taillebateau, joueur, x, y);
  113. }
  114. joueur[x][y]=idbateau;
  115. joueur[x+j][y]=idbateau;
  116. }else if(random_position==2){ //Vers le haut
  117. while(x-taillebateau<0 || superpo==1){
  118. x=doRand(0, tailleX-1);
  119. y=doRand(0, tailleY-1);
  120. superpo=Superposition(random_position, taillebateau, joueur, x, y);
  121. }
  122. joueur[x][y]=idbateau;
  123. joueur[x-j][y]=idbateau;
  124. }else if(random_position==3){ //Vers la droite
  125. while(y+taillebateau>=tailleY || superpo==1){
  126. x=doRand(0, tailleX-1);
  127. y=doRand(0, tailleY-1);
  128. superpo=Superposition(random_position, taillebateau, joueur, x, y);
  129. }
  130. joueur[x][y]=idbateau;
  131. joueur[x][y+j]=idbateau;
  132. }else if(random_position==4){ //Vers la gauche
  133. while(y-taillebateau<0 || superpo==1){
  134. x=doRand(0, tailleX-1);
  135. y=doRand(0, tailleY-1);
  136. superpo=Superposition(random_position, taillebateau, joueur, x, y);
  137. }
  138. joueur[x][y]=idbateau;
  139. joueur[x][y-j]=idbateau;
  140. }
  141. }
  142.  
  143.  
  144. }
  145.  
  146. void PlacementBateauxIA(int joueur[18][24], int tailleX, int tailleY){
  147.  
  148. PlacementUnBateauIA(joueur, tailleX, tailleY, TAILLE_PORTEAVION, PORTEAVIONID);
  149. /*PlacementUnBateauIA(joueur, tailleX, tailleY, TAILLE_CROISEUR, CROISEURID);
  150. PlacementUnBateauIA(joueur, tailleX, tailleY, TAILLE_CROISEUR, CROISEURID);
  151. PlacementUnBateauIA(joueur, tailleX, tailleY, TAILLE_CORVETTE, CORVETTEID);
  152. PlacementUnBateauIA(joueur, tailleX, tailleY, TAILLE_DESTROYER, DESTROYERID);
  153. PlacementUnBateauIA(joueur, tailleX, tailleY, TAILLE_DESTROYER, DESTROYERID);*/
  154.  
  155. }
  156.  
  157. void PlacementUnBateauJoueur(int joueur[18][24], int tailleX, int tailleY, int taillebateau, int idbateau){ //Fonction pour placement des bateaux des joueurs
  158.  
  159. int i=0;
  160. int y=0;
  161. int x=0;
  162. int isOKBatal[4]={1,1,1,1};
  163. int superpo=1;
  164. int platoF[24][24];
  165. int direction;
  166. int batopose=0;
  167.  
  168. for(i=0; i<24; i++)
  169. memcpy(&platoF[i], &joueur[i], sizeof(joueur[0]));
  170.  
  171. printf("Vous devez maintenant placer vos bateaux !\n\n");
  172. do{
  173. printf("Placement du Bateau de %d cases de longueur :\n\n", taillebateau);
  174. AffichagePlateau(joueur, tailleX, tailleY);
  175. printf("Entrez les coordonnées X et Y du point de départ du bateau :\n\n");
  176. do{
  177. printf("Position Y (horizontal) : ");
  178. scanf("%d", &y);
  179. printf("Position X (vertical) : ");
  180. scanf("%d", &x);
  181. }while(joueur[x][y] != 0);
  182.  
  183. platoF [x] [y] = idbateau;
  184. printf("\n\n");
  185. printf("Voici la position de départ de votre bateau :\n\n");
  186. AffichagePlateau(platoF, tailleX, tailleY);
  187.  
  188. for(i=1; i<=4; i++){
  189. superpo=Superposition(i, taillebateau, joueur, x, y);
  190. if(i==1){
  191. if(x+taillebateau>tailleX || superpo==1){
  192. isOKBatal[i-1]=0;
  193. }
  194. }else if(i==2){
  195. if(x-taillebateau<0 || superpo==1){
  196. isOKBatal[i-1]=0;
  197. }
  198. }else if(i==3){
  199. if(y+taillebateau>tailleY || superpo==1){
  200. isOKBatal[i-1]=0;
  201. }
  202. }else if(i==4){
  203. if(y-taillebateau<0 || superpo==1){
  204. isOKBatal[i-1]=0;
  205. }
  206. }
  207. }
  208.  
  209.  
  210. for(i=0; i<=3; i++){
  211. if(isOKBatal[i]==1){
  212. if(i==0){
  213. printf("1. Vers le bas\n");
  214. }else if(i==1){
  215. printf("2. Vers le haut\n");
  216. }else if(i==2){
  217. printf("3. Vers la droite\n");
  218. }else if(i==3){
  219. printf("4. Vers la gauche\n");
  220. }
  221. }
  222. }
  223. }while(isOKBatal[0] == 0 && isOKBatal[1] == 0 && isOKBatal[2] == 0 && isOKBatal[3] == 0);
  224.  
  225.  
  226. do{
  227. scanf("%d",&direction);
  228. switch(direction){
  229.  
  230. case 1:
  231. if(isOKBatal[0]==1){
  232. for(i=0; i<taillebateau; i++){
  233. joueur[x][y]=idbateau;
  234. joueur[x+i][y]=idbateau;
  235. }
  236. batopose=1;
  237. }
  238. else
  239. printf("Tu ne peux pas faire cela, recommence\n");
  240. break;
  241.  
  242. case 2:
  243. if(isOKBatal[1]==1){
  244. for(i=0; i<taillebateau; i++){
  245. joueur[x][y]=idbateau;
  246. joueur[x-i][y]=idbateau;
  247. }
  248. batopose=1;
  249. }
  250. else
  251. printf("Tu ne peux pas faire cela, recommence\n");
  252. break;
  253.  
  254. case 3:
  255. if(isOKBatal[2]==1){
  256. for(i=0; i<taillebateau; i++){
  257. joueur[x][y]=idbateau;
  258. joueur[x][y+i]=idbateau;
  259. }
  260. batopose=1;
  261. }
  262. else
  263. printf("Tu ne peux pas faire cela, recommence\n");
  264. break;
  265.  
  266. case 4:
  267. if(isOKBatal[3]==1){
  268. for(i=0; i<taillebateau; i++){
  269. joueur[x][y]=idbateau;
  270. joueur[x][y-i]=idbateau;
  271. }
  272. batopose=1;
  273. }
  274. else
  275. printf("Tu ne peux pas faire cela, recommence\n");
  276. break;
  277. }
  278.  
  279. }while(batopose==0);
  280.  
  281.  
  282. }
  283.  
  284. void AffichagePlateau(int joueur[18][24], int tailleX, int tailleY){ //Fonction pour afficher le plateau d'un joueur
  285.  
  286. int i=0;
  287. int j=0;
  288. int valeur[24]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};
  289.  
  290. printf(" ");
  291. for(i=0;i<tailleX;i++){
  292. if(i==0 || i==1 || i==2 || i==3 || i==4 || i==5 || i==6 || i==7 || i==8 || i==9){
  293. printf(" %d", i);
  294. }else{
  295. printf(" %d", i);
  296. }
  297. }
  298. printf("\n ");
  299.  
  300. for(i=0;i<tailleX;i++){
  301. printf("---");
  302. }
  303.  
  304. for(i=0;i<tailleY;i++){
  305. if(i==0 || i==1 || i==2 || i==3 || i==4 || i==5 || i==6 || i==7 || i==8 || i==9){
  306. printf("\n");
  307. printf("%d | ", valeur[i]);
  308. }else{
  309. printf("\n");
  310. printf("%d | ", valeur[i]);
  311. }
  312. for(j=0;j<tailleX;j++){
  313. printf(" %d ", joueur[i][j]);
  314. }
  315. }
  316. printf("\n\n");
  317.  
  318. }
  319.  
  320. char SerumDeVerite(int joueur[18][24], int tailleX, int tailleY, int x, int y){ //Fonction pour tester
  321.  
  322. int i=0;
  323. int j=0;
  324. char *toucheroupas={'0'};
  325.  
  326. for(i=0;i<tailleX;i++){
  327. for(j=0;j<tailleY;j++){
  328. if(joueur[x][y]==2 || joueur[x][y]==3 || joueur[x][y]==4 || joueur[x][y]==5){
  329. toucheroupas = "Touche-Coule";
  330. }else{
  331. toucheroupas = "Touche";
  332. }
  333. }
  334. }
  335. return toucheroupas;
  336.  
  337. }
  338.  
  339. char *ImmaFiringMahLazor(int x, int y, int joueur[18][24], int tirprecedent[3], int tailleX, int tailleY){
  340.  
  341. while(joueur[x][y]==9 || joueur[x][y]==7){
  342. x=doRand(0, tailleX-1);
  343. y=doRand(0, tailleY-1);
  344. }
  345. if(joueur[x][y]==0){
  346. joueur[x][y]=9;
  347. printf("L'IA attaque en %d/%d\n\n", x, y);
  348. return "Plouf!";
  349. }else if(joueur[x][y]==CORVETTEID || joueur[x][y]==DESTROYERID || joueur[x][y]==CROISEURID || joueur[x][y]==PORTEAVIONID){
  350. tirprecedent[0]=x; tirprecedent[1]=y; tirprecedent[2]=joueur[x][y];
  351. joueur[x][y]=7;
  352. printf("L'IA attaque en %d/%d\n\n", x, y);
  353. return "Touche!";
  354. //return SerumDeVerite(joueur, tailleX, tailleY, x, y);
  355. }
  356. return "Vous avez deja tire ici";
  357.  
  358. }
  359.  
  360. void IAvsIA(int joueur1[18][24], int joueur2[18][24], int x, int y, int tailleX, int tailleY){
  361.  
  362. int tirprecedent2[3]={0};
  363. int tirprecedent1[3]={0};
  364.  
  365. printf("IA vs. IA !\n\n");
  366.  
  367. do{
  368. printf("Choisissez la longueur de votre plateau : ");
  369. scanf("%d[0-9]", &tailleX);
  370. }while(tailleX<8 || tailleX>24);
  371. printf("\n");
  372. fflush(stdin);
  373.  
  374. do{
  375. printf("Choisissez la largeur de votre plateau : ");
  376. scanf("%d[0-9]", &tailleY);
  377. }while(tailleY<8 || tailleY>18);
  378. printf("\n");
  379. fflush(stdin);
  380. system("cls");
  381.  
  382. //Placement bateau IA1
  383. PlacementBateauxIA(joueur1, tailleX, tailleY);
  384. //Placement bateau IA2
  385. PlacementBateauxIA(joueur2, tailleX, tailleY);
  386.  
  387.  
  388. //Affichage du plateau de l'IA 1
  389. printf("Plateau de l'IA 1 :\n\n");
  390. AffichagePlateau(joueur1, tailleX, tailleY);
  391. printf("\n\n");
  392.  
  393. //Affichage du plateau de l'IA 2
  394. printf("Plateau de l'IA 2 :\n\n");
  395. AffichagePlateau(joueur2, tailleX, tailleY);
  396. printf("\n");
  397. getchar();
  398. system("cls");
  399.  
  400. while(getchar()){
  401.  
  402. //L'IA 1 tire sur l'IA 2
  403. printf("Le joueur 1 tire :\n\n");
  404.  
  405. x=doRand(0, tailleX-1);
  406. y=doRand(0, tailleY-1);
  407.  
  408. if(tirprecedent1[0]==0 && tirprecedent1[1]==0){
  409. printf("%s", ImmaFiringMahLazor(x, y, joueur2, tirprecedent1, tailleX, tailleY));
  410. }else{
  411. printf("%s", ImmaFiringMahLazor(tirprecedent1[0], tirprecedent1[1], joueur2, tirprecedent1, tailleX, tailleY));
  412. }printf("\n\n");
  413.  
  414. AffichagePlateau(joueur2, tailleX, tailleY);
  415. printf("\n\n");
  416.  
  417. //L'IA 2 tire sur l'IA 1
  418. printf("Le joueur 2 tire :\n\n");
  419.  
  420. x=doRand(0, tailleX-1);
  421. y=doRand(0, tailleY-1);
  422.  
  423. if(tirprecedent2[0]==0 && tirprecedent2[1]==0){
  424. printf("%s", ImmaFiringMahLazor(x, y, joueur1, tirprecedent2, tailleX, tailleY));
  425. }else{
  426. printf("%s", ImmaFiringMahLazor(tirprecedent2[0], tirprecedent2[1], joueur1, tirprecedent2, tailleX, tailleY));
  427. }printf("\n\n");
  428.  
  429. AffichagePlateau(joueur1, tailleX, tailleY);
  430. printf("\n\n");
  431. getchar();
  432. system("cls");
  433. }
  434.  
  435. }
  436.  
  437. void Menu(int joueur1[18][24], int joueur2[18][24],int x,int y,int tailleX, int tailleY){
  438.  
  439. int choix=0;
  440. int mode=0;
  441.  
  442. do{
  443. printf("Bienvenue dans BattleShip!\n\n");
  444. printf("1. Jouer\n");
  445. printf("2. Quitter\n\n");
  446. printf("Votre choix : ");
  447. scanf("%d[0-9]", &choix);
  448. fflush(stdin);
  449. system("cls");
  450. }while(choix!=1 && choix!=2);
  451.  
  452. if(choix==1){
  453. printf("Choississez votre mode de jeu :\n\n");
  454. printf("1. IA vs. IA\n");
  455. printf("2. Joueur vs. IA\n");
  456. printf("3. Joueur vs. Joueur\n\n");
  457. printf("Votre choix : ");
  458. scanf("%d", &mode);
  459. system("cls");
  460.  
  461. switch(mode){
  462.  
  463. case 1:
  464. IAvsIA(joueur1, joueur2, x, y, tailleX, tailleY); //Mode IA vs IA
  465. break;
  466.  
  467. case 2:
  468. //Joueur vs. IA
  469. JoueurVsIA(joueur1, joueur2, 18, 24);
  470. break;
  471.  
  472. case 3:
  473. //Joueur vs. Joueur
  474. break;
  475. }
  476. }
  477.  
  478. }
  479.  
  480. void Choix(){
  481.  
  482. int joueur1[100][100];
  483. int joueur2[100][100];
  484. int choix;
  485. int x, y, tailleX, tailleY;
  486.  
  487. do{
  488. printf("1. Retour au menu principal\n");
  489. printf("2. Quitter\n");
  490. printf("Votre choix : ");
  491. scanf("%d[0-9]", &choix);
  492. }while(choix!=1 || choix!=2);
  493.  
  494. if(choix==1){
  495. Menu(joueur1, joueur2, x, y, tailleX, tailleY);
  496. }else{
  497. exit(0);
  498. }
  499.  
  500. }
  501.  
  502. void JoueurVsIA(int joueur1[18][24], int joueur2[18][24],int tailleX, int tailleY){
  503.  
  504.  
  505. int x, y, diff, i;
  506. int tailleBateau[6]={TAILLE_PORTEAVION, TAILLE_CROISEUR, TAILLE_CROISEUR, TAILLE_DESTROYER, TAILLE_DESTROYER, TAILLE_CORVETTE};
  507. int idBateau[6]={PORTEAVIONID, CROISEURID, CROISEURID, DESTROYERID, DESTROYERID, CORVETTEID};
  508. int platoF[24][24];
  509.  
  510. for(i=0; i<24; i++){
  511. memcpy(&platoF[i], &joueur1[i], sizeof(joueur1[0]));
  512. }
  513.  
  514. do{
  515. printf("JOUEUR vs. IA !\n\n");
  516. printf("1. Mode Izi Pizi\n");
  517. printf("2. Mode Narmol\n");
  518. printf("3. Mode Aim Boat\n\n");
  519. printf("Votre choix : ");
  520. scanf("%d[0-9]", &diff);
  521. fflush(stdin);
  522. system("cls");
  523. }while(diff<1 && diff>3);
  524.  
  525. for(i=0; i<1; i++){
  526. printf("Placement de vos bateaux :\n\n");
  527. PlacementUnBateauJoueur(joueur1, tailleX, tailleY, tailleBateau[i], idBateau[i]);
  528. }
  529.  
  530. //PlacementBateauxIA(joueur1, tailleX, tailleY);
  531. system("cls");
  532.  
  533. printf("Voici votre plateau pour cette partie :\n\n");
  534. AffichagePlateau(joueur1, tailleX, tailleY);
  535.  
  536. PlacementBateauxIA(joueur2, tailleX, tailleY);
  537. waitFor(3);
  538.  
  539. printf("Vous commencez!\n\n");
  540. while(1){
  541. waitFor(3);
  542. system("cls");
  543. printf("A votre tour de tirer ! \n\n");
  544. printf("Voici vos précédents tirs, 1 quand vous avez touche un bateau, 9 quand vous avez tire dans l'eau :\n\n");
  545. AffichagePlateau(platoF, tailleX, tailleY);
  546. TireJoueur(joueur2,platoF);
  547. if(FinPartie(joueur2)==1)
  548. break;
  549. if(diff==1){
  550. IAfacile(joueur1);
  551. }else if(diff==2){
  552. //IAnormal(joueur1);
  553. }else if(diff==3){
  554. IAhardcore(joueur1);
  555. }
  556. if(FinPartie(joueur1)==1)
  557. break;
  558. }
  559.  
  560. if(FinPartie(joueur1)==1){
  561. printf("L'IA remporte la partie! Vous avez perdu\n\n");
  562. }else{
  563. printf("Vous remportez la bataille!\n\n");
  564. }
  565.  
  566. Choix();
  567.  
  568. }
  569.  
  570. void IAfacile(int joueur[18][24]){
  571. int x, y;
  572.  
  573. printf("Au tour de l'IA :\n\n");
  574. do{
  575. x=doRand(0, 24);
  576. y=doRand(0, 18);
  577. }while(joueur[x][y]==9 || joueur[x][y]==7);
  578.  
  579. printf("L'IA attaque en %d/%d\n\n", x, y);
  580.  
  581. if(joueur[x][y]==0){
  582. joueur[x][y]=9;
  583. printf("L'IA rate ! Plouf!\n ");
  584. }else if(joueur[x][y]==1 || joueur[x][y]==2 || joueur[x][y]==3 || joueur[x][y]==4){
  585. joueur[x][y]=7;
  586. printf("\nL'IA touche!\n");
  587. }
  588. }
  589.  
  590. void IAfacille();
  591.  
  592. void IAhardcore(int joueur[18][24]){
  593.  
  594. int x, y, i , j;
  595.  
  596. printf("Au tour de l'IA :\n\n");
  597. for(i=0; i<18; i++){
  598. for(j=0; j<24; j++){
  599. if(joueur[i][j]==1 || joueur[i][j]==2 || joueur[i][j]==3 || joueur[i][j]==4){
  600. x=i;
  601. y=j;
  602. }
  603. }
  604. }
  605.  
  606. printf("L'IA attaque en %d/%d\n\n", x, y);
  607.  
  608. if(joueur[x][y]==0){
  609. joueur[x][y]=9;
  610. printf("L'IA rate ! Plouf!\n ");
  611. }else if(joueur[x][y]==1 || joueur[x][y]==2 || joueur[x][y]==3 || joueur[x][y]==4){
  612. joueur[x][y]=7;
  613. printf("\nL'IA touche!\n ");
  614. }
  615. }
  616.  
  617. void TireJoueur(int joueur[18][24]){//Fait tirer le joueur et remplace les cases
  618. int x, y;
  619.  
  620. printf("C'est votre tour !\n\n");
  621. printf("Entrez la coordonnee x: ");
  622. scanf("%d[0-9]",&x);
  623. printf("\nEntrez la coordonnee y: ");
  624. scanf("%d[0-9]",&y);
  625.  
  626. if(joueur[x][y]==0){
  627. joueur[x][y]=9;
  628. printf("\nVous avez rate ! Plouf!\n ");
  629. }else if(joueur[x][y]==1 || joueur[x][y]==2 || joueur[x][y]==3 || joueur[x][y]==4){
  630. joueur[x][y]=7;
  631. printf("\nVous avez touche!\n ");
  632. }else if(joueur[x][y]==7){
  633. printf("\nTu as deja tire ici recommence !\n ");
  634. TireJoueur(joueur);
  635. }
  636. }
  637.  
  638. int FinPartie(int joueur[18][24]){//check le plateau reçu, return 1 si tout est détruit, 0 sinon
  639. int j,i;
  640.  
  641. for(i=0; i<18; i++){
  642. for(j=0; j<24; j++){
  643. if(joueur[i][j]==1 || joueur[i][j]==2 || joueur[i][j]==3 || joueur[i][j]==4)
  644. return 0;
  645. }
  646. }
  647.  
  648. return 1;
  649. }
  650.  
  651. void JeuBatailleNavale(){
  652.  
  653. }
  654.  
  655. int main(){
  656.  
  657. while(1){
  658.  
  659. int joueur1[100][100]={0};
  660. int joueur2[100][100]={0};
  661. int tailleX=0;
  662. int tailleY=0;
  663. int x=0;
  664. int y=0;
  665.  
  666. Menu(joueur1, joueur2, x, y, tailleX, tailleY);
  667. break;
  668.  
  669. }
  670.  
  671. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement