Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Plague Inc !
Shadow15510 En ligne Administrateur Points: 5498 Défis: 18 Message

Plague Inc !

Posté le 24/05/2018 18:17

Le projet est terminé !

Vous pouvez trouver la dernière version stable du jeu sur cette page

Une version compilée est également sur la branche dev du Gitea du projet. Attention il s'agit de la dernière version instable.

Si vous avez des remarques d'améliorations, je suis preneur !

Fichier joint


Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9 Suivante
Shadow15510 En ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 06/11/2018 19:15 | #


je pense que oui ! de plus je vais d'abord commencer la version monochrome : j'ai pas de Graph 90+
Lephe j’essaierai de ne pas oublier

Je fait que des bêtises j’ai trouvé un spirite d’avion qui rend super bien je crois que l’on peut le mettre à l’ecran en négatif du fond ML_bmp_xor non ?

Ajouté le 15/11/2018 à 21:20 :
J'ai une question sur le SDK : j'ai besoin de savoir si par défaut l'unité d'angle est en degré ou en radiant et si elle est en radiant comment modifier ce réglages ?
Merci d'avance
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 17/11/2018 08:32 | #


Oups, j'ai raté des messages sur ce topic moi.

Shadow15510 a écrit :
Je fait que des bêtises j’ai trouvé un spirite d’avion qui rend super bien je crois que l’on peut le mettre à l’ecran en négatif du fond ML_bmp_xor non ?

Oui c'est ça, à l'endroit où les pixels de l'avion sont noirs les pixels du fond changeront de couleur, ce qui fait un effet négatif.

Shadow15510 a écrit :
J'ai une question sur le SDK : j'ai besoin de savoir si par défaut l'unité d'angle est en degré ou en radiant et si elle est en radiant comment modifier ce réglages ?

Ce n'est pas un réglage, les fonctions mathématiques du langage C sont en radians uniquement, et si tu veux passer en degrés tu ne peux que le faire toi-même :

double sin_deg(double deg)
{
    return sin(deg * M_PI / 180);
}

Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Shadow15510 En ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 17/11/2018 12:35 | #


Ok merci beaucoup !
J'explique pourquoi, dans Plague inc il y a des cercle représentatif du pourcentage de morts et d'infectés que j'aimerais re-faire, j'ai trouver la formule (avec le cercle trigonométrique) mais il fonctionne pour les angles en degrés...
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lepianoteur Hors ligne Membre Points: 217 Défis: 0 Message

Citer : Posté le 17/11/2018 13:08 | #


Shadow15510 tu fais une version C du jeu ? j'ai pas vraiment compris ( enfin je connais très bien le jeu même un grand joueur )
*pat pat pat pat pat pat tap tap pat* je pianote
Shadow15510 En ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 17/11/2018 18:38 | #


En fait j'ai fais une version BASIC toute nulle du coup je le re-fait en C Si tu connais bien le jeu tu pourra sans doute m'aider à ressembler au jeu (je ne l'ai pas...)

Ajouté le 15/12/2018 à 15:46 :
Non ! Ce projet n'est pas mort !! ( pas encore )
Bon alors j'ai un problème : Je ne sais pas gérer les infections et les morts du jeu de manières correcte...

Au début je suis partit sur un modèle simpliste : J'ai x points d'infection, donc j'ai x % d'infecté en plus chaque jour >_<' modèle qui s'est très rapidement révélé complètement à côté de la plaque vous vous en doutez...

J'ai eu alors l'idée d'insérer un nombre qui ralentirait le nombre d'infectés et de morts mais ça ne ressemble toujours pas au jeu...
Du coup j'aimerais l'avis d'un grand joueur (au moins quelqu'un qui connait bien le jeu ) : Comment évoluent les morts et les infectées dans le jeu par rapport aux points d'infections et de létalité ?

Merci d'avance
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 Message

Citer : Posté le 15/12/2018 16:02 | #


Je suis pas une joueuse de plague.inc, mais si tu t'intéresses à créer un système réaliste pour simuler une maladie, je ne peux que te conseiller de jeter un coup d'œil à la partie deux du sujet de concours suivant

https://www.prepamag.fr/concours/pdf/enonces.pdf/2016/MP_INFO_MINES_2_2016.enonce.pdf

Il est pas spécialement complexe si tu as les bonnes notions mathématiques, mais n'hésite pas à demander des informations
Shadow15510 En ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 15/12/2018 16:03 | #


Ok merci beaucoup
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 15/12/2018 16:04 | #


Ooh, j'avais ça en tête (le modèle à quatre équa diffs) mais sans réussir à remettre la main dessus ! Bien joué !
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 Message

Citer : Posté le 15/12/2018 16:25 | #


C'est vraiment parce que je l'ai fait pendant mes révisions et que dans mes souvenirs, il abordait le sujet de manière « assez » simple
Par contre, je n'ai plus la correction (enfin si, mais enterrée sous dans une pile de deux ans de cours de prépa >_< ) et l'écosystème qui entoure les corrections des énoncés de prépas est assez malsain, donc pas de correction au propre, desolée...
Shadow15510 En ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 15/12/2018 16:32 | #


J'essaierais de comprendre alors... Je ne suis qu'en première S mais je verrais ça

Ajouté le 18/12/2018 à 17:23 :
Alors >_<' comment vous dire... j'ai très bien compris : « CONCOURS 2016 » mais alors après... J'ai carrément rien bité en fait on parle presque pas de code et quand on en parle c'est des mises en application de techniques a priori sensées être acquises... ^^' Bref... je n'ai rien compris, je cherche juste une formule pratique : Je donne les coefficients de propagation et de mortalité avec la population saine, infectées, et morte et la formule calcule les infectés et les morts...

Par exemple j'ai un coefficient d'infection qui varie entre 0 et 100, et une population initiale saine de 10 millions d'habitants. J'ai essayé de faire un pourcentage mais c'est trop simpliste et pas précis, se dire que le coefficient est le nombre de personnes infectés chaque jour rencontre le même problème,... Je n'arrive à aucune simulation concluante... De plus je ne veux pas que les personnes qui guérissent soient immunisées, enfin bref... Si vous trouvez un site où je peux trouver des modèles potables merci d'avance... Je cherche de mon côté !
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 18/12/2018 19:18 | # | Fichier joint


En gros, c'est ce système là qui t'intéresse...


Tu as quatre classes de gens, et les quatre égalités ici te disent à quel vitesse varie le taux de chacun en fonction de la valeur des autres. Si tu ne veux pas que tous les guéris soient immunisés, passent une partie des infectés dans la catégorie S au lieu de I, par exemple pour a = a1 + a2 tu mets :

dS(t)/dt = -rS(t)I(t) + a2(t)
dR(t)/dt = a1 I(t)

Tu vois que j'ai réparti les infectés en proportion a1 sur les immunisés et en proportion a2 sur les sains...

Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Shadow15510 En ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 18/12/2018 19:42 | #


Oh... merci merci beaucoup !

C'est super ça Donc a1 et a2 représente mes taux d'infection et de mortalité alors ?

récapitulons :
S = Pop. saine
I = Pop. infectée
R = Pop. immunisée
D = Pop décédée
t = temps au jour J actuel
a1 = taux de contagion (varie entre 0 et 1)
a2 = taux de mortalité (varie entre 0 et 0,10)

Donc il me manque "d" "r" et "b" Du coup je comprends à peu près comment ça marche en théorie, mais je ne vois pas comment le coder...
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 18/12/2018 19:53 | #


En gros a1 représente le taux de guérison/immunisation parmis les infectés, et a2 représente le taux de guérisons sans immunisation. a1 + a2 ≤ 1 et dans l'ensemble tu veux que ce soit plus petit que 1 : en effet 1 - (a1 + a2) représente le taux de... rester infecté quand tu l'es déjà.

Le taux de contagion c'est r, car tu vois qu'une proportion rI(t) de S(t) part dans I(t). Il faut l'interpréter de cette façon : plus le taux de contagion est élevé, plus il y a de gens infectés, et plus le virus se propage vite : en effet, avec beaucoup de gens infectés le risque d'être au contact du virus augmente !

Enfin le taux de mortalité est b, tu le vois car une proportion b des infectés meurt régulièrement.

Ça va jusque-là ? Je peux t'expliquer comment le coder après !
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Shadow15510 En ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 18/12/2018 20:22 | #


Okay... donc r taux de contagion, b taux de mortalité : "létalité"
"a" en quelques sorte c'est la probabilité qu'une personne infecté guérisse donc je peut inputer ça aux remède ce qui m'embête toujours c'est "d" et "dt" je ne sais pas ce que ça signifie...

Merci beaucoup de ton aide pour le code je n'y suis pas encore tout à fait... je préfère avoir des brouillons bien fait

"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 18/12/2018 20:24 | #


Ah oui, je t'ai pas dit... c'est la dérivée ! Ça indique la vitesse à laquelle le nombre de gens dans chaque classe varie. Si la valeur est positive, ça grimpe... si elle est négative, ça descend.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 Message

Citer : Posté le 18/12/2018 20:24 | #


En gros, ce sont des notation mathématiques pour la dérivée
dS(t)/dt est donc l'évolution de la population saine sur un petit intervalles de temps (e.g. une journée)
Shadow15510 En ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 18/12/2018 21:30 | #


Ah... ok la dérivée... du coup c'est juste une indication mathématique pour appeler l'expression du coup ça ne changeras pas les calculs c'est cela ? Merci encore
Juste un dernière question : le S(t) c'est la pop saine en fonction du temps mais c'est juste le nombre de personne saine ? c'est pas une fonction ?
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 18/12/2018 21:50 | #


Eh bien c'est une fonction... du temps. Mais dans ton programme, comme tu ne t'intéresses qu'à un instant à la fois, tu auras dans ta variable la valeur S(t).

Ensuite, comme tu connais la dérivée de S en fonction du temps, tu pourras la calculer au temps présent et en déduire une estimation de ce que vaudra S à un temps plus lointain : S(t + Δt). Et donc dans ta boucle principale tu mettras à jour ta variable, qui avait contenait S(t), et maintenant contient S(t + Δt).
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 Message

Citer : Posté le 18/12/2018 21:59 | #


En faisant gaffe aux arrondis, sinon des gens vont spontanément apparaître ou disparaître (mais tu verras ça plus tard)
Shadow15510 En ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 09/02/2019 13:25 | #


Je me replonge avec difficulté dans mes brouillons... Avec un nouveau problème : j'ai les équations okay... j'ai essayer d'avoir une idée de mon code, une sorte de plan quoi…
Mais je bloque à cet endroit : mes équations pour les calculs des infectés, des morts,... etc, avez vous une idée de comment coder ça... Parce que moi là je suis un peu dépassé...
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 09/02/2019 17:22 | #


Ça touche à de l'analyse numérique. Voici l'idée.

Tu as les valeurs à l'instant t : A(t), B(t), etc. Tu calcules les dérivées A'(t), B'(t)... dont tu connais les formules.

Ensuite tu dis « je simule pour un pas de temps dt » et tu poses A(t + dt) = A(t) + dt * A'(t) en espérant que la dérivée ne change pas trop pendant cette durée. Si dt est assez petit, c'est précis.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 104 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd