From 0bd61512f5ed00cc6298322c177321ecd2df03c2 Mon Sep 17 00:00:00 2001 From: vautrin33u <vautrin33u@etu.univ-lorraine.fr> Date: Mon, 30 Nov 2020 21:17:47 +0100 Subject: [PATCH] =?UTF-8?q?Premiere=20tentative=20de=20mise=20en=20place?= =?UTF-8?q?=20de=20r=C3=A8gles=20avec=20ingr=C3=A9dients?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ressources/ingredient.bmp | Bin 0 -> 11354 bytes Ressources/ingredient.kra | Bin 0 -> 48747 bytes Ressources/save.txt | 100 +++++++++++++++++------------------ constantes.h | 5 +- graphisme.c | 34 ++++++++---- graphisme.h | 13 +++-- logique.c | 108 +++++++++++++++++++------------------- logique.h | 8 +++ main.c | 2 +- 9 files changed, 150 insertions(+), 120 deletions(-) create mode 100644 Ressources/ingredient.bmp create mode 100644 Ressources/ingredient.kra diff --git a/Ressources/ingredient.bmp b/Ressources/ingredient.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d9950709aa2e328e59936530ce2f7327ba118620 GIT binary patch literal 11354 zcmZ?rjnZKN12YB&1`P%VhG`5843Z2C42%pCU~v^428JVi5DXSzU|{%<8!#~Z$3(c5 z<C9@n@*fl7(|}u!LEHfo;Z}}MM(8~!Cc>uyx19Zt|Ck83a(ps;o(z}>j|LoZh#7Tg zB6y5MlfsNTG!ZoQc(|BRhbDqYFPao))S-!>smH^`j5;(CJbKZjFryAl1Wi4JixG!t zafP1?F#{Kg7FYPWxD0`aqs0||E<_715-qOqb8#605l4$F{9K3@TqIgt;pd_mf*ObT zV+^Y-nt5<8{usk53)hRrz#n5+WzkH4bMeO*R#~`SGzR_{!zznr0-TFK#<0r5_5S}4 zs_$T2tWiXaAj|*+jWvph5kwdPV_}UVVgz9ZAZV;nM2sN92p9`%6cHl`GXOzjjUr+M z;YPsnAu(}<M-ALOP_n?*d?6+RA!<;J!q$8tCITU9kc}cHuJEWqHj0?I!lMS+C}QFY zj~a+kqj89>X^I({kkEpVc;bf`DTpBu5>NaPBLy)89EW%^81Yh2^C-)N$XOARmnbA5 zuELBHGDILo5fe)U)j*6QCYA`Q0Tq0p{vq)Zg-0dCU64qikc1jVSwRYke27tG#2BU) zh*1RNhZqGAqX@<iF$%zOh$mV|mZC-`gvLKLA`lXdn6W{&2r=<Pq#9!4he$P`(Hc<W zl;r5bHiQEWeyYUeXdGf2t-%_rqj5-Fn+B3~iOgffD8m{X<Oz<(;b<J9mcvvjMInZa zmZhU*DPnE|QVddsB&LugQVn^<CRSaeW$ADzOTirs)FKgUo0E_rq|ZZ@rYY1YY80ms zqo|SzAx06I&G0LO7=<-cktzs@KJdUd<$Vi?yGG*>f9yeIAz?*obYWEwi$e%aNi;$n z1tBSnMu;I064FU0n}iqwAt}s?5JMm&Bp%2nA%;LmtkFWeAjA;xc<E>y5{zL;XhBG_ zV-KPcVhDsJKDw}~gct&gLrS6%ViGb*c2-0-1j43DCWIJ8FrsiNfM`c1A+bRQiEIdj zjWu$J5rk-mL>!z=R>g><8-+<mG@|H7;*b%INV-v&xMB&9IEsEG4pkx$VjeLuhNcFh z5key6L%0C(6(d9oE|R2Z#AOIXoTO-kXu(C|i7rejT!uizNs2~@7F;A+6yfKh8G;dq z5P5>p2vJ51NiZgfF$AK9U`#@k5kq1|7n%q$hCtL1j7f+xVo3Z^$L9%}D8w`eM;t;F vVvR|N6saWEm?YH@h<dCs36Ua|M2j~FmsCR_>aoToM2b`rYfR!Xgn<D7A>|bM literal 0 HcmV?d00001 diff --git a/Ressources/ingredient.kra b/Ressources/ingredient.kra new file mode 100644 index 0000000000000000000000000000000000000000..66238713d90e1085378f5e43b5f200196d297d8f GIT binary patch literal 48747 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 AGynhq literal 0 HcmV?d00001 diff --git a/Ressources/save.txt b/Ressources/save.txt index 3063ad7..e90567e 100644 --- a/Ressources/save.txt +++ b/Ressources/save.txt @@ -198,56 +198,56 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX diff --git a/constantes.h b/constantes.h index 996944c..a3c30c0 100644 --- a/constantes.h +++ b/constantes.h @@ -9,6 +9,9 @@ #ifndef CONSTANTES_H #define CONSTANTES_H +//enum état pour décrire la direction du sprite +enum etat {BAS, HAUT, DROITE, GAUCHE, MOBILE, FIXE}; + /** * \brief Largeur de l'écran */ @@ -32,7 +35,7 @@ /** * \brief Nombre d'ingrédients * */ -#define NB_INGREDIENT 5 +#define NB_INGREDIENT 6 /** * \brief taille joueur diff --git a/graphisme.c b/graphisme.c index 32485c2..231a371 100644 --- a/graphisme.c +++ b/graphisme.c @@ -34,6 +34,9 @@ void clean_textures(textures_t *textures){ if (textures->poubelle != NULL){ SDL_DestroyTexture(textures->poubelle); } + if (textures->ingredient != NULL){ + SDL_DestroyTexture(textures->ingredient); + } } void nettoyage_graphisme (SDL_Renderer *renderer, textures_t *textures, SDL_Window *fenetre){ @@ -43,6 +46,7 @@ void nettoyage_graphisme (SDL_Renderer *renderer, textures_t *textures, SDL_Wind } void init_textures (SDL_Renderer *renderer, textures_t *textures, TTF_Font *font){ + Uint8 r = 255, g = 255, b = 255; textures->fond = charger_image("Ressources/fond1.bmp", renderer); textures->joueur = charger_image ("Ressources/joueur.bmp", renderer); textures->comptoire = charger_image ("Ressources/compt0.bmp", renderer); @@ -51,6 +55,7 @@ void init_textures (SDL_Renderer *renderer, textures_t *textures, TTF_Font *font textures->four[0] = charger_image ("Ressources/four0.bmp", renderer); textures->poubelle = charger_image ("Ressources/trash0.bmp", renderer); textures->lavabo[0] = charger_image ("Ressources/lavabo0.bmp", renderer); + textures->ingredient = charger_image_transparente("Ressources/ingredient.bmp", renderer, r, g, b); // SDL_Color color = { 255, 0, 255 }; //... = charger_texte ("Score : ", renderer, font, color); @@ -87,6 +92,15 @@ void apply_graphics (SDL_Renderer *renderer, textures_t *textures, world_t *worl } } } + SDL_Rect temp; + if (textures->ingredient !=NULL){ + for (int i=0; i<NB_INGREDIENT; i++){ + if (est_visible(&world->tomates[i])){ + temp = create_SDL_rect_from_texture(textures->ingredient, 0, 0, PLAT_SIZE, PLAT_SIZE); + SDL_RenderCopy(renderer, textures->ingredient, &temp, &world->tomates[i].rect); + } + } + } } @@ -98,13 +112,17 @@ void colorier_rect (SDL_Renderer *renderer, SDL_Rect rectangle, SDL_Color couleu } } } -/* -SDL_Rect create_SDL_rect_from_texture (SDL_Texture * texture){ + +SDL_Rect create_SDL_rect_from_texture (SDL_Texture * texture, int x, int y, int h, int w){ //Permet de créer un SDL_rect retournant la texture de la taille de la texture (SOURCE) - int w; - int h; - SDL_QueryTexture(texture, NULL, NULL, &w, &h); - return create_SDL_rect (0, 0, w, h); + int largeur; + int hauteur; + SDL_QueryTexture(texture, NULL, NULL, &largeur, &hauteur); + if (h>hauteur || w>largeur || h<=0 || w<=0){ + SDL_Rect temp = {0,0,0,0}; + return temp; + } + return create_SDL_rect (x, y, w, h); } SDL_Rect create_SDL_rect (int x, int y, int w, int h){ @@ -116,7 +134,7 @@ SDL_Rect create_SDL_rect (int x, int y, int w, int h){ rectangle.h = h; return rectangle; } -*/ + void update_graphics (SDL_Renderer *renderer, world_t *world, textures_t *textures){ @@ -126,8 +144,6 @@ void update_graphics (SDL_Renderer *renderer, world_t *world, textures_t *textur } - - SDL_Texture* charger_image (const char* nomfichier, SDL_Renderer* renderer){ //Charge une image et retourne la surface de texture associée SDL_Surface * image = SDL_LoadBMP(nomfichier); diff --git a/graphisme.h b/graphisme.h index bf6d8f9..a73f3a5 100644 --- a/graphisme.h +++ b/graphisme.h @@ -21,6 +21,7 @@ struct textures_s{ SDL_Texture* lavabo[1] ; /*< Tableau de texture du frigo */ SDL_Texture* poubelle ; /*< Texture de la poubelle */ SDL_Texture* frigo[1] ; /*< Tableau de texture du frigo */ + SDL_Texture* ingredient ; /*< textures des ingredients */ //TTF_Font* police; /*Texture de la police d'écriture*/ }; @@ -92,19 +93,23 @@ void apply_graphics (SDL_Renderer *renderer, textures_t *textures, world_t *worl SDL_Rect create_SDL_rect (int x, int y, int w, int h); /** - * @brief Créer un SDL_rect retournant la texture de la taille de la texture (SOURCE) + * @brief Créer un SDL_rect retournant un rectangle de la taille d'un sprite issue d'une image (SOURCE) * * @param texture - * @return const SDL_Rect* représentant l'image source tel quel + * @param x position abscisse du rectangle à représenter + * @param y position ordonné du rectangle à représenter + * @param h hauteur du rectangle à représenter + * @param w largeur du rectangle à représenter + * @return SDL_Rect représentant l'image source tel quel */ -SDL_Rect create_SDL_rect_from_texture (SDL_Texture * texture); - +SDL_Rect create_SDL_rect_from_texture (SDL_Texture * texture, int x, int y, int h, int w); /** * @brief Créer un SDL_rect selon les données d'un sprite (DEST) * * @param sprite * @return const SDL_Rect* */ + SDL_Rect create_SDL_rect_from_sprite (sprite_t * sprite); /** * @brief Colorie un rectangle d'une couleur donnée diff --git a/logique.c b/logique.c index b7ea917..c9a6c9c 100644 --- a/logique.c +++ b/logique.c @@ -17,7 +17,7 @@ void init_data(world_t * world){ //faux world->attente = 0; //Initialise le sprite du joueur en haut à gauche de l'écran, en état 0 - init_sprite(&world->joueur, 'J', 200, 200, SIZE_JOUEUR, SIZE_JOUEUR, 10, 0); + init_sprite(&world->joueur, 'J', 200, 200, SIZE_JOUEUR, SIZE_JOUEUR, 10, BAS); //Charge la carte world->map = init_map(); @@ -29,22 +29,34 @@ void init_data(world_t * world){ //faux build_sprite_unique(&world->envoi, 'e', ZONE_ENVOI_LARGEUR, ZONE_ENVOI_HAUTEUR, world->map); int n_sprite = 1; for (int k=0; k<NB_COMPT_1; k++){ - init_sprite(&world->comptoire[k], '0', 1, 1, 1, 1,0,0); + init_sprite(&world->comptoire[k], '0', 1, 1, 1, 1,0,BAS); set_invisible(&world->comptoire[k]); build_sprites_tab(&world->comptoire[k], 'P', BLOC_COMPT_SIZE, BLOC_COMPT_SIZE, &n_sprite, world->map); - print_sprite(&world->comptoire[k]); } - //build_sprites_tab(&world->comptoire, 'P', BLOC_COMPT_SIZE, BLOC_COMPT_SIZE, NB_COMPT_1, world->map); - - - /* - init_sprite(&world->ship, SCREEN_WIDTH/2, SCREEN_HEIGHT-SHIP_SIZE, SHIP_SIZE, SHIP_SIZE, MOVING_STEP); - init_enemies(world); - //init_sprite(&world->ennemy, SCREEN_WIDTH/2, SCREEN_HEIGHT-SCREEN_HEIGHT+SHIP_SIZE, SHIP_SIZE, SHIP_SIZE, ENNEMY_SPEED); - init_sprite(&world->missile, (SCREEN_WIDTH+ SHIP_SIZE)/2, SCREEN_HEIGHT-(SHIP_SIZE+MISSILE_SIZE), MISSILE_SIZE, MISSILE_SIZE, MISSILE_SPEED); - set_invisible(&world->missile); - */ - + SDL_Rect temp; + for (int i=0; i<10; i++){ + temp = get_rect(&world->frigo); // Récupère la position du frigo pour placer les ingrédients dedans + init_sprite(&world->tomates[i], 'r', temp.x, temp.y, PLAT_SIZE, PLAT_SIZE, 0, BAS); + //set_invisible(&world->tomates[i]); + + } +} + +void init_sprite(sprite_t *sprite, char nom, int x, int y, int w, int h, int v, int state){ + //La fonction initialise tous les composants d'un sprite + sprite->rect.x = x; + sprite->rect.y = y; + sprite->rect.w = w; + sprite->rect.h = h; + sprite->v = v; + sprite->etat = state; + sprite->is_visible = 1; + sprite->nom = nom; +} + +void print_sprite (sprite_t *sprite){ + // Fonction permettant d'afficher les données contenues dans un sprite + printf("nom : %c -- x= %d | y=%d | w= %d | h= %d | v= %d | visible : %d \n", sprite->nom, sprite->rect.x, sprite->rect.y, sprite->rect.w, sprite->rect.h, sprite->v, sprite->is_visible); } void build_sprite_unique (sprite_t *sprite, char nom, int largeur, int hauteur, char** map){ @@ -79,14 +91,13 @@ void build_sprite_unique (sprite_t *sprite, char nom, int largeur, int hauteur, //Gestion des positions possibles. if (comptX == largeur && comptY == hauteur){ - init_sprite(sprite, nom, x, y+1-hauteur, largeur, hauteur, 0, 0); + init_sprite(sprite, nom, x, y+1-hauteur, largeur, hauteur, 0, BAS); } if (comptX == hauteur && comptY == largeur){ - init_sprite(sprite, nom, x, y+1-largeur, hauteur, largeur, 0, 0); + init_sprite(sprite, nom, x, y+1-largeur, hauteur, largeur, 0, BAS); } //print_sprite(sprite); } -//TODO: nécessaire pour trouver tous les blocs de comptoires, trouver une solution. void build_sprites_tab (sprite_t *sprite, char nomSprite, int largeur, int hauteur, int* compt, char** map){ // On recherche les instances existantes et on y met les bonnes valeurs @@ -101,7 +112,7 @@ void build_sprites_tab (sprite_t *sprite, char nomSprite, int largeur, int haute } //Créer un sprite if (nb_sprite == *compt && map[i][j] == nomSprite){ - init_sprite(sprite, nomSprite, j, i, largeur, hauteur, 0, 0); + init_sprite(sprite, nomSprite, j, i, largeur, hauteur, 0, BAS); map[i][j] = tolower(copy); //On efface les marqueurs de sprites, plus nécessaires break; // On quitte } @@ -109,6 +120,10 @@ void build_sprites_tab (sprite_t *sprite, char nomSprite, int largeur, int haute } } +SDL_Rect get_rect (sprite_t *sprite){ + return sprite->rect; +} + int has_collided (sprite_t* spr1, sprite_t* spr2){ return SDL_HasIntersection(&spr1->rect, &spr2->rect); } @@ -119,22 +134,22 @@ void handle_collision (sprite_t* spr_move, sprite_t* spr_fixed){ SDL_bool collision = SDL_IntersectRect(&spr_move->rect, &spr_fixed->rect, &temp); if (collision == SDL_TRUE && est_visible(spr_move) && est_visible(spr_fixed)){ switch (return_state(spr_move)){ - case 0: + case BAS: //cas dans lequel le joueur descend 'à travers' un meuble spr_move->rect.y -= temp.h; break; - case 1: + case HAUT: //cas dans lequel le joueur va 'à travers' un meuble vers le haut spr_move->rect.y += temp.h; break; - case 2: + case DROITE: //cas dans lequel le joueur va 'à travers' un meuble vers la droite spr_move->rect.x -= temp.w; break; - case 3: + case GAUCHE: //cas dans lequel le joueur va 'à travers' un meuble vers la gauche spr_move->rect.x += temp.w; break; @@ -144,35 +159,6 @@ void handle_collision (sprite_t* spr_move, sprite_t* spr_fixed){ } } -void limites_interne (world_t* world){ - //Gestion des limites internes au jeu - handle_collision(&world->joueur, &world->envoi); - handle_collision(&world->joueur, &world->four); - handle_collision(&world->joueur, &world->frigo); - handle_collision(&world->joueur, &world->lavabo); - handle_collision(&world->joueur, &world->poubelle); - for (int i=0; i<NB_COMPT_1; i++){ - handle_collision(&world->joueur, &world->comptoire[i]); - } - -} - -void init_sprite(sprite_t *sprite, char nom, int x, int y, int w, int h, int v, int state){ - //La fonction initialise tous les composants d'un sprite - sprite->rect.x = x; - sprite->rect.y = y; - sprite->rect.w = w; - sprite->rect.h = h; - sprite->v = v; - sprite->etat = state; - sprite->is_visible = 1; - sprite->nom = nom; -} - -void print_sprite (sprite_t *sprite){ - // Fonction permettant d'afficher les données contenues dans un sprite - printf("nom : %c -- x= %d | y=%d | w= %d | h= %d | v= %d | visible : %d \n", sprite->nom, sprite->rect.x, sprite->rect.y, sprite->rect.w, sprite->rect.h, sprite->v, sprite->is_visible); -} int aleatoire (int a, int b){ // Fonction générant une valeur aléatoire entre a (inclu) et b (exclu) @@ -181,22 +167,22 @@ int aleatoire (int a, int b){ void set_bas (sprite_t *sprite){ // Sprite va vers le bas - sprite->etat = 0; + sprite->etat = BAS; } void set_haut (sprite_t *sprite){ // Sprite va vers le haut - sprite->etat = 1; + sprite->etat = HAUT; } void set_droite (sprite_t *sprite){ // Sprite va vers la droite - sprite->etat = 2; + sprite->etat = DROITE; } void set_gauche (sprite_t *sprite){ // Sprite va vers la gauche - sprite->etat = 3; + sprite->etat = GAUCHE; } int return_state (sprite_t *sprite){ @@ -245,7 +231,19 @@ void limites_externes (sprite_t *sprite){ //mur haut sprite->rect.y = SIZE_MUR; } +} +void limites_interne (world_t* world){ + //Gestion des limites internes au jeu + handle_collision(&world->joueur, &world->envoi); + handle_collision(&world->joueur, &world->four); + handle_collision(&world->joueur, &world->frigo); + handle_collision(&world->joueur, &world->lavabo); + handle_collision(&world->joueur, &world->poubelle); + for (int i=0; i<NB_COMPT_1; i++){ + handle_collision(&world->joueur, &world->comptoire[i]); + } + } void reset_sprite_on_map (sprite_t *sprite, world_t *world){ diff --git a/logique.h b/logique.h index 2283a93..fb3a054 100644 --- a/logique.h +++ b/logique.h @@ -47,6 +47,7 @@ struct world_s{ sprite_t poubelle; /*< Sprite de la poubelle */ sprite_t comptoire[NB_COMPT_1]; /*< Tableau de sprite de comptoir */ sprite_t plat[NB_PLAT]; /*!< Tableau des sprites type de plats */ + sprite_t tomates[10] ; int score; /*!< Score du joueur */ int compteur_plats; /*!< Nombre d'ennemis étant sorti de l'écran */ int attente; /*!< Compte le nombre de tours avant la fin de la partie*/ @@ -101,6 +102,13 @@ void build_sprite_unique (sprite_t *sprite, char nom, int largeur, int hauteur, */ void build_sprites_tab (sprite_t *sprite, char nomSprite, int largeur, int hauteur, int* compt, char** map); +/** + * @brief retourne le SDL_Rect d'un sprite + * + * @param sprite + * @return SDL_Rect + */ +SDL_Rect get_rect (sprite_t *sprite); /** * \brief Vérifie si deux sprites sont en collisions diff --git a/main.c b/main.c index fe0399c..6a23f16 100644 --- a/main.c +++ b/main.c @@ -46,7 +46,7 @@ init_textures(ecran, &textures, font); while (estFini(&world)==0){ SDL_RenderClear(ecran); // permet de vider le Renderer (ecran) de toutes les textures - //Gestion des évenements (entrées joueurs) + //Gestion des évenements (entrées joueurs) suivi de la mise à jour des données (collisions etc) et actualisation graphique gestion_events(&evenements, &world); update_data(&world); update_graphics(ecran, &world, &textures); -- GitLab