From e526e4c02a0b376acda9a556d47b54e603e86948 Mon Sep 17 00:00:00 2001 From: Shadow Date: Fri, 19 Jul 2019 19:51:02 +0200 Subject: [PATCH] Mise en place des communications et compilation d'un *.g3a fonctionnel --- Sources/FlySim.g3a | Bin 38940 -> 40828 bytes Sources/build-cg/map | 502 ++++++++++++++++---------------- Sources/build-cg/src/FlySim.bin | Bin 10264 -> 12152 bytes Sources/build-cg/src/FlySim.elf | Bin 17276 -> 19496 bytes Sources/build-cg/src/main.o | Bin 1220 -> 3988 bytes Sources/src/main.c | 282 +++++++++++++++++- 6 files changed, 521 insertions(+), 263 deletions(-) diff --git a/Sources/FlySim.g3a b/Sources/FlySim.g3a index a60a657fabc893a3bcb129179e6a3b3617d12df3..f982f5c28de2bb7fa8080bf70106fdd3716311a2 100644 GIT binary patch delta 5013 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 TmtTOhx5nRm@}GF{pSJ%6ppJ1d delta 3127 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 HHH!Q%qyYex delta 7278 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 as}||8DRIJ`wbq0p>_^0dJA6?E$o~V5NHin> diff --git a/Sources/build-cg/src/main.o b/Sources/build-cg/src/main.o index 35aa8d49f2853072c8b90e4172fea2e6be943d66..20e955c7ad032cb1576bd9e690c48b63d2d9a750 100644 GIT binary patch literal 3988 zcmb7HYiu0V6+W}x(6!f2Z8wO}f-)H7I;q+98WXG(AxDP9h6tlLR1uA|p53{QC)u6Z z%+6X)TGdgEB2Y>j$tbN__T;CEcI=SS(Yi>Rnx4} zzj1Il{oYX9V6rgN+c=oiXS8=SZ+5l5^tF*QL+yp-gUjK1?P5oB^&b<8?)4A;n5P#hS2yyF?pKc9H!?lczUpISN_l%isotpHzTG|~>2YTVlFrqoJKR4EB=s8R5A_-(iKPbj zeGhdkCEWKsv=Qi{ht#Dz-FH3Icj=u)8mmq0?Py&Z`77zQzNE9yy!`Rq+9!urGVL#Q zk50c|_t9IKdz5<@exuxv4C`qt9ifx-4qc|Jbdzq;zm;vuZe>)lmDiNFl$)_wY(q?q zJso>4HWGV2b~1J<_Dg+A)SgUM67H{2$0_Cpla*%oSIiloj82Q0T|nC9k?BLqgRPVM zCP#+a&E?{7N%Jqc|j>U2N^#1l^O2$B2fGYg1i%M zj-{ej{Y9lC@RO~+fY^r@2Bqk~&sM>jjxg?^#;UugYWX{3UwHBIP~B&$XIG`}Rxg7y zVcoFfLzNEpxRCzJXgj^Q!hSqf-5TZjXtfvh`EGR^qTC|I*z2#*r*iX5^nkY8!-ygASz}G>agKiPk#X*fA@454BqTd7%%T-V( zXb-3aItqFj#N#|@-oM5a_)#{39su=#20&P&>;qw)f;Gx%5Y{M{KsONs_K0G|v>Xums9=8hWxUkDG@vv5LEZZoHl)76hl|(@tQA@UP zRIQ@wqNLdl?0gN@uTk+nYmGyHSe>^D1#Q1b(e_}ERT-}&`kqxOtA{Fv<6zgKWvZfF z(((vpSlHu6UX)c^(>0qA4uD~)jXewqUIPJl`d3HOB)w?>bFeCwhDrG zKn}JTw+yaADCdn)8&jxU9#deqNY|<63}KE7vy!5+Wjlso*QiraFGClmV~j%V#pTuZ zzvR%V<`IaN=gfFN4$!k-jY%b#l#Tt!M=c>1RYM(Y^rDQSsbvTdDq<@Zg_(z&am%rV ziYD1seoRO@E`fQQ5-WwNjvA)Mg^1dZrh3ix$_5Aex8*IlUjA7?BvByJxj^V;FN>(3 zl3gci!smyB@eTbRhuF)|?={Y6QP_FIt4G-Wf~Jnz;!uTi?Nl|d6OQG0HvOVpHZ?W# zNViHm9^Cot-W@#iFY2QqQ_Q=BI-rfCK){*IBdN^8DrLI6Q@vd(^{6FukeiO!)SPAO zer)(2Q24E#eq*R@^468sG~Vxci7qFi5IkHASbsJyQ3^SFdtS!pI z$>#AWQC80v1n!iqZj?&}?Qke{#DqgxP1h+~cI<*MDLZNu3gqc4rjhp_nrt>(w8o2~ zI6Ro?&KfWQboUY6|g} zt2o|=iU#sHYS9yNDV>{EQ^uBjLRg#=9k2J0fB9Ad(}_2qVtc&_8;w<*el$3l`EGiWn0X!c_!5ZHZ+0+p9+-{rT8Jk zTax~dp~9Bq3Gb&K+z+>;_3;3I3p3+BpKrM6fA@IbYP_Cxji7cA^TGYNt`k@ue(wHv zSptgxWyg0Muj%%ku)n&^KK6cjU)Dbn%t0Or^nwbYaIhVZJ`iJ`F`7E?(*@%Hsk}DK zgYQQ6%Q}q2Mf~8}iw5gLibYaN;EX9F;2S`kANy+tvHu`fAZqBv&k07sU|&31K$2Y( L=Yg{n4bSdBS*d^> literal 1220 zcmb7E&u9W}j0ql$ z@!+B1;9uaM;2+W^rt#=O(s=aJlL^l3?t_KI7$=!G-}mNw^XBco-Ny22T<{3cF#)b1 zc1;WnA@@VrQcQsegK@PktrfMZDw}1U0jw*ADdiQ(RBEPzJbF8JXE~lo-d(x3dOwwZ z@bJ;v`o`nUttU?bEooeu zkfzz<0&W|8AN=&Qy&p(Vd<{g!#_wIJhj4JVHPXRnS{FOm-?~Z| z6(g;sV3Y9va8v}}-l+(V--U)ZJy|>gv2X-F>x9s5+tC_Fag@-P(6`WSOT=Oe(o`a~ zaao#Yb1cN?dt>JrdZGQxof_zQz5vKQeR-Vf8WL}pS^8sr`~>oo&fM;40Ll+@4IKh) z%nkq!ztG1gd$=YSODqQ&ijc|YR7KV?(mTdbt>k4>fy}mI?kIJ8VFAF$&s+f*X+|lv(`8VAq)Y1FXj^H4|Gpx?}!t5f1i=>qI2W-X%Qy~N9=?riBUzTUg!={j=ujCI@JxKqY1PxUbBu- tj=SqF3si3poxUxqN%ck@&d-X}6Tkug937)tWPWtF?hEowN;qce{s1u&jzItb diff --git a/Sources/src/main.c b/Sources/src/main.c index 75c2138..889e282 100755 --- a/Sources/src/main.c +++ b/Sources/src/main.c @@ -1,22 +1,274 @@ -/* - Nom du projet : Fly Simulator - Version : - dev - - Dernière modification le : 16 juillet 2019 - */ +//----- +// Nom du projet : Fly Simulator +// Version : - dev - +// Dernière modification le : 19 juillet 2019 +//----- #include #include +#include -int main(void) -{ - dclear(C_WHITE); - dtext(1, 0, "Fly Simulator.", C_BLACK, C_NONE); - dtext(1, 15, "Test de texte.", C_BLACK, C_NONE); - dtext(1, 30, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", C_BLACK, C_NONE); - dtext(1, 45, "abcdefghijklmnopqrstuvwxyz", C_BLACK, C_NONE); - dtext(1, 60, "0123456789 ? ! \" ,.;:", C_BLACK, C_NONE); - dupdate(); +#define C_RED 0xf800 +#define C_GREEN 0x07e0 +#define C_BLUE 0x001f - getkey(); + +//communication : gère les communications entre la tour et l'avion +int communication (int *com_id, int *ligne, int id); + +//display_comm : affiche les communications +void display_comm (char *msg, int *ligne, int joueur); + +//reset_comm : vide l'historique des communications +void reset_comm (int *ligne); + +//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); + +int main (void) +{ + int com_id = 1, ligne = 0, id = 0; + //int key = 0; + + dclear(C_WHITE); + dupdate(); + + while(com_id < 26) + { + id = communication(&com_id, &ligne, id); + getkey(); + dupdate(); + + } + getkey(); return 1; } + +int communication(int *com_id, int *ligne, 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[100] = ""; + + switch (*com_id) + { + case 1: + id = 1; + fill(msg, aipt_depart); + add(msg, "tour, "); + add(msg, immat); + add(msg, "bonjour."); + break; + case 2: + id = 0; + fill(msg, immat); + add(msg, aipt_depart); + add(msg, "bonjour."); + break; + case 3: + id = 1; + fill(msg, immat); + add(msg, avion); + add(msg, passagers); + add(msg, "demandons"); + display_comm(msg, &(*ligne), id); + fill(msg, "vol vers "); + add(msg, aipt_arrivee); + break; + case 4: + id = 0; + fill(msg, immat_courte); + add(msg, "vol autorise. Rappelez pret au depart"); + break; + case 5: + id = 1; + fill(msg, "Rappelons pret au depart, "); + add(msg, immat_courte); + break; + case 6: + id = 1; + fill(msg, immat_courte); + add(msg, "pret au depart"); + break; + case 7: + id = 0; + fill(msg, immat_courte); + add(msg, "autorise decollage."); + break; + case 8: + id = 1; + fill(msg, "Autorise decollage, "); + add(msg, immat_courte); + break; + case 9: + id = 0; + reset_comm (&(*ligne)); + fill(msg, immat_courte); + add(msg, "Vous quittez mon espace. Services radar"); + display_comm(msg, &(*ligne), id); + fill(msg, "et radio termines. Informations de vol avec"); + display_comm(msg, &(*ligne), id); + fill(msg, "Controle, "); + add(msg, freq_cont); + add(msg, "au revoir."); + break; + case 10: + id = 1; + fill(msg, "Controle "); + add(msg, freq_cont); + add(msg, "bonne journee. "); + add(msg, immat_courte); + break; + case 11: + id = 1; + fill(msg, "Controle "); + add(msg, immat); + add(msg, "bonjour."); + break; + case 12: + id = 0; + fill(msg, immat_courte); + add(msg, "Controle, bienvenu."); + break; + case 13: + id = 1; + fill(msg, immat); + add(msg, avion); + add(msg, passagers); + add(msg, "sortie de "); + display_comm(msg, &(*ligne), id); + add(msg, aipt_depart); + add(msg, "vers "); + add(msg, aipt_arrivee); + break; + case 14: + id = 0; + fill(msg, immat_courte); + add(msg, "identifie radar."); + break; + case 15: + id = 0; + reset_comm(&(*ligne)); + fill(msg, immat_courte); + add(msg, "Vous quittez mon espace, contactez "); + add(msg, aipt_arrivee); + display_comm(msg, &(*ligne), id); + fill(msg, freq_arrivee); + add(msg, "bon vol."); + break; + case 16: + id = 1; + fill(msg, aipt_arrivee); + add(msg, freq_arrivee); + add(msg, "au revoir. "); + add(msg, immat_courte); + break; + case 17: + id = 1; + fill(msg, aipt_arrivee); + add(msg, "tour, "); + add(msg, immat); + add(msg, "bonjour."); + break; + case 18: + id = 0; + fill(msg, immat_courte); + add(msg, aipt_arrivee); + add(msg, "bonjour."); + break; + case 19: + id = 1; + fill(msg, immat); + add(msg, avion); + add(msg, passagers); + add(msg, "demandons"); + display_comm(msg, &(*ligne), id); + fill(msg, "consignes pour atterrissage sur "); + add(msg, aipt_arrivee); + break; + case 20: + id = 0; + fill(msg, immat_courte); + add(msg, "Commencez votre approche"); + break; + case 21: + id = 1; + fill(msg, "Commencons notre approche "); + add(msg, immat_courte); + break; + case 22: + id = 1; + reset_comm(&(*ligne)); + fill(msg, immat_courte); + add(msg, "en finale, demandons autorisation"); + display_comm(msg, &(*ligne), id); + fill(msg, "d'atterrissage"); + break; + case 23: + id = 0; + fill(msg, immat_courte); + add(msg, "autorise aterrissage. Rappelez au sol."); + break; + case 24: + id = 1; + fill(msg, "Autorise aterrissage, rappelons au sol, "); + add(msg, immat_courte); + break; + case 25: + id = 1; + fill(msg, immat_courte); + add(msg, "au sol, pour quitter, merci."); + break; + case 26: + id = 0; + fill(msg, immat_courte); + add(msg, "quittez la frequence, a bientot."); + + + + + + } + + display_comm(msg, &(*ligne), id); + *com_id += 1; + return id; +} + +void display_comm (char *msg, int *ligne, int joueur) +{ + if (*ligne >= 5) reset_comm(&(*ligne)); + + if (joueur)dtext(1, 1 + (*ligne * 12),msg, C_BLUE, C_NONE); + else dtext(1, 1 + (*ligne * 12),msg, C_BLACK, C_NONE); + + *ligne += 1; + msg[0] = '\0'; +} + +void reset_comm (int *ligne) +{ + *ligne = 0; + dclear(C_WHITE); +} + +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]; + } + dest[strlen(dest) + 1] = '\0'; + return dest; +}