Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Plague.inc ?
Shadow15510Hors ligneAdministrateurPoints: 3279 Défis: 15 Message

Plague.inc ?

Posté le 24/05/2018 18:17

Bon j'ai bien potassé mon BASIC sur ma calto J'ai trouvé une carte du monde géniale ici
Je me suis dit "bon ben y a pas de plague.inc alors je vais essayé en BASIC..."
Plague.inc est un jeu où le joueur incarne un virus (au début inoffensif... ) le but étant d'opérer les bonnes mutations sur le virus de manière à tuer le plus de monde possible mais ATTENTION : si vous devenez repérable trop tôt : les humains auront le temps de développer un vaccin : et là GAME OVER... C'est donc un jeu qui exigerait du joueur une stratégie élaborée pour gagner (je pensais rendre le jeu plus dur en raccourcissant les intervalles des nombre aléatoires qui définissent le nombre de jour entre le moment où l'on est découvert et le moment où on a perdu...)
Merci de me redire ce que vous en pensez et de m'aider...

Projet BASIC
Actuellement abandonné, le programme est libre
Avancement du projet :
menu principal
   100%

statistiques
   100%

mutations
   50%

Specificités
   100%

zoom
   100%

fin du jour intégration d'un temps artificiel accéleré par le joueur
   100%

Statistiques sur les pays (sous-menu appelé avec [OPTN] )
   80%

Vaccin
   80%

Points ADN
   80%

et voila


Je suis en train d'avancer le projet en C pour les calculatrices Monochromes Les mécaniques de jeux sont en place et les simulation de maladies sont parfaitement au points ! Il ne reste plus qu'a terminé les graphiques, sans doute revoir certaines choses, et enfin coder ! Ce jeu ce veut le plus proche possible de l'original et je m'en approche : maladies, mutations, points ADN,... mais aussi modèle épidémique réalistes et simple !

Avancement du projet en C :
Graphismes
   80%

Mécaniques de jeu
   90%

Gameplay et ergonomie (graphismes et code)
   10%

Code global
   2%

Codages des sous-menus
   1%

Boucle principale
   1%


To do list (merci Lephe ! ):

1* Déclare tes fonctions proprement ! Si elle ne retourne rien, alors mets void. Si elle ne prend pas d'arguments, mets void aussi. Fait !

6* Beaucoup trop de variables globales ! Surtout pour des choses comme unsigned char str[20] que tu pourrais (et devrais) redéclarer en local. 29 variables globales sur une seule ligne, wow.

3* Utiliser des noms à une lettre pour des variables globales est rédhibitoire !

5* Les lignes 262 à 430 sont terribles ! Pourquoi tu enchaînes les if et les switch au lieu de mettre tout ça dans des tableaux et des structures ?

4* Tu mélanges trop le dessin et la gestion des entrées.

2* Il n'y pas assez de fonctions ! Plein de tâches de dessins méritent d'être mises à l'écart dans deux fonctions à part.


Pages : Précédente1, 2, 3, 4, 5, 6, 7Suivante
Shadow15510Hors ligneAdministrateurPoints: 3279 Défis: 15 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

Moral
   85%
LephenixnoirHors ligneAdministrateurPoints: 14708 Défis: 136 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);
}
Shadow15510Hors ligneAdministrateurPoints: 3279 Défis: 15 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

Moral
   85%
LepianoteurHors ligneMembrePoints: 214 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
Shadow15510Hors ligneAdministrateurPoints: 3279 Défis: 15 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

Moral
   85%
HackcellHors ligneMembrePoints: 1027 Défis: 6 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
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Shadow15510Hors ligneAdministrateurPoints: 3279 Défis: 15 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

Moral
   85%
LephenixnoirHors ligneAdministrateurPoints: 14708 Défis: 136 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é !
HackcellHors ligneMembrePoints: 1027 Défis: 6 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...
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Shadow15510Hors ligneAdministrateurPoints: 3279 Défis: 15 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

Moral
   85%
LephenixnoirHors ligneAdministrateurPoints: 14708 Défis: 136 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...
Shadow15510Hors ligneAdministrateurPoints: 3279 Défis: 15 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

Moral
   85%
LephenixnoirHors ligneAdministrateurPoints: 14708 Défis: 136 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 !
Shadow15510Hors ligneAdministrateurPoints: 3279 Défis: 15 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

Moral
   85%
LephenixnoirHors ligneAdministrateurPoints: 14708 Défis: 136 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.
HackcellHors ligneMembrePoints: 1027 Défis: 6 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)
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Shadow15510Hors ligneAdministrateurPoints: 3279 Défis: 15 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

Moral
   85%
LephenixnoirHors ligneAdministrateurPoints: 14708 Défis: 136 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).
HackcellHors ligneMembrePoints: 1027 Défis: 6 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)
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Shadow15510Hors ligneAdministrateurPoints: 3279 Défis: 15 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

Moral
   85%
LephenixnoirHors ligneAdministrateurPoints: 14708 Défis: 136 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.
Pages : Précédente1, 2, 3, 4, 5, 6, 7Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 19 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