From 910bcced27bdea93c314abbf3a7fa876507fbbe4 Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Tue, 1 Jun 2021 14:58:37 +0200 Subject: [PATCH] Works on disease simulations --- Plague.g1a | Bin 90580 -> 89792 bytes assets-fx/bground.png | Bin 18445 -> 18902 bytes assets-fx/title.png | Bin 2982 -> 21314 bytes old assets/Plague Logo.png | Bin 0 -> 1747 bytes old assets/bground.png | Bin 0 -> 18592 bytes old assets/convert_world.py | 39 +++++++++++++++++++ old assets/title.png | Bin 0 -> 3894 bytes old assets/world.png | Bin 0 -> 2216 bytes src/core.c | 1 - src/core.h | 2 +- src/data.c | 2 +- src/display_engine.c | 17 +++++---- src/epidemic_engine.c | 73 ++++++++++++++++++++---------------- src/epidemic_engine.h | 4 +- src/main.c | 45 ++++++++++++---------- src/mutation_engine.c | 2 +- 16 files changed, 118 insertions(+), 67 deletions(-) create mode 100644 old assets/Plague Logo.png create mode 100644 old assets/bground.png create mode 100644 old assets/convert_world.py create mode 100644 old assets/title.png create mode 100644 old assets/world.png diff --git a/Plague.g1a b/Plague.g1a index d69480a21f206870219d1057d9a369b20540bad6..fefbe92927ad26935dde88007c50e1e2a14256e5 100644 GIT binary patch delta 7289 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 M?4+h;W(hv?f6f#N82|tP delta 7933 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 CVpp;N diff --git a/assets-fx/bground.png b/assets-fx/bground.png index 3547c43cf7d60bf48f08a7c155e7587f10d33921..16eac62ebc335d7fcebc0d8f43f27a44c57b21b7 100644 GIT binary patch delta 12025 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 VVupY!**X9K002ovPDHLkV1nC}GR*)0 diff --git a/assets-fx/title.png b/assets-fx/title.png index e929a45d59b0707fa340718176942bc3fd597027..dcc8c29a0c9607c82d016f8c3e3cb391d4f9ce57 100644 GIT binary patch literal 21314 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 QMF0Q*07*qoM6N<$g2Qh7=>Px# delta 2951 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 diff --git a/old assets/Plague Logo.png b/old assets/Plague Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f207bed55e0f641fed58c37610c3e634b4625e2a GIT binary patch literal 1747 zcmV;^1}yoBP)Hg1+lHrgWSWcKdPn90sKGrRqvPeo9CG3uKX#J{(IASm?@+di}}l?o-=)F3E6 zwD^Ni=!>T7nL9I?X}YoAW$t|Qo$sD|?zw001?ah|SeB6#0T!CBEf+H4bBB+JJu8re zhoBb*p;u8ID_yBf0ya+zcePvJL&AGs+11_tpRKn>9TgyPA7ZoSs0)aX0r00)%XR^J z`jH<$>RKN5V(7OqK*TS4xZz{h!*f1C3ECFkK$#7nA@pGN!$;%jYv zwjAKwmYb0gKL(K8-kPtb5${A?tlI~wzMrJ6wTdBr=Y%%%EaEMQ&o}4FQ^DA)s*}Z> z!FI&AHCpoWI|RUqx?7s@$8!5^Q=anY%X@i5{QA6kNcMelpE>R6eCYFpmMsVT zrI(b06~u#xf1yS}_UGdMvD``!0~u->P=lA4?YN`hilQ z|3tHka)7T{2CGqwjZfMwx$5irQN_*|e4l)UHmiYuz74Yp1t^#>hrJ3-SOXDcC_o0^ z7T9R1gAN8V6s;5)ieI5-7aQlmJn}lUna#nz!j%5V$X|o`xX!dHWQRV27P1=rj;t2b zW$~+pTw@bIek?ZvKPDL<64`^#UNTAck#RBsB6*5DP4<%UA_FqU$I>2EH_cM;u)Q~SI+rg`Rn{L z_AC5qq~L$#SMj%U$6Cz0vP{G5Y*=%5RT^yu;}-DInZ=349rJPVM6C3K^oO)8y(fJr{l>k`ead~!ea?NsT>_Ci%bnxC;Vy6= zb6>{xYV#Ue-+LB$7`JEXmTRm^AtP)R9u{)KHsMiWGV&)32xCG~*nyU<>-!d;FP=Re z4r3qYr~6#KE>;1F`>_J_P5xC?ROxV(DIHdCO*p$HRQI@7^PwV@Pvuf+ z5K}u-6REM(K@W$srgorh0{i?O)v0c>QtHxU-hBdD(>iYJ4b2sIOVX2K8m~4gmYVA5 zh^QEb$V`rCQ-|7ZS{nuL-t>?3n=-o(6I(7vocj#GzCZEo`!3>+v;dYIfPu#&ZWzzX z2i^rZ^Mu;6+rb@?NPG+6)c5T6zxpzGe*M(x+{AON=PiJ>H#?ob-|uwRK0yDg0B4PV z0id6JRRdfL?*IS-bxA})RA>e5SM6@ZAPieid;eG7E+@Hi-4GI>-JP`lffC!XDePnW zc|Kns{5(F``^){Pm=5|he-8j)U_2~lbzpcM*vtsNVOfLMG3PpKzwUq*L1JJuui{Os%27N# zpDwWiTgD-Py74kx52sqt)X~#_FxdmB$X~y+NAupi1D;VMb6~}AjT;#*sj4F>DMq7PmTMxCT7eu~r$&0o25d0p+T8CP+DeiE1M? zl4-0Q)y!xZrgVuTQ5fnO0WQ+2)E>QtEisShttsEbcx%e@-iQ9rg?A!z?=rbdNg`X7{6LG41mU&raj}( p!njH^6#z}&aXeh&cQn}Z^b5*@I8##AOS1p~002ovPDHLkV1nkIRZ0K= literal 0 HcmV?d00001 diff --git a/old assets/bground.png b/old assets/bground.png new file mode 100644 index 0000000000000000000000000000000000000000..174080c9a26023ccb0eee8c433072007f3e029c8 GIT binary patch literal 18592 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 R 52: return 1 + if 24 < index < 40: return 3 + else: return 2 + + +def show(): + img = Image.open("world.png") + data = np.array(img) + + rslt = "" + for index, line in enumerate(data): + for pxl in line: + rslt += f"{analyse(index, pxl)}" + rslt += "\n" + print(rslt) + + +def get_tabular(): + img = Image.open("world.png") + data = np.array(img) + + rslt = "const unsigned int world[64][128] =\n{" + for index, line in enumerate(data): + rslt += "\n {" + for pxl in line: + rslt += f"{analyse(index, pxl)}, " + rslt = rslt[:-2] + "}," + rslt += "\n};" + print(rslt) + + +get_tabular() diff --git a/old assets/title.png b/old assets/title.png new file mode 100644 index 0000000000000000000000000000000000000000..f0beb69a4245ae4f7e449a89036e2db7eb414947 GIT binary patch literal 3894 zcmV-656SR}P)Hg1+lHrgWSWcKdPn90sKGrRqvPeo9CG3uKX#J{(IASm?@+di}}l?o-=)F3E6 zwD^Ni=!>T7nL9I?X}YoAW$t|Qo$sD|?zw001?ah|SeB6#0T!CBEf+H4bBB+JJu8re zhoBb*p;u8ID_yBf0ya+zcePvJL&AGs+11_tpRKn>9TgyPA7ZoSs0)aX0r00)%XR^J z`jH<$>RKN5V(7OqK*TS4xZz{h!*f1C3ECFkK$#7nA@pGN!$;%jYv zwjAKwmYb0gKL(K8-kPtb5${A?tlI~wzMrJ6wTdBr=Y%%%EaEMQ&o}4FQ^DA)s*}Z> z!FI&AHCpoWI|RUqx?7s@$8!5^Q=anY%X@i5{QA6kNcMelpE>R6eCYFpmMsVT zrI(b06~u#xf1yS}_UGdMvD``!0~u->P=lA4?YN`hilQ z|3tHka)7T{2CGqwjZfMwx$5irQN_*|e4l)UHmiYuz74Yp1t^#>hrJ3-SOXDcC_o0^ z7T9R1gAN8V6s;5)ieI5-7aQlmJn}lUna#nz!j%5V$X|o`xX!dHWQRV27P1=rj;t2b zW$~+pTw@bIek?ZvKPDL<64`^#UNTAck#RBsB6*5DP4<%UA_FqU$I>2EH_cM;u)Q~SI+rg`Rn{L z_AC5qq~L$#SMj%U$6Cz0vP{G5Y*=%5RT^yu;}-DInZ=349rJPVM6C3K^oO)8y(fJr{l>k`ead~!ea?NsT>_Ci%bnxC;Vy6= zb6>{xYV#Ue-+LB$7`JEXmTRm^AtP)R9u{)KHsMiWGV&)32xCG~*nyU<>-!d;FP=Re z4r3qYr~6#KE>;1F`>_J_P5xC?ROxV(DIHdCO*p$HRQI@7^PwV@Pvuf+ z5K}u-6REM(K@W$srgorh0{i?O)v0c>QtHxU-hBdD(>iYJ4b2sIOVX2K8m~4gmYVA5 zh^QEb$V`rCQ-|7ZS{nuL-t>?3n=-o(6I(7vocj#GzCZEo`!3>+v;dYIfPu#&ZWzzX z2i^rZ^Mu;6+rb@?NPG+6)c5T6zxpzGe*M(x+{AON=PiJ>H#?ob-|uwRK0yDg0B4PV z0id6JRRdfL?*IS_*hxe|RCodHT#It!HVkxb(*OV9b|&R2T4uQd_>k;4cW2F{B!I;N z1Rz;))4tu_Zy&eUHLSqLzaO`^f8K^T0#@<#JG&wtt}MqapZCq{zuWEOBc6k|w{qxD z)a|z8vLG85{?XwhCgP>d*BWmW-|dufhW(1pS@{XNxUv}+X{Oz;#M@dM6@}4ZV}W`& z;<3))W_fi`M!aqx$;egtAz!`N4A$%_pZk;F^^mie@X2hvw>Lfq^@2qSP`4EoLc>mL z8Ib*P^`-gTdHhYAaJX+*-Z_@|%hTgMmNMc$rT@^Ru785P^{o6HU%W)L^*(2iqH8%F)f83t^XEmRWl$7ky{mLmT;sblxw z4lx{#?p1 zs>5oW*}8cSRW7~50N{t0p1W=BE-4^<1d(a5p5`gdV)4!lV3rm+VZR42`JyJ#rnxB2 z?U_w+ig8}x@N>YFS~h(sjyeqO04VDd_j>5_589|xjN6Ful{om)pE|D8 zyD#J!4E<2&Uld;JdIsmM@y^u%D|_ag9894Zo3+olGEN*=QFi-}BzK3y}%g(FzZ0|7@=X{hEqkGzY zox!-zv*pnsL}!Y0ILBLg3;6o|;MphpDe?DT89g1nBh{u2(L$?U@vHlcQ}y5s^W!t# zUIdv#eF9MNTK}#Ja6bO7Q;$xIsw7W=o~z%HJ?vQ@zT@Lmtv}&6hoV=jPy86xncO zdUEtQiTSZ>DVP?Dd9uK?ai#rP>r5Vs@!oXb0USJgNF9)~9J8@TIL$?|QC^B=!_|j- zEhu%fYmXNkSGc1blrK8-Lw^m_f+D#n0ZkhC5ytT|yz0Zf=7yM*uQbSgo8p(3x0S2s zt2S~XHuPMn$Evz5N4f1EIslpk_AD~?QKM;(Z19OL`oOm0M=ttrzVdlVyRT94iP?%v zVPDx4Q%{MRZJ8RS_m49r@6>i{q~)~4`c$n*k9w=2FO_CW)HguNl&#LVt`aJesZ zydpepT*^7?mijOudW@Njk?rI$MXMjnP;=JZHNwvnb;SE9J96Vt)fl+* z(PjJuPl09t{J<<+C42B@Hr^;t+9N*bXkR_fy_)Y$qI?g29fHGCz=xp7%}d~FL7stU z^P=X`hP>Pk8+E$xouT1NzR6?rBA%$BJ^Yq;5U1x8#Q+a|s=c|@zp_o#Ux1&mYZ_7R z;OOc#wP%aCW^^pDVr#LB5_V!#ulUiP{=g}R>bY0D^1{B^_)(z7vj6da55VT(?$tY3 zhk_V8TUS*7F0dHAxGeg}kM>nO{8oJ&-{jo6&Ht#602W-=Y&bGKeRV*zm|ke&u__L7 z4-5P3wZf}djlb!GLHO}c04)-m!Y6^+qCN4EZB~~Rbk_g7afhZ45;zP%Ry61%o9k4j z4_D-(_DCM&TR#SRIL6bDjUN79HZ6X{iDBZ8+o{)qa}4BBjL4^_`+6wsza#41<;_xC zj}$ieD&Dz9{*66(foU)%Xlyf`67NxXaInEx$w?g&qwZ9ayOYKl@f`jpP!ogmsF1L; z*<43Km+fC;I^{abd5Yu?Ag?7TwK>{&+B~dd+&&}sIDWxMfUev}-yV5T9Rj!ATfX!p zkz^ht@}FnEKd(t?=1w20=Ui#$A-8bL21K&J4}hjVS#S-qVLR;riq<= zcd#0N7LS@~^Rn9Z_|zXb??cab#fEQHKK~=}~?gW#-zXfyVn4=^V2tqXFIo-kA}V+amwS z?~3lX`zDZw#qfpAB|z5IL1iPnc|v)5OYV%|VKI{@e4@_M`#tng!*y6_&zkXwCZKXz zJgq7)_l!S^IeY@JSWS}qTeaI*^c}AI=e`#^Y8EimJAM?0ej}XQ&&Hu& zjoTT3j>*%Rm$Qas`g!IUse?K5#g((vLKOpw#{vT9HpuuTI?dj`w>U&(7jlRyg$$GA!+tcp= zA^D%A)Iufa$_kw|Mrkr%#pwPDXV=$;;57hR^@$-+_-a$t7fpgcSG8T)cbgAl8vqlp zgx-Bw#QQVH$uXW=&%~!s#%VFKV(VaJ7^PB-`YL92&!L*d^T@OKPuygI)<`d)&z&L< z2)@x788g7)-NxT*@?fo{4g>jHb5~-_bO-{@&yN5eA^_Bg#8gFR)8py5{Ww$S%zCHR zrttv#`PmSt5167$8$}+jqk3AN%&mzTa3H_We;v#~Gb@NJVB;o%v;f5L?%;0#&~J$h zzFnlh<6ZWcjHmvLt#Q>Jap;-1#@V-$wb*ig`h*QB0jCE5$tkZUoAiP)0p)qsjc3eg z6}#qSR?p%(jmXegGX6QB0tyXM#u1FAcCWIOWBD*5@md?c~hE9Cj>Y zvX+#M`K}^jAV1a=$+t^8;eUZJHv(w80mi zup1u!?z3}hU6~4XJb(N@iY$cD0DwgG`jlXRt1A;E4-=(~l|{tf@hWfmd4b_1m*Syj zJk?VtZre7~JI-a#zu_6=>s*^0_(b`uj{E$JAWoH$SI6?XmIV)!`~#J!Mbo^+GuB$l z3*{ok0j``;eg}Jb2Uz=S#}cxVyoTV=fK^4*q*V^!*%S56hLc#>^Cy5Z1$&avlm(;x zwZ;{=Isj+;K)=%ipvNH@bgx0s%8d6{20-h6ruOjvACnv39Hq)$07*qoM6N<$ Ef@o*aaR2}S literal 0 HcmV?d00001 diff --git a/old assets/world.png b/old assets/world.png new file mode 100644 index 0000000000000000000000000000000000000000..359c314c739d98eb09b02d21081b6d153413e81d GIT binary patch literal 2216 zcmV;Z2v_%sP)EX>4Tx062|}Rb6NtRTMtEb7vzY&QokOg>Hg1+lHrgWS zWcKdPn90sKGrRqvPeo9CG3uKX#J{(IASm?@+di}}l?o-=)F3E6wD^Ni=!>T7nL9I? zX}YoAW$t|Qo$sD|?zw001?ah|SeB6#0T!CBEf+H4bBB+JJu8rehoBb*p;u8ID_yBf z0ya+zcePvJL&AGs+11_tpRKn>9TgyPA7ZoSs0)aX0r00)%XR^J`jH<$>RKN5V(7Oq zK*TS4xZz{h!*f1C3ECFkK$#7nA@pGN!$;%jYvwjAKwmYb0gKL(K8 z-kPtb5${A?tlI~wzMrJ6wTdBr=Y%%%EaEMQ&o}4FQ^DA)s*}Z>!FI&AHCpoWI|RUq zx?7s@$8!5^Q=anY%X@i5{QA6kNcMelpE>R6eCYFpmMsVTrI(b06~u#xf1yS} z_UGdMvD``!0~u->P=lA4?YN`hilQ|3tHka)7T{2CGqw zjZfMwx$5irQN_*|e4l)UHmiYuz74Yp1t^#>hrJ3-SOXDcC_o0^7T9R1gAN8V6s;5) zieI5-7aQlmJn}lUna#nz!j%5V$X|o`xX!dHWQRV27P1=rj;t2bW$~+pTw@bIek?Zv zKPDL<64`^#UNTAck#RBsB6*5DP4<%UA_FqU$I>2EH_cM;u)Q~SI+rg`Rn{L_AC5qq~L$#SMj%U z$6Cz0vP{G5Y*=%5RT^yu;}-DInZ=349rJPVM6C3K^oO)8y(fJr{l>k`ead~!ea?NsT>_Ci%bnxC;Vy6=b6>{xYV#Ue-+LB$ z7`JEXmTRm^AtP)R9u{)KHsMiWGV&)32xCG~*nyU<>-!d;FP=Re4r3qYr~6#KE>;1F z`>_J_P5xC?ROxV(DIHdCO*p$HRQI@7^PwV@Pvuf+5K}u-6REM(K@W$s zrgorh0{i?O)v0c>QtHxU-hBdD(>iYJ4b2sIOVX2K8m~4gmYVA5h^QEb$V`rCQ-|7Z zS{nuL-t>?3n=-o(6I(7vocj#GzCZEo`!3>+v;dYIfPu#&ZWzzX2i^rZ^Mu;6+rb@? zNPG+6)c5T6zxpzGe*M(x+{AON=PiJ>H#?ob-|uwRK0yDg0B4PV0id6JRb1C~&j0`b z24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jvC<1u+_c zRgQN6000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000B`Nklf0;RDgwiawm<9s&&Xdl*YVC5)6>sH6!&fZpo3 zKhMDB1RkqYOF*EpkECR-iS*3c{kbK<2rNzoV93PT+!d1FL!h zCB@to=$YP%Hux*w&*AS6_;8(MN&mWfR?h;A-YH$Geby_Yf;=k459i%;0iz$hT_KnV zUt(|INw~3__NkA ziE*y_6g^sxUeARY0VGy}hMyi)B74m$UaY{XkQOos)CT_f9*ag$N*p8_h#l_xz}sWLTm4wMe7Uin#CPvSR(?9zY{wR^}# z7O*mNPxBw8utd##ApTxU7s=|DFpZm`kFW>NL*+CI7+-MjTp_| zgw)Y*cP_v(jT`mMTaF2O+*{I;h3N_OkRo!YYO|)3-n~mAcMe#(01x*7X}BQB`&VuN za>Sl=pFvatXa|Z~bqngfNz~G@sS7w)x%S;ln-Ew)mTI z$^kxZK+5r(e87(_&|=Z>rqH9py)D6Ni#U5@@mc-4;?4qm{r-M! q3y~uX@`#+2NNhc_u?slh+sGe|1^TK7#*-HS0000research = 0; } - epidemic_simulation(current_game); } } diff --git a/src/core.h b/src/core.h index 9b9c2b1..196644d 100644 --- a/src/core.h +++ b/src/core.h @@ -40,7 +40,7 @@ struct game int research, limit, priority; // Humans stats : healthy, infected, dead, healed - long long int humans[4]; + int humans[4]; // Time int time; diff --git a/src/data.c b/src/data.c index 1dc55cc..cf6bfb5 100644 --- a/src/data.c +++ b/src/data.c @@ -3,7 +3,7 @@ const struct mutation symptoms_data[14] = { - {1, 1, 0, 2, 0, "NAUSEE"}, + {100, 1, 0, 0, 0, "NAUSEE"}, {3, 2, 0, 4, 0, "VOMISSEMENT"}, {2, 1, 0, 3, 0, "TOUX"}, {2, 2, 0, 4, 0, "PNEUMONIE"}, diff --git a/src/display_engine.c b/src/display_engine.c index 4b81f45..b511339 100644 --- a/src/display_engine.c +++ b/src/display_engine.c @@ -29,7 +29,7 @@ void display_foreground(const int background, const struct game *current_game) { for (int j = 0; j < current_game->grid.height; j ++) { - if (current_game->grid.data[i + j * current_game->grid.width] == 1 && world[i][j] != 0) dpixel(i, j, C_BLACK); + if (current_game->grid.data[i + j * current_game->grid.width] != 0 && world[i][j] != 0) dpixel(i, j, C_BLACK); } } @@ -47,7 +47,7 @@ void display_foreground(const int background, const struct game *current_game) { for (int j = 0; j < 50; j ++) { - if (current_game->grid.data[i + j * current_game->grid.width] == 1 && world[i][j] != 0) dpixel(i, j, C_BLACK); + if (current_game->grid.data[i + j * current_game->grid.width] != 0 && world[i][j] != 0) dpixel(i, j, C_BLACK); } } @@ -68,15 +68,15 @@ void display_foreground(const int background, const struct game *current_game) case 3: dprint(102, 37, C_BLACK, "%d", current_game->dna); - length = 67 * current_game->contagion / 26; + length = 67 * current_game->contagion / 100; dline(57, 48, 57 + length, 48, C_BLACK); dline(57, 49, 57 + length, 49, C_BLACK); - length = 67 * current_game->severity / 20; + length = 67 * current_game->severity / 100; dline(57, 54, 57 + length, 54, C_BLACK); dline(57, 55, 57 + length, 55, C_BLACK); - length = 67 * current_game->lethality / 33; + length = 67 * current_game->lethality / 100; dline(57, 60, 57 + length, 60, C_BLACK); dline(57, 61, 57 + length, 61, C_BLACK); @@ -88,9 +88,10 @@ void display_foreground(const int background, const struct game *current_game) case 6: for (int i = 0; i < 4; i ++) { - length = floor(63 * current_game->humans[i] / 8192); - dline(61, i*8 + 31, 61 + length, i*8 + 31, C_BLACK); - dline(61, i*8 + 32, 61 + length, i*8 + 32, C_BLACK); + // length = 63 * current_game->humans[i] / (current_game->grid.width * current_game->grid.height); + // dline(61, i*8 + 31, 61 + length, i*8 + 31, C_BLACK); + // dline(61, i*8 + 32, 61 + length, i*8 + 32, C_BLACK); + dprint(61, i*8 + 31, C_BLACK, "%d", current_game->humans[i]); } break; diff --git a/src/epidemic_engine.c b/src/epidemic_engine.c index 1372521..93c8790 100644 --- a/src/epidemic_engine.c +++ b/src/epidemic_engine.c @@ -2,52 +2,59 @@ #include "epidemic_engine.h" -int can_become_infected(const struct grid epidemic_grid, const int mutations_selected[3], const int i, const int j) +#include +#include + + +int grid_get(const struct grid epidemic_grid, const int i, const int j) +{ + if (i < 0 || j < 0 || i >= epidemic_grid.width || j >= epidemic_grid.height) return epidemic_grid.data[i + j * epidemic_grid.width]; + return 0; +} + + +bool can_become_infected(const struct grid epidemic_grid, const int mutations_selected[3], const int i, const int j) { extern const unsigned int world[64][128]; // In case of water, low or high temperature - if (world[i][j] == 0 && mutations_selected[2] != 3) return 0; - if (world[i][j] == 1 && mutations_selected[1] != 0 && mutations_selected[1] != 4) return 0; - if (world[i][j] == 3 && mutations_selected[1] != 1 && mutations_selected[1] != 4) return 0; + if (world[j][i] == 0 && mutations_selected[2] != 3) return false; + if (world[j][i] == 1 && mutations_selected[1] != 0 && mutations_selected[1] != 4) return false; + if (world[j][i] == 3 && mutations_selected[1] != 1 && mutations_selected[1] != 4) return false; - // return (epidemic_grid.data[i-1 + j * epidemic_grid.width] - 1) * (epidemic_grid.data[i+1 + j * epidemic_grid.width] - 1) * (epidemic_grid.data[i + (j-1) * epidemic_grid.width] - 1) * (epidemic_grid.data[i (j+1) * epidemic_grid.width] - 1) == 0; - - if (i == 0 && j == 0) return (epidemic_grid.data[i+1 + j * epidemic_grid.width] - 1) * (epidemic_grid.data[i + (j+1) * epidemic_grid.width] - 1) == 0; - if (i == 0 && j == epidemic_grid.height - 1) return (epidemic_grid.data[i+1 + j * epidemic_grid.width] - 1) * (epidemic_grid.data[i + (j-1) * epidemic_grid.width] - 1) == 0; - if (i == 0) return (epidemic_grid.data[i + (j-1) * epidemic_grid.width] - 1) * (epidemic_grid.data[i + (j+1) * epidemic_grid.width] - 1) * (epidemic_grid.data[i+1 + j * epidemic_grid.width] - 1) == 0; - - if (i == epidemic_grid.width - 1 && j == 0) return (epidemic_grid.data[i-1 + j * epidemic_grid.width] - 1) * (epidemic_grid.data[i + (j+1) * epidemic_grid.width] - 1) == 0; - if (i == epidemic_grid.width - 1 && j == epidemic_grid.height - 1) return (epidemic_grid.data[i-1 + j * epidemic_grid.width] - 1) * (epidemic_grid.data[i + (j-1) * epidemic_grid.width] - 1) == 0; - if (i == epidemic_grid.width - 1) return (epidemic_grid.data[i-1 + j * epidemic_grid.width] - 1) * (epidemic_grid.data[i + (j-1) * epidemic_grid.width] - 1) * (epidemic_grid.data[i + (j+1) * epidemic_grid.width] - 1) == 0; - - return (epidemic_grid.data[i-1 + j * epidemic_grid.width] - 1) * (epidemic_grid.data[i+1 + j * epidemic_grid.width] - 1) * (epidemic_grid.data[i + (j-1) * epidemic_grid.width] - 1) * (epidemic_grid.data[i + (j+1) * epidemic_grid.width] - 1) == 0; + // Test cases around + return grid_get(epidemic_grid, i - 1, j) == 1 || grid_get(epidemic_grid, i + 1, j) == 1 || grid_get(epidemic_grid, i, j - 1) == 1 || grid_get(epidemic_grid, i, j + 1) == 1; } -int bernoulli(const float p, const int seed) +bool bernoulli(const float p) { - srand(seed); - return rand() > p; + return (rand() / 2147483647) <= p; } void epidemic_simulation(struct game *current_game) { - float contagion_rate = current_game->contagion / 100; - float lethality_rate = current_game->lethality / 100; - float healed_rate = current_game->research / current_game->limit; + srand(15510); + double contagion_rate = current_game->contagion / 100; + double lethality_rate = current_game->lethality / 100; + double healed_rate = current_game->research / current_game->limit; - for (int i = 0; i < current_game->grid.height; i ++) + dclear(C_WHITE); + dprint(5, 5, C_BLACK, "HR:%lf", healed_rate); + dupdate(); + getkey(); + + for (int i = 0; i < current_game->grid.width; i ++) { - for (int j = 0; j < current_game->grid.width; j ++) + for (int j = 0; j < current_game->grid.height; j ++) { switch (current_game->grid.data[i + j * current_game->grid.width]) { // Healthy case 0: if (can_become_infected(current_game->grid, current_game->mutations_selected, i, j) - && bernoulli(contagion_rate, current_game->time)) + && bernoulli(contagion_rate)) { current_game->grid.data[i + j * current_game->grid.width] = 1; current_game->humans[0] --; @@ -59,20 +66,20 @@ void epidemic_simulation(struct game *current_game) case 1: // Become healed - if (bernoulli(healed_rate, current_game->time)) - { - current_game->grid.data[i + j * current_game->grid.width] = 3; - current_game->humans[1] --; - current_game->humans[3] ++; - } - - // Become dead - else if (bernoulli(lethality_rate, current_game->time)) + if (bernoulli(healed_rate)) { current_game->grid.data[i + j * current_game->grid.width] = 2; current_game->humans[1] --; current_game->humans[2] ++; } + + // Become dead + else if (bernoulli(lethality_rate)) + { + current_game->grid.data[i + j * current_game->grid.width] = 3; + current_game->humans[1] --; + current_game->humans[3] ++; + } break; } diff --git a/src/epidemic_engine.h b/src/epidemic_engine.h index 6916b9a..b217ff5 100644 --- a/src/epidemic_engine.h +++ b/src/epidemic_engine.h @@ -7,10 +7,10 @@ #define HUMANS_PER_CASE 1000000 // can_become_infected : return 0 if the case (i, j) isn't infectable, 1 else -int can_become_infected(const struct grid epidemic_grid, const int mutations_selected[3], const int i, const int j); +bool can_become_infected(const struct grid epidemic_grid, const int mutations_selected[3], const int i, const int j); // bernoulli : simulate a random event -int bernoulli(const float p, const int seed); +bool bernoulli(const float p); // epidemic_simulation : simulate the propagation of the virus void epidemic_simulation(struct game *current_game); diff --git a/src/main.c b/src/main.c index ae48d8b..a59da4b 100644 --- a/src/main.c +++ b/src/main.c @@ -55,7 +55,7 @@ int main(void) .research = 0, .limit = RESEARCH_LIMIT, .priority = 0, - .humans = {8191, 1, 0, 0}, + .humans = {0, 1, 0, 0}, .time = 0, @@ -68,6 +68,7 @@ int main(void) current_game.grid.data = calloc(current_game.grid.width * current_game.grid.height, sizeof(uint8_t)); current_game.grid.data[95 + 20 * current_game.grid.width] = 1; + current_game.humans[0] = (current_game.grid.width * current_game.grid.height) - 1; main_loop(¤t_game); @@ -83,47 +84,51 @@ static void title_screen(void) extern bopti_image_t img_title; extern bopti_image_t img_explosion; - static volatile int tick_250 = 1; - static volatile int tick_100 = 1; - int t_250 = timer_configure(TIMER_ANY, 250000, GINT_CALL(callback_tick, &tick_250)); - int t_100 = timer_configure(TIMER_ANY, 100000, GINT_CALL(callback_tick, &tick_100)); + static volatile int tick_5 = 1; + static volatile int tick_1 = 1; + int t_1 = timer_configure(TIMER_ANY, 500000, GINT_CALL(callback_tick, &tick_5)); + int t_2 = timer_configure(TIMER_ANY, 100000, GINT_CALL(callback_tick, &tick_1)); - if (t_250 >= 0) timer_start(t_250); - if (t_100 >= 0) timer_start(t_100); + if (t_1 >= 0) timer_start(t_1); + if (t_2 >= 0) timer_start(t_2); dclear(C_BLACK); dupdate(); - while (!tick_250) sleep(); - tick_250 = 0; + while (!tick_5) sleep(); + tick_5 = 0; dsubimage(0, 0, &img_title, 0, 0, 128, 64, DIMAGE_NONE); dupdate(); - while (!tick_250) sleep(); - tick_250 = 0; + while (!tick_5) sleep(); + tick_5 = 0; for (int frame = 0; frame < 5; frame ++) { dclear(C_BLACK); dsubimage(0, 0, &img_title, 0, 0, 128, 64, DIMAGE_NONE); - dsubimage(72, 5, &img_explosion, 41 * frame, 0, 40, 40, DIMAGE_NONE); + dsubimage(76, 9, &img_explosion, 41 * frame, 0, 40, 40, DIMAGE_NONE); dupdate(); - while (!tick_100) sleep(); - tick_100 = 0; + while (!tick_1) sleep(); + tick_1 = 0; } dclear(C_BLACK); dsubimage(0, 0, &img_title, 0, 65, 128, 64, DIMAGE_NONE); dupdate(); - while (!tick_250) sleep(); - tick_250 = 0; + + for (int i = 0; i < 2; i ++) + { + while (!tick_5) sleep(); + tick_5 = 0; + } for (int i = 0; i < 5; i ++) { dclear(C_BLACK); dsubimage(0, 0, &img_title, 0, ((i % 2) + 1) * 65, 128, 64, DIMAGE_NONE); dupdate(); - while (!tick_250) sleep(); - tick_250 = 0; + while (!tick_5) sleep(); + tick_5 = 0; } dclear(C_BLACK); @@ -132,8 +137,8 @@ static void title_screen(void) getkey(); - if (t_250 >= 0) timer_stop(t_250); - if (t_100 >= 0) timer_stop(t_100); + if (t_1 >= 0) timer_stop(t_1); + if (t_2 >= 0) timer_stop(t_2); } diff --git a/src/mutation_engine.c b/src/mutation_engine.c index fc6e795..a3a2b60 100644 --- a/src/mutation_engine.c +++ b/src/mutation_engine.c @@ -131,7 +131,7 @@ int mutation_buy(struct game *current_game, const struct cursor c, const int mut { current_game->mutations_selected[mutation_menu - 1] = id; update_disease(current_game); - const char *msg[5] = {"mutation", "selectionnee"}; + const char *msg[5] = {"mutation", "selectionnee", "", "", ""}; message(msg); }