From 9c570f0c192e981d34bf46aa94d67403043625a8 Mon Sep 17 00:00:00 2001 From: Shadow Date: Tue, 23 Jul 2019 16:45:57 +0200 Subject: [PATCH] Assainissement du code --- Sources/FlySim.g3a | Bin 41052 -> 43840 bytes Sources/build-cg/map | 499 ++++++++++++++++---------------- Sources/build-cg/src/FlySim.bin | Bin 12376 -> 15164 bytes Sources/build-cg/src/FlySim.elf | Bin 19752 -> 22876 bytes Sources/build-cg/src/main.o | Bin 4236 -> 3772 bytes Sources/src/main.c | 161 +++-------- 6 files changed, 295 insertions(+), 365 deletions(-) diff --git a/Sources/FlySim.g3a b/Sources/FlySim.g3a index c82913a0e48385b1822090c4281185dee0e17ae9..dc0810b98431fde2ccb51a9928c8bdd785e1c0ee 100644 GIT binary patch delta 5652 zcmZ`-4Ny~AmcB2ENJxSZKv5B168V##_XvpKGHn255V1sYY`4qmc`qbD_$LG!ZMq-7 zP8iLkyC1_i+qK)Q&RSjD&OTdateLK!S*z``duo`O1Wlk79Z(y8+IDA&#dg(Nojv!x zfN0N#I^6rtIrrXkzH`pK_q~}*vP*uM@!!w=PI$}tPp+%MZ{hFFZ-c>u|G65i_`US| zbp-M3`5%hjcBSwP5hnY<^fq%hEH^tRKQDKDKhdZG?&|T6Bmc!*vAyZ!+E_fM7tw`} z!lQIm2oY7`Q6#Xw_Z32gj}Q%AI-(8Hi43AC6VMYxhbbgd&PZ+I#P~1TFA^HvVMHq? zfWASrim&VF2-}G8to&@pe3a4ALpMJWVdy5-sDD}N&36!fGihE@~$2=1Il_P(>S2mA)ZRM)Gr|jw5 z>)V4lDZ|ufvgziW1Y#3mKuVN{O3*QM3Y|sg(MRZ0^k?*hKtu!)OXLwR5r+t_h3F;* zWwdO&Y^Us1S-s3I>zR6Wj_|*luJye-7G?=d9hpP^SA0j(wU&TGQLaKt?<;lu=xJ-f z66mbVe_9Miv8UUKEn2RLYulI7uxMLEs`^EkqY{ttRyh>Ds;R1S6{Yo8`Kl~|u`P~D z|Gqio+n288;L+evfbt&SUg4W`E%bK#_6Py!A%B^#LU=6lcKXVN2O_T+PwFefSon5@ za5&=M>D!t26dNa;N6I;3s=&X)S1g%y@S!*;*|*gK=HLaVa{Z()SNPfzm?JRHq3|Y7W&1b!C_IDE zAuhefzfLgYkyCO0wZ1Ka1uy825Es;d(VD495etoPvv3UjM&*MLCB7z+gR z8Ve9d8yV=pgho&_jsU$6-pBdkgj~^XtuI!{7JE@5@X;6t2tX9HmH+X-;4$(meUUEt-Ye68U`38znN`VgAw^SD+bp zzImKT)-h1h;Xn#p+E8FY&^`jhc!)2NDdTPuqSbtE@3t_ksXM~A^^S6|7eF0T$7lbG z8YOo-Yh2aTS*Fz4=2~?J4Vs-9uI;nv4l#@R%tJL64J#koZ`Rbynf(o#L9gg)&aa;Xgk!x4jroU~guhnSe&L&oxwI5)u< z`pkoetel#u2GPd4Hw*=?O-x6hd8wv)&4WKMs~N-RCfBOZ$vF~+n&F9b{T9s05H9wb zgn?lCbj@h5N8Wb{;Yt=6iqsj=8|59d~<8tV*KBWsL?0{5Dl z7_WM3lutbzW^enMq};Hd$}bBB)5D1Yi?@qJUx{3~C_UkHU%rLHtpQ+~-A$dMTANQ0Ku=;B?(?Vvg40b+RK9DXv6 z4rh2Wu(R_KUvkK#vJ80B8Qyx?GTt{ZlUl5*9k`j=*w^^G*MrPBSikOuzVO_PzHsaW zIW+i1QoZJSQpm3q?AP;N2@^*N^C#@2=-pb;xlgbQnb0k$0_8!MK{yFcfsVfjqe{(4%h4Y%{Wpj*8TOY71x@9<^ zIGnqq-NbCxY(`U{w|{qZkJ?38c`Ns>XD=Xdxj{bkp-oeGW*FJdcq;&nam&@dft%$R zja%g_(AYlM&#D2&$Y%MCVsA0{qZLgytqi2jGt_^xuu*fXFoa>&jr_v*Z{{BjGCUxf zXFGEv_h|5X&hBW=RmAWBYc{}|9fGxl%lvM-m?uN2mLe`RiLuGTppFBmOR}WrWVCQe z1Y8P6{7M6F)532-cADib;Am(jyiua~^ifC^JF!JCTv!nfr6_x6IUFA>hhs97kbgHM zk4Va&xrdr(F7MMjJE6)xZ!U#7ATizDR;>pv8739yh_46e8#LPoTm*BuVZhn>I5_z0 zmWQTjmmK!1%g*kc$DU?e;AkXdE3)t=IQ-a!S_lvm#i~A@dD~mdXs*__ z1p(mp!C%Apr0n~{o4o7|#;mQmkgIpgTVlLF#IBex+@YDvtf8IA;Iz(ew@Oc&Z|CTt zj$d905=8Nxnf;BLoBKmi{Kp%6w>xL{O7(w&xn9v7yirje?Xt0fp^@n_o9231D8lVr z!FNOGY;~`3cC&%@`1^>d{=@2B$~KzYMd(oS;cmjc*iHyNLm#@Ig0R$icrt$&P3A8v zuaRf&Qtndf=w;p7p%3e{X5%*fiPe)^l4O*&M3t0N{om|D)q+`DXLya!+3%4;x4vz; z97)l+rE;W&5y${etVi&C{YuXvJzP4nJ)Vhy6cIB-ebO5(YMky~%8&uwC3AnMU?W6X zKhBUeoRmF~A#et-f&BPx*&;d*0mb6&n0vMxH{7h4b>x!FEsy*-6pl}%g3Z(mztqhx@1IgQo)zrBN#PJfF)8hy z;yIE4cd}=P2z4cN7A8woY6;Y9eFoS%l~)aH;Px8*Fk_Gvl`G4YIx@|P6V{tJoe0I% zkBh4zMmhz}{dZ{Apr_jj^J(K+mpo1DmCk|w2digdLmAR7Is@6m!S*9lJ*~uNT|Wk1 zQg8;{f76}E$IHqi6VW=jUFN|hEf3E2m8T$Uphnvj)Y(}?UAzw``&V!pJV4a^Lu4)C zp6ZA@s4w~+nn!c!>jb_22Ofp({*#{l!w&L;$E(P9 z%fEi`SMulNiQZ&pyf=k0aEcdCaAx5V`8YmP)$?A_ynEW2?b5ZVnHVPlL0ou5(Vv}& zm@A~$xsse2DYwElbb0dCwasH`b41gf9#7N6tgbf_^ z*3HS71*gFk=OkST(93Y?omnm!T+#M0zd}qMn{({To9$n8&Dmk!# zx5FfDBbo6Vw~86}rr|8*VxJFyGkG|2#^5zTib^FU9XO#B6=rnj2X$n)Yu1_UjH16 z_e|kLqBVf8V4Z5=+<^tWvBVchxe$f#cH-d!t%W+iwbHAcjM%5wm3Wo<5=+gra#E=~ zFo)8#daXAc_Jt0ne_slIWdwaZmRlMuUKSC(-b{7Pg;TY)@H*^S#Xa?{%6Uq`ZLluD zDeyop9MKz!5PSiUp^ELeP_jW2 zYh{xs*RFy#@h+k_JvkW{1b!Utm3ibox%gJ2#LtpEQ9b_YP$D7IALQ>IH_B2ReEg4I zij2%d^yY66ofL)WaM_0mhCP0tmX=j;?Jjtv3{Mh7f=PNRO`Yaf@8J0CcOM*qP zTr9j~WnV&c`uot%@=t!e5Vi##Gj{TiPRz?vO#HQzcDz`*>qF@2 zsFby~U|w1ge=XOhVs*5OXh4dies=gh}+nX4z|u} z?;v-upli2elRK@=Y>TC}r2{5`BNtU#$#S;KZiO!DYHcFBur>_G&t+NI6mdd+Y&5M9 z9bntqtW7YOY_nS(B-=?^tZl5_A(|&DX1*ZFM#&wSB>!YIEgVlOK9D~<$mQg0%g)&f zezvwa?5#~!$-&}I(r)c)wTUjiAOq)HtR(io#VV;|)0W0#lb^?jToPrHW}CI8%i7Wj zP5~%bv*I~$mawUAwL5H9@JaG{847H*&0=kF*lIy+XDzH`Am(@Rx}U`#z-zHJ4(l<5 za*W380{D7@g(0Iz09FJvwED7}D{;g6EZLN5t!eFaShM+cr*z6C$ZGiSom!WQrzmZ0 zZnn16;1IO5I_y>wB4Tf?sb4|_R^T0{HkTtyD(i4q?RJ}(0TS|Tr=t}ZFleQSl%i@q zhU3|REiHbg$6r5{$YC=?NWel-1)>abAlo}_c%p1_uhm{-Th@`-$H*p@thHO)JHcL9 zQjCJ5)gh`yz;qjca0b2v^h2OtI>(rsw>5uTL1A%8>CRnZ>S11j#AMAi7Hcgi!gn0$ zhx_B_fBw;`uskTzyga_`y||a@C@5BK5tcpo!#q0f$#XpXK*vlVdR_N2pN=+(eav6_ OL7(q=@1`6+^!^`OZDSw+ delta 2808 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≷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 G!v6q7h+hl< diff --git a/Sources/build-cg/src/FlySim.elf b/Sources/build-cg/src/FlySim.elf index 4e0f6aa386331e7135fb184b6efa4526201a643f..c29dd411a0c26da2954d23a494c3528c048b7aa5 100755 GIT binary patch delta 9926 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

UA}M?6x^!}M`+q`Zk50ALp>YE}K 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 delta 6786 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 diff --git a/Sources/build-cg/src/main.o b/Sources/build-cg/src/main.o index 91b02d48fc688ce1470c59971dc39473387e51c8..e9cf2cfb0011add54e4338731ff9a1f42b62d6c1 100644 GIT binary patch literal 3772 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 #include #include +#include #define C_RED 0xf800 #define C_GREEN 0x07e0 #define C_BLUE 0x001f /* -Éviter de donner des noms non standards à des fonctions standard + Ameliorations : -Quand tu prends des pointeurs en paramètres, si tu n'as pas l'intention de modifier les données alors mets const + - Quand tu prends des pointeurs en paramètres, si tu n'as pas l'intention de modifier les données alors mets const -Quand tu déclares une chaîne de caractères, char str[] = "xyz" fait une copie, si tu ne veux pas modifier la chaîne alors const char *str = "xyz" suffit (mineur) - -fill(msg_1, aipt_depart); add(msg_1, "tour, "); add(msg_1, immat); add(msg_1, "bonjour."); -sprintf(msg_1, "%s tour, %s bonjour.", aipt_depart, immat) */ //communication : gère les communications entre la tour et l'avion void communication (int *com_id, int *id); //display_comm : affiche les communications -void display_comm (char *msg_1, char *msg_2, char *msg_3, int *joueur); - -//add : concatène deux chaines de caractère, str >> dest -char *add (char *dest, const char *src); - -//fill : initialise une chaine de caractère en écrasant le texte contenu dans dest -char *fill (char *dest, const char *src); +void display_comm (char *msg_1,char *msg_2,char *msg_3, const int *joueur); //fill_char : initialise une chaine avec un nombre de caractères répétés 'n' fois char *fill_char(char *dest, const char *src, unsigned int debut, unsigned int fin); @@ -61,7 +52,9 @@ int main (void) void communication(int *com_id, int *id) { //faire un choix de la langue Français / Anglais - char avion[] = "Cessna 172 ", immat[] = "F-GUXF ", immat_courte[] = "F-XF ", aipt_depart[] = "Caen ", aipt_arrivee[] = "Le Havre ", freq_cont[] = "117.15 ", freq_arrivee[] = "122.80 ", passagers[] = "4 personnes a bord, ", msg_1[70], msg_2[70], msg_3[70]; + const char *avion = "Cessna 172", *immat = "F-GUXF", *immat_courte = "F-XF", *aipt_depart = "Caen", *aipt_arrivee = "Le Havre", *freq_cont = "117.15", *freq_arrivee = "122.80", *passagers = "4";//données de l'avion et de son trajet + + char msg_1[70], msg_2[70], msg_3[70]; fill_char(msg_1, " ", 0, 70); fill_char(msg_2, " ", 0, 70); @@ -72,197 +65,146 @@ void communication(int *com_id, int *id) case 1: *id = 1; - fill(msg_1, aipt_depart); - add(msg_1, "tour, "); - add(msg_1, immat); - add(msg_1, "bonjour."); + sprintf(msg_1, "%s tour, %s. Bonjour.", aipt_depart, immat); break; case 2: *id = 0; - fill(msg_1, immat); - add(msg_1, aipt_depart); - add(msg_1, "bonjour."); + sprintf(msg_1, "%s, %s bonjour.", immat, aipt_depart); break; case 3: *id = 1; - fill(msg_1, immat); - add(msg_1, avion); - add(msg_1, passagers); - add(msg_1, "demandons"); - fill(msg_2, "vol vers "); - add(msg_2, aipt_arrivee); + sprintf(msg_1, "%s %s. %s passagers a bord. Demandons", immat, avion, passagers); + sprintf(msg_2, "vol vers %s.", aipt_arrivee); break; case 4: *id = 0; - fill(msg_1, immat_courte); - add(msg_1, "vol autorise. Rappelez pret au depart."); + sprintf(msg_1, "%s vol autorise. Rappelez pret au depart.", immat_courte); break; case 5: *id = 1; - fill(msg_1, "Rappelons pret au depart, "); - add(msg_1, immat_courte); + sprintf(msg_1, "Rappelons pret au depart, %s.", immat_courte); break; case 6: *id = 1; - fill(msg_1, immat_courte); - add(msg_1, "pret au depart."); + sprintf(msg_1, "%s, pret au depart.", immat_courte); break; case 7: *id = 0; - fill(msg_1, immat_courte); - add(msg_1, "autorise decollage."); + sprintf(msg_1, "%s, autorise decollage.", immat_courte); break; case 8: *id = 1; - fill(msg_1, "Autorise decollage, "); - add(msg_1, immat_courte); + sprintf(msg_1, "Autorise decollage, %s.", immat_courte); break; case 9: *id = 0; - fill(msg_1, immat_courte); - add(msg_1, "Vous quittez mon espace. Services radar"); - fill(msg_2, "et radio termines. Informations de vol avec"); - fill(msg_3, "Controle, "); - add(msg_3, freq_cont); - add(msg_3, "au revoir."); + sprintf(msg_1, "%s, Vous quittez mon espace. Services radar", immat_courte); + sprintf(msg_2, "et radio termines. Informations de vol avec"); + sprintf(msg_3, "Controle, %s. Au revoir.", freq_cont); break; case 10: *id = 1; - fill(msg_1, "Controle "); - add(msg_1, freq_cont); - add(msg_1, "bonne journee. "); - add(msg_1, immat_courte); + sprintf(msg_1, "Controle, %s. Bonne journee, %s.", freq_cont, immat_courte); break; case 11: *id = 1; - fill(msg_1, "Controle "); - add(msg_1, immat); - add(msg_1, "bonjour."); + sprintf(msg_1, "Controle %s. Bonjour.", immat); break; case 12: *id = 0; - fill(msg_1, immat_courte); - add(msg_1, "Controle, bienvenu."); + sprintf(msg_1, "%s Controle, bienvenu.", immat_courte); break; case 13: *id = 1; - fill(msg_1, immat); - add(msg_1, avion); - add(msg_1, passagers); - add(msg_1, "sortie de "); - fill(msg_2, aipt_depart); - add(msg_2, "vers "); - add(msg_2, aipt_arrivee); + sprintf(msg_1, "%s %s. %s passagers a bord. Sortie de", immat, avion, passagers); + sprintf(msg_2, "%s vers %s.", aipt_depart, aipt_arrivee); break; case 14: *id = 0; - fill(msg_1, immat_courte); - add(msg_1, "identifie radar."); + sprintf(msg_1, "%s, identifie radar.", immat_courte); break; case 15: *id = 0; - fill(msg_1, immat_courte); - add(msg_1, "Vous quittez mon espace, contactez "); - add(msg_1, aipt_arrivee); - fill(msg_2, freq_arrivee); - add(msg_2, "bon vol."); + sprintf(msg_1, "%s, vous quittez mon espace. Contactez", immat_courte); + sprintf(msg_2, "%s, %s. Bon vol.", aipt_arrivee, freq_arrivee); break; case 16: *id = 1; - fill(msg_1, aipt_arrivee); - add(msg_1, freq_arrivee); - add(msg_1, "au revoir. "); - add(msg_1, immat_courte); + sprintf(msg_1, "%s %s. Au revoir, %s.", aipt_arrivee, freq_arrivee, immat_courte); break; case 17: *id = 1; - fill(msg_1, aipt_arrivee); - add(msg_1, "tour, "); - add(msg_1, immat); - add(msg_1, "bonjour."); + sprintf(msg_1, "%s tour, %s. Bonjour.", aipt_arrivee, immat); break; case 18: *id = 0; - fill(msg_1, immat_courte); - add(msg_1, aipt_arrivee); - add(msg_1, "bonjour."); + sprintf(msg_1, "%s, %s, a l'ecoute.", immat_courte, aipt_arrivee); break; case 19: *id = 1; - fill(msg_1, immat); - add(msg_1, avion); - add(msg_1, passagers); - add(msg_1, "demandons"); - fill(msg_2, "consignes pour atterrissage sur "); - add(msg_2, aipt_arrivee); + sprintf(msg_1, "%s %s. %s passagers a bord. Demandons", immat, avion, passagers); + sprintf(msg_2, "consignes pour atterrissage sur %s.", aipt_arrivee); break; case 20: *id = 0; - fill(msg_1, immat_courte); - add(msg_1, "Commencez votre approche"); + sprintf(msg_1, "%s, commencez votre approche.", immat_courte); break; case 21: *id = 1; - fill(msg_1, "Commencons notre approche "); - add(msg_1, immat_courte); + sprintf(msg_1, "Commencons notre approche, %s.", immat_courte); break; case 22: *id = 1; - fill(msg_1, immat_courte); - add(msg_1, "en finale, demandons autorisation"); - fill(msg_2, "d'atterrissage"); + sprintf(msg_1, "%s en finale, demandons autorisation", immat_courte); + sprintf(msg_2, "d'atterrissage."); break; case 23: *id = 0; - fill(msg_1, immat_courte); - add(msg_1, "autorise aterrissage. Rappelez au sol."); + sprintf(msg_1, "%s, autorise atterrissage. Rappelez au sol.", immat_courte); break; case 24: *id = 1; - fill(msg_1, "Autorise aterrissage, rappelons au sol, "); - add(msg_1, immat_courte); + sprintf(msg_1, "Autorise atterrissage, rappelons au sol, %s.", immat_courte); break; case 25: *id = 1; - - fill(msg_1, immat_courte); - add(msg_1, "au sol, pour quitter, merci."); + sprintf(msg_1, "%s, au sol, pour quitter. Merci.", immat_courte); break; case 26: *id = 0; - fill(msg_1, immat_courte); - add(msg_1, "quittez la frequence, a bientot."); + sprintf(msg_1, "%s, quittez la frequence a bientot.", immat_courte); + break; } display_comm(msg_1, msg_2, msg_3, &(*id)); *com_id += 1; } -void display_comm (char *msg_1, char *msg_2, char *msg_3, int *joueur) +void display_comm (char *msg_1,char *msg_2, char *msg_3, const int *joueur) { fill_char(msg_1, " ", strlen(msg_1), 70); fill_char(msg_2, " ", strlen(msg_2), 70); @@ -281,23 +223,6 @@ void display_comm (char *msg_1, char *msg_2, char *msg_3, int *joueur) } -char *add(char *dest, const char *src) -{ - unsigned long fin_dest = strlen(dest); - unsigned int i; - for (i = 0 ; i <= strlen(src) ; i++) dest[fin_dest + i] = src[i]; - return dest; -} - - -char *fill(char *dest, const char *src) -{ - unsigned int i; - for (i = 0 ; i <= strlen(src) ; i++) dest[i] = src[i]; - return dest; -} - - char *fill_char(char *dest, const char *src, unsigned int debut, unsigned int fin) { unsigned int i;