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 » Tamagotchi ou la gestion du temps en C
Shadow15510 Hors ligne Administrateur Points: 5498 Défis: 18 Message

Tamagotchi ou la gestion du temps en C

Posté le 17/08/2018 14:37

Bonjour à tous !!
Oui oui je sais je ferais mieux d'arrêter les conneries et de terminer mes anciens projets... Mais je le avance petit à petit dans l'ombre et le silence (mais si c'est vrai !)
Désireux de progresser en C j'ai eu l'idée de me familiariser avec le système de tics inclus dans la calto et qui permet de mesurer le temps (comme vous en savez plus que moi sur le sujet je demanderais sans doute un peu d'aide ) oui oui c'est bon : j'ai déjà vu, lu signé et approuvé le tuto qui en parle.
Passons au cœur du projet : vous connaissez tous les Tamagotchi : ces petites consoles vendu au Japon vers la moitié des années 90 (1996 au Japon et 97 en Europe pour être précis). Le but et de chouchouter, pouponner et nourrir un petit animal virtuel dans le but de le faire... vivre... oui oui c'est ça le but ultime par le tuer en un minimum de temps... je vois votre déception d'ici.
Bon pour mon premier jet je vais essayer de faire un truc le plus basique possible (mais je le fait en C) J'ai déjà mis sur pied mon systèmes de points et tout je fais mes sprites prochaines étape : le code.

J'ai hiérarchisé mes idées en plusieurs catégories :
les Actions
On fait des actions grâce au touche F1~F5
F1 : lui donner à manger
F2 : aller au Wc (j'invente rien c'est dans le jeu original...)
F3 : le laver
F4 : jouer
F5 : le faire dormir
Voila pour les Actions disponibles

les Points
Je les ai subdivisé en 5 catégories :
-Pts d'équilibre (eq) correspond à l'équilibre de son alimentation
-Pts d'énergie (en) rien d'extraordinaire vous savez à quoi ça sert l'énergie...
-Pts de faim (f) correspond à la satiété : plus on a de Pts de faim moins il a faim...
-Pts d'humeur (hu) Si il en a beaucoup il est sympa sinon il te fait la gueule
-Pts d'hygiène (hy) Comprenez la propreté.

gestion du temps
Avec les temps les points évolue.
Les points :
-d'énergie
-de faim
-d'humeur
-d'hygiène
perdent 2 par heures

Le temps intervient également dans les envies du moment attention : ces envies relèvent non pas des besoins de l'animal mais de sa "volonté" ainsi il aura envie :
-de manger toutes les heures
-de jouer toutes les deux heures
-d'aller au Wc toutes les 2h30
-de se laver toutes les 4 heures
-et de dormir toutes les 5 heures

les Stats
Elles seront composées de jauges aves un petit logo devant qui indiques quel points la jauge représente.
Un petit éclair pour l'énergie, un savon avec des bulles pour l'hygiène, une fourchette pour la faim, et une balance pour l'équilibre.
Les stats pourrons être appelées via [OPTN]

Manger
Cette action m'étant fort sympathique j'ai décider d'étayer les choix...
Le joueur pourra choisir entre plusieurs mets ayant chacun leurs bon et les mauvais points...
-Le bol de riz : eq+2 / en+80 / f+100 / hu-5 / hy-30
-le burger : eq-10 / en+80 / f+80 / hu+10 / hy-30
-le gâteau : eq-5 / en+50 / f+100 / hu+10 / hy-30
-la soupe : eq+10 / en+50 / f+80 / hu-5 / hy-30
-le lait : eq+5 / en+20 / f+20 / hu+5 / hy-30
-le soda : eq-2 / en+10 / f+10 / hu+5 / hy-30
Voila
Lorsque la touche F1 est pressée, le bord droit de l'image se décale vers la gauche ménageant ainsi un espace dans lequel vous aurez deux flèches de part et d'autre du logo de la nourriture place au milieu. En dessous le nom de la nourriture apparaitra et en haut un indication : "[F1]⇒Ok [F6]⇒Non"


les autre Actions et les Points
Toutes action interagissent avec les points :
-manger (déjà fait)
-aller au Wc : en-5 / hy+20
-jouer : eq+5 / en-20 / f-20 / hu+20 / hy-20
-dormir : en au max / f-80 / hu+60 / hy-60
-le laver : en-20 / f-20 / hu+20 / hy+80

les Jeux
Le menu des jeux se présente de la même manière que celui pour manger sauf que le logo est celui du jeu en question et le nom de la nourriture est remplacer par une règle succincte du jeu.
Exemple : le logo est une balle qui tombe et la règle est "Attrapez les balles".
Les points pourrait varier d'un jeu à l'autre mais je n'en suis pas là.
J'ajouterais surement "faire une balade" et "caresser" et pis après je m'en remet à vous

Dans les améliorations à venir noter que j'ai l'intention de mettre sur pied un système qui permet de faire communiquer les Tamagotchi entre eux comme les vrais...

Je pense que j'ai fait le tour de l'état du projet théorique actuel.



Etat du projet...
...en ruines

Le code de compatibilité SH4 doit être nettoyé
la créations de fonctions pour l'affichages des animations fait !
utilisation des matrices Inutile


Fichier joint


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

Citer : Posté le 21/08/2018 14:31 | # | Fichier joint


Pendant ce temps je "nettoie" mon code
Je mettrait à jour mon commentaire ci-dessus au fur et à mesure de mes avancées
Le dossier des sources est en PJ
"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

Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 21/08/2018 15:56 | #


Dark storm a écrit :
7. Ligne 1066. Le type qui a inventé la boucle for doit se retourner dans sa tombe.


Excellent !
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Shadow15510 Hors ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 21/08/2018 18:18 | #


Alors ce qui me manque :
les points 2 et 3 qui concernent le code pour la compatibilité SH4 : je ne sais pas quoi en faire...
des conseils et des techniques pour optimiser la taille des sprites
les fonctions pour les animations je ne voit pas trop comment il faut faire il doit me manquer quelques connaissances
Les tableaux de pointeurs, je vois ce que c'est mais je ne vois pas par quelles astuces je peux remplacer un switch par un tableau de pointeur
Les matrices faut tout m'expliquer je n'en ai jamais utiliser en C...
Bon voila... Je pense qu'après ça je pourrais nettoyer mon code et après on pourra s'occuper de la System Error...
"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: 24146 Défis: 170 Message

Citer : Posté le 21/08/2018 18:23 | #


des conseils et des techniques pour optimiser la taille des sprites

Tu les convertis bien à partir de fichiers bmp ou png avec un logiciel, non ? Si tu as du blanc dans le sprite final c'est qu'il y avait du blanc dans ton image d'origine. Coupe plus serré.

Les tableaux de pointeurs, je vois ce que c'est mais je ne vois pas par quelles astuces je peux remplacer un switch par un tableau de pointeur

Tu fais un tableau et tu utilises la variable sur laquelle tu faisais ton switch pour indexer le tableau :

const char *chats[6] = { chatnormal, chatgros, chatfatigue, chatmaigre, chatpascontent, chatsale };
ML_bmp_or(chats[animal], 39, 7, 50, 50);

Les matrices faut tout m'expliquer je n'en ai jamais utiliser en C...

Comme un tableau mais deux dimensions.

int matrix[2][3] = {{ 1, 2, 3 }, { 4, 5, 6 }};
/* | 1 2 3 |
   | 4 5 6 | */
matrix[0][0] = 7;
/* etc */

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

Citer : Posté le 21/08/2018 18:32 | #


Merci grâce aux tableaux j'ai fait les chats et les pensées !
"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

Massena Hors ligne Ancien rédacteur Points: 2219 Défis: 11 Message

Citer : Posté le 21/08/2018 19:00 | #


Y'a qu'un chat ?
Si tu veux rajouter d'autres animaux ( imaginaires ! ), je peut te donner pleeeein d'idées de graphisme.

Ajouté le 21/08/2018 à 19:01 :
En plus ils seront plus facile à concevoir qu'un chat !
Shadow15510 Hors ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 21/08/2018 19:08 | #


On va commencer petit hein ! pour chaque animal c'est 6 sprites en perspectives...
"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

Massena Hors ligne Ancien rédacteur Points: 2219 Défis: 11 Message

Citer : Posté le 21/08/2018 19:09 | #


En fait, tu peux copier / coller le code en changeant les Sprites ?
Shadow15510 Hors ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 21/08/2018 19:11 | #


heu... ça doit être jouable mais pour l'instant ça ne marche pas... et pis coder 6 sprites de chats c'est bien mignons mais si j'ai 3 animaux ça fait 18 sprites à coder pixels par pixels... chuis pas très chaud... Mais on verra après si tu veux.
"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

Massena Hors ligne Ancien rédacteur Points: 2219 Défis: 11 Message

Citer : Posté le 21/08/2018 19:14 | #


Ah ok j'oubliais qu'on devait créer le sprite pixel après pixel xD
Shadow15510 Hors ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 21/08/2018 19:16 | #


uhhhh... voui ce serait sympa que tu demandes au programme : "Dessines-moi un chat, une chien, une vache , et deux lapins" et il te dessines tout ça ...
"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: 24146 Défis: 170 Message

Citer : Posté le 21/08/2018 20:16 | #


Massena a écrit :
En fait, tu peux copier / coller le code en changeant les Sprites ?

Nooon, tu paramètres le code par les sprites enfin !
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Massena Hors ligne Ancien rédacteur Points: 2219 Défis: 11 Message

Citer : Posté le 21/08/2018 22:26 | #


NAAN mais j'pensais que tu mettais des Sprites avec monochrome.lib et puis tu les ressortais
Quoi ? C'est pas ça ?
Shadow15510 Hors ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 22/08/2018 15:53 | #


J'ai trouvé la taille d'un double : 5 octets
"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: 24146 Défis: 170 Message

Citer : Posté le 22/08/2018 16:23 | #


J'en doute fortement, puisque les tailles des variables sont toujours des puissances de deux...

Hint : la valeur que tu cherches peut être obtenue en écrivant sizeof(double).
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Shadow15510 Hors ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 22/08/2018 16:24 | #


alors c'est 8 octets

Ajouté le 22/08/2018 à 17:59 :
J'ai fait un trace into et j'arrive dès le lancement de l'add-in (comme sur ma calto) à une partie du code que voici :
le triangle jaune pointe sur la ligne n°1.

int InitializeSystem(int isAppli, unsigned short OptionNum) //ligne n°1
{
return INIT_ADDIN_APPLICATION(isAppli, OptionNum); //ligne n°2
}

"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

Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 22/08/2018 18:10 | #


Lephenixnoir a écrit :
J'en doute fortement, puisque les tailles des variables sont toujours des puissances de deux...

Hint : la valeur que tu cherches peut être obtenue en écrivant sizeof(double).


Shadow a écrit :
alors c'est 6 octets


Nope. Tu as le choix entre 2, 4 ou 8, voire 16. Je parie que c'est huit octets. Je ne connais en tous cas pas de puissance de deux qui égale 6
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Shadow15510 Hors ligne Administrateur Points: 5498 Défis: 18 Message

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


eh pss c'est corrigé !! en fait c'est 8
"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

Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 22/08/2018 18:13 | #


Ah, voila, tout va bien alors
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Lephenixnoir En ligne Administrateur Points: 24146 Défis: 170 Message

Citer : Posté le 22/08/2018 18:24 | #


Shadow15510 a écrit :
J'ai fait un trace into et j'arrive dès le lancement de l'add-in (comme sur ma calto) à une partie du code que voici :
le triangle jaune pointe sur la ligne n°1.
int InitializeSystem(int isAppli, unsigned short OptionNum) //ligne n°1
{
return INIT_ADDIN_APPLICATION(isAppli, OptionNum); //ligne n°2
}

Le problème ne vient pas de là. Cherche ailleurs.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Shadow15510 Hors ligne Administrateur Points: 5498 Défis: 18 Message

Citer : Posté le 22/08/2018 18:26 | #


Mais ça veut dire quoi "Address (R) " le problème vient de quoi j'ai touché à une partie mémoire protégée, j'ai fait quoi ??
"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

Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 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 109 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