From 8309e24cc7d6ca2886d427ce1015f282196a9bd4 Mon Sep 17 00:00:00 2001 From: nelet Date: Tue, 15 Oct 2024 10:36:25 +0200 Subject: [PATCH 1/2] chrono --- a.out | Bin 0 -> 16160 bytes pendu.c | 11 +++++++++++ 2 files changed, 11 insertions(+) create mode 100755 a.out diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..91c1674351b8fc8fd88fdb07debd21dc6233e7dc GIT binary patch literal 16160 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 F4**+flg|JE literal 0 HcmV?d00001 diff --git a/pendu.c b/pendu.c index 1b0cfd6..f06acbb 100644 --- a/pendu.c +++ b/pendu.c @@ -2,6 +2,8 @@ #include #include #include +#include +#include #define MAX_WORDS 14 #define MAX_TRIES 6 @@ -35,6 +37,11 @@ void display_hangman(int tries) { } } +void alarm_handler(int sig) { + printf("\nTrop tard ! Vous avez dépassé les 30 secondes.\n"); + exit(1); +} + int main() { srand(time(NULL)); const char *word = words[rand() % MAX_WORDS]; @@ -48,12 +55,16 @@ int main() { } guessed[word_length] = '\0'; + signal(SIGALRM, alarm_handler); + while (tries < MAX_TRIES && guessed_correctly < word_length) { printf("\nMot à deviner : %s\n", guessed); display_hangman(tries); char guess; + alarm(30); printf("Entrez une lettre : "); scanf(" %c", &guess); + alarm(0); int found = 0; for (int i = 0; i < word_length; i++) { From abd96239301205c648274a8ef74229158e991c80 Mon Sep 17 00:00:00 2001 From: nelet Date: Tue, 15 Oct 2024 11:19:32 +0200 Subject: [PATCH 2/2] ajout score --- a.out | Bin 16160 -> 16264 bytes pendu.c | 32 ++++++++++++++++++++++++++++---- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/a.out b/a.out index 91c1674351b8fc8fd88fdb07debd21dc6233e7dc..d7219b6cea019e2c258030eda6518dfa4add3f50 100755 GIT binary patch delta 2578 zcmZ2b*HJ$~Lg<440~k1fNd^WEi-}sxxHPyRTn(;?xAeGJ*&sYtw#h<_dR!(f5UvT! zW-mrPMxifC5I%yQEX5=@c?HuBK~9Ja0}}(|0gx`n$%V|~B5{lQiVP#1CRN#c#XnO1 zX}I&p!KahwFvl?JOm<`uXIwp5kVT(Sb+RLiK4UOQWbz9Z3C02ti_s2DMuExWlLcAC zCtt8-ne4(MGFicrWikt^4&ybDD60zt1B24!jZDIf_LCD?jagDM)6ynSVSO^Wj7`X! zfq{{Mg`tdrfdT4y2Jy^HUIqqMh6bpZ2$;{p&;{j}N@a2~FfcPrf%3OZoW{n$z{Id% z@RqoVZvrc_SKAx+>_UGh)=%5!NdE&9wGw@Pl3sIIrcMhO`gl? zF3ATG29pucm|$mMU=ZB=k@GR@B!LIK|5c0h85lCS85kH|8ce<`AQzy+#K7=hbhRD> z!bzC);>K329MSQC7k~s@XLd|$Z!}+d-U4Q z1S#w_oiy27P=+yfa)zLsR;WG$14F5Cs7JG{l^z2FgGcAn5?+sP+iiLvD>d{O7+xg* z|Ns9OtIp&Nfe0(O z9V+nt@Bja=Lp*v}w?PH&fdrgAdRebR1G z;L*!!R1X!I_4oh(2@_5p4)y4K>e2j0ptJUmM=xs%RJP{t|Nr|L85kH|2>tv2AF4*7 zv-XWgXX%6epul@^^Y8!v9-Xc~Ji0?4cyzn|@aVke(Rutu)8GI9Kk@4v=yd(i?fNGB zz#P^W%nS_Lt{*yGzjV8P*_8y++kh_l*B#cbM{1r!B#wY3Kq)Hp zA1HW^?FS{+7k+>K|A#m<mE?jXm&lo*zI}%QL5ZZ> zb&E&mwa()&5?@_`4*yQhEs|NmMQ5}BYt zV@CGyx?lhQ?+29>FLeKaLT?3FKR>dP?qC1^g9F&3^NvS%=!+B&Z4q#KDq(#Q&-n}F z%Ge(#4{zoc<>cC=@P$!Q_rw4Hb|3!#_y6$!f5M0V{|i6-|KIfC|NqI8d6iDZhvk

w*{W3r*LIO~Qt z|Nmc@?5nKI7&y65S)TFH>LaX zAbF5?72p5=uZAq22$p70U|?VXS*s3m1``7V15CebGc)rhCLVT<&5ELnIN{~>1ZcSp zihGc8Ws_g($}|3$%&8a8IAL<8o;>4+$(?%kj0%%a>d6aoKr1s)0Dx5gnEX@Eo^i!w zOMQ99hRKoo|Cyc%Y>qOJV`Tg?xzbRdan|IOhW3malV2Jdy9zPzF^CF-bTKf1UCzM3 zFdtl(NHBZ=g(^e}OfF+!U=U*BXZRrs=E8|J;7V^ln7joh--1b|$q$Xi8AZUP+T?>q z;*7>%w%g>7M&gp8j0_BdOcD$kXtpFxRx}ouEM#P00J&|S5X2gAs53Ayd<2`^I62T* zyuO_gR8LAW{6I572dWp=f`Iv}2dW<3Uo)WUt)bzt2NXjL3=DIj;xD1Gu@T}FhP7aE zhRM&31sRWleRO@Ypouu+W01cX|4w!^5to!;0)-V1$bnE@5K0uJesYJ&WbVX*f}G0u zr2M?n;>l8`{v4o&KuKn9>f{*H8vf+OoaEA+#FEr_aH8M*!Zd=Jal>RsOMSr!tPqo6 z^oPlfmimGXp!~?dzyPCFCLgra=Uf35T`~Emr8(yhDDTH)ODl7Ds)3~*g~^Rp^^6xL zGg|A*!a@#4vqS9!+dTOpr|{$iYXMGJI`}cU(%PNz^W=lp`htk27FaEV%Vb6yeL)Ll w2oFa8+3aXz&&XIYxzYANQo0BXJ^ApigX delta 2157 zcmeCEUr;weLg;}20~k1fNd|@m<`cD+aed%~a6fQPyrst_$qL~~vQ8Fa)Z;qC4B?(( z-t5Jw$EbKi3BpIGO(4PyCX;6}9T#MT@|YMH53qpPlM9)}MJ8{)=+~(=VbhUQ>Fw#Z zS8F#HR#mSB=`i%ZyksL5-1t!D5)pXgyHE`TqgG zd;>_~VJPj4B`Y&|_eDk^KMv|6{B+lMe{`)PLb;VCZIH@|fY#EBb<;fx(0E!v6;zy{r@XKw6K# z5cv21|LatbUe@JMf&YL1|9>6g(aU-aD)0^@;Ox=M`V=Z~7bIZh(aXvLGOzRai!&er zMUP%qWvIYzkbrtR+y{p1=S9?+2x^ z7efF3{|BiF_Go_Nk>b(KqN)M*qw5R910J0ZJUS2W2L;iKQ-A;e?>zou@!$XdU%Z=~ zBW$FZt;@jR0rF|5>jjT)*9#t<$6ttpRJoq%c0J>fe8Hpn6{AOI=#9yzgf;3P9CzIT zGU&ML9td>+M7r|Nrt5$f4b?4?H@LdGxYYLjntI$%~#p|NnQp?&v)J;y1{rat!qh3@~Oi0fm0E z>j}ng*ApQBZfLGO!cfZ6?7D-oxpoI@Jx{mm9&6V#{5>-NL0$o|OJyO!4D#(!UT|uH z_;$hX|NmdBA|!7hOE&-h|9?N54g&+ji%)<4{|D>v=)B|69r_~0Lt6wK-6gCqe1HG{ z@6jFmpNSDuk)GN)cVW5wi5J$c4AlRNe78964O)RPx{0WF%?K}s1I7;a4dsb|mF zG1*dIo-t)|r2hZO+nEG5XBY@DGTxY6X{gWGHF>3>JtO<%mxjiZO^ie&XE87^2r=<9 z@Q6Z9fKm%UMJ(fHFnJD4J_M7W!6fVCk4EB*LX!^~i8HEBRx}ouG+|_55M+{I$bi*4 zP;(q72O5hr27pvbCW6#3NH8=&)f7P0q)*;xEH25-$iN`Pz{dcqzQBRbz`&3*`Ju76 zVFgrnoe)G5I5-&?7;2&7H=)6{5hBgd3$l@M8HkkJ4zia?g5d+yUZ@g=!yuQl-eqK9 zP@24vNm%j+$SfuvL@feU_yy$W$rnr}PtG^>n|#SMU!Wv2H`T%2$J5C<-bl|#&vbKu zSp+lVjL9o4^#v{L)fiFa?wz7#J8}w9;fvD}BxmsA$LJL@RU78&KYj z$qTK_;ZX~VVvfl#t?D_zB@zPz!(>5g@yYGhg7DfN7Hpa3S4nKt@@0?H6?!stDlSK8P!G8RmJY5SkCV)9EnbFL0hf@ff0_{TU|%ifH! JZE~W$Isj5rikkoc diff --git a/pendu.c b/pendu.c index f06acbb..244a89c 100644 --- a/pendu.c +++ b/pendu.c @@ -36,19 +36,36 @@ void display_hangman(int tries) { case 6: printf(" ----\n | |\n | O\n | /|\\\n | / \\\n |\n--------\n"); break; } } - +// Fct qui fait sortir du prog après avoir passé 30sec void alarm_handler(int sig) { printf("\nTrop tard ! Vous avez dépassé les 30 secondes.\n"); exit(1); } +//FCT pour calculer le score en fonction du temps mis et des erreurs obtenus +int calculate_score(int mistakes, time_t start_time) { + time_t end_time = time(NULL); + int time_taken = (int)difftime(end_time, start_time); + int base_score = 1000 - (mistakes * 100) - time_taken; + return (base_score < 0) ? 0 : base_score; +} + +//FCT pour ajouter un bonus si le joueur trouve en moins de 3 essais +void apply_bonus(int *score, int tries) { + if (tries <= 3) { + *score += 500; + } +} + int main() { srand(time(NULL)); const char *word = words[rand() % MAX_WORDS]; int word_length = strlen(word); - char guessed[word_length]; + char guessed[word_length + 1]; int tries = 0; int guessed_correctly = 0; + int mistakes = 0; + int score = 0; for (int i = 0; i < word_length; i++) { guessed[i] = '_'; @@ -56,15 +73,16 @@ int main() { guessed[word_length] = '\0'; signal(SIGALRM, alarm_handler); + time_t start_time = time(NULL); // Début du chronomètre pour le score while (tries < MAX_TRIES && guessed_correctly < word_length) { printf("\nMot à deviner : %s\n", guessed); display_hangman(tries); char guess; - alarm(30); + alarm(30); //début du compteur des 30 sec a chaque tour printf("Entrez une lettre : "); scanf(" %c", &guess); - alarm(0); + alarm(0); //fin du compteur et sortie du programme via le signal int found = 0; for (int i = 0; i < word_length; i++) { @@ -79,15 +97,21 @@ int main() { if (!found) { tries++; + mistakes++; } } + score = calculate_score(mistakes, start_time); //calcul le score en fonction des erreurs et du temps écoulé + if (guessed_correctly == word_length) { + apply_bonus(&score, tries); //aplique le bonus de score si le nb d'essais <=3 printf("Félicitations ! Vous avez deviné le mot : %s\n", word); } else { printf("Désolé, vous avez perdu. Le mot était : %s\n", word); display_hangman(MAX_TRIES); } + printf("Votre score final est : %d\n", score); + return 0; }