
|
| | | Premier problème [RESOLU] | |
| |
| Auteur | Message |
|---|
kimerafusion Possedé par Mark Overmars


Nombre de messages: 1622 Programme utilisé (Gm/RmXp/...): gamemaker 7.0 pro, code::blocks, adobe dreamweaver, gnu-gcc Etudes: futur ingénieur logiciel (j'aimerais bien bosser sur de la nanotechnologie, biotechnologie ou autres), seconde GT Loisirs: jeux-vidéos - programmation (C/C++, Qt, SDL) Date d'inscription: 14/10/2008
 | Sujet: Re: Premier problème [RESOLU] Mer 6 Mai - 15:35 | |
| En fait, si je voulais pas utiliser les pointeurs, c'est parce que je savais pas m'en servir  Je viens de m'envoyer le tuto du site du zéro, et voici par quoi sont remplacées mes fonctions dans mon newperso.cpp : | Code: | void newPerso(perso *persoatk, perso *persodef, perso *persovit, perso *persocc, perso *persopv) { *persoatk = (rand() % (5 - 2 + 1)) + 2; *persodef = (rand() % (4 - 1 + 1)) + 1; *persovit = (rand() % (10 - 3 + 1)) + 3; *persocc = (rand() % (100 - 25 + 1)) + 25; *persopv = perso.pvmax = (rand() % (10 - 5 + 1)) + 5; } |
voici son prototype dans mon jdrH.h ;
| Code: | void newPerso(perso *persoatk, perso *persodef, perso *persovit, perso *persocc, perso *persopv); |
et voici ce qu'est devenu mon main.h :
| Code: | perso perso; monstre monstre; int *persoatk = &perso.atk, *persodef = &perso.def, *persovit = &perso.vit, *persocc = &perso.cc, persopv = &perso.pvmax; void newPerso(&perso); //On lance les fonctions de création du personnage cout << perso.atk << " " << perso.def << " " << perso.vit << " " << perso.cc << " " << perso.pvmax << endl; |
Mais voici mon log de compil (un paquet d'erreurs...) :
| Code: | D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp||In function `void newPerso(perso*, perso*, perso*, perso*, perso*)':| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|6|error: no match for 'operator=' in '*persoatk = ((rand() % 4) + 2)'| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\jdrH.H|6|note: candidates are: perso& perso::operator=(const perso&)| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|7|error: no match for 'operator=' in '*persodef = ((rand() % 4) + 1)'| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\jdrH.H|6|note: candidates are: perso& perso::operator=(const perso&)| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|8|error: no match for 'operator=' in '*persovit = ((rand() % 8) + 3)'| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\jdrH.H|6|note: candidates are: perso& perso::operator=(const perso&)| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|9|error: no match for 'operator=' in '*persocc = ((rand() % 76) + 25)'| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\jdrH.H|6|note: candidates are: perso& perso::operator=(const perso&)| D:\Mes Documents\Projets C et C++\JDR sur console en C++ 1.0\newperso.cpp|10|error: expected primary-expression before '.' token| ||=== Build finished: 5 errors, 0 warnings ===| |
Merci |
|  | | Rayman3640 Experimenté


Nombre de messages: 429 Age: 15 Programme utilisé (Gm/RmXp/...): GM7 Pro/gcc/Vim/RM2003/ Etudes: Collégien Loisirs: Informatique, tennis, lecture, écriture, jeux vidéo, handball Date d'inscription: 29/04/2008
 | Sujet: Re: Premier problème [RESOLU] Mer 6 Mai - 15:59 | |
| Est-ce que tu as déjà lu le chapitre sur les structures (je parle plutôt de la partie sur les pointeurs de structures) ? Le mieux est d'envoyer un pointeur sur structure à la fonction. De cette façon, pas besoin d'envoyer un pointeur sur ATK, un pointeur sur DEF, etc mais UN SEUL pointeur sur la structure, qui permet de modifier les valeurs de toutes les sous-variables(ATQ, DEF, etc). Le code sera plus clair de cette façon. Voilà le prototype : | Code: | void newPerso(perso *perso);
|
Rien de spécial, juste un pointeur sur structure.
Ensuite, le code d'appel de la fonction newPerso :
| Code: | perso perso; newPerso(&perso); cout << perso.atk << " " << perso.def << " " << perso.vit << " " << perso.cc << " " << perso.pvmax << endl; |
On envoie juste l'adresse de la structure perso à la fonction newPerso, puis on affiche les valeurs des variables de la structure (je ne fais que du C, et pas du C++ donc j'ai pu faire une erreur pour l'affichage des valeurs).
Enfin, la fonction newPerso :
| Code: | void newPerso(perso *perso) { perso->atk = (rand() % (5 - 2 + 1)) + 2; perso->def = (rand() % (4 - 1 + 1)) + 1; perso->vit = (rand() % (10 - 3 + 1)) + 3; //etc }
| Le perso->atk est un pointeur sur la sous-variable atk de la strucuture perso. C'est l'équivalent de *var sur une variable normale._________________ Supra-Quest, un jeu vidéo concentrant une aventure épique, un monde presque sans limites à découvrir et un système de combat novateur ! N'oubliez pas de visiter le SQ-Devblog, le blog de développement du jeu !
Dernière édition par Rayman3640 le Mer 6 Mai - 18:24, édité 1 fois |
|  | | kimerafusion Possedé par Mark Overmars


Nombre de messages: 1622 Programme utilisé (Gm/RmXp/...): gamemaker 7.0 pro, code::blocks, adobe dreamweaver, gnu-gcc Etudes: futur ingénieur logiciel (j'aimerais bien bosser sur de la nanotechnologie, biotechnologie ou autres), seconde GT Loisirs: jeux-vidéos - programmation (C/C++, Qt, SDL) Date d'inscription: 14/10/2008
 | Sujet: Re: Premier problème [RESOLU] Mer 6 Mai - 17:11 | |
| ah ok merci beaucoup tu viens de m'apprendre un super truc je teste ce que tu viens de me dire tout de suite! (j'édit pour dire si ça marche ou pas) EDIT : YOUPIIIIE! ça marche! merci beaucoup tu sera dans les crédits  je met problème résolu! |
|  | | Rayman3640 Experimenté


Nombre de messages: 429 Age: 15 Programme utilisé (Gm/RmXp/...): GM7 Pro/gcc/Vim/RM2003/ Etudes: Collégien Loisirs: Informatique, tennis, lecture, écriture, jeux vidéo, handball Date d'inscription: 29/04/2008
 | Sujet: Re: Premier problème [RESOLU] Mer 6 Mai - 18:25 | |
| De rien !  Et bonne chance pour la suite de ton projet de RPG en console !  _________________ Supra-Quest, un jeu vidéo concentrant une aventure épique, un monde presque sans limites à découvrir et un système de combat novateur ! N'oubliez pas de visiter le SQ-Devblog, le blog de développement du jeu ! |
|  | | kimerafusion Possedé par Mark Overmars


Nombre de messages: 1622 Programme utilisé (Gm/RmXp/...): gamemaker 7.0 pro, code::blocks, adobe dreamweaver, gnu-gcc Etudes: futur ingénieur logiciel (j'aimerais bien bosser sur de la nanotechnologie, biotechnologie ou autres), seconde GT Loisirs: jeux-vidéos - programmation (C/C++, Qt, SDL) Date d'inscription: 14/10/2008
 | |  | | Xierra54 Admin - .: el traductor :.


Nombre de messages: 8504 Age: 50 Programme utilisé (Gm/RmXp/...): GM (6.1 et 7 enregistrées), Purebasic (démo) Etudes: Supérieures Loisirs: ordinateur Date d'inscription: 13/08/2005
 | Sujet: Re: Premier problème [RESOLU] Jeu 7 Mai - 2:24 | |
| Je pense aussi comme dit plus haut qu'il est "naturel" ici d'utiliser les pointeurs pour pointer dans tes fonctions sur tes structures. Le plus simple pour toi est de faire en marge un petit prog. en C et tester une seule fonction simple avec un pointeur sur une de tes structures (ceci afin de bien comprendre la syntaxe et surtout comment cela marche) A+ |
|  | | Fireranger Possedé par Mark Overmars


Nombre de messages: 1360 Age: 16 Programme utilisé (Gm/RmXp/...): Game Maker 7 PRO, Visual Basic 9.0, Visual C++ et Code::Blocks Date d'inscription: 22/11/2007
 | |  | | kimerafusion Possedé par Mark Overmars


Nombre de messages: 1622 Programme utilisé (Gm/RmXp/...): gamemaker 7.0 pro, code::blocks, adobe dreamweaver, gnu-gcc Etudes: futur ingénieur logiciel (j'aimerais bien bosser sur de la nanotechnologie, biotechnologie ou autres), seconde GT Loisirs: jeux-vidéos - programmation (C/C++, Qt, SDL) Date d'inscription: 14/10/2008
 | Sujet: Re: Premier problème [RESOLU] Jeu 7 Mai - 17:08 | |
| oui oui, vous inquiétez pas, j'ai très bien compris comment fonctionnent les pointeurs, la preuve : j'ai presque fini de programmer les combats  |
|  | | Xierra54 Admin - .: el traductor :.


Nombre de messages: 8504 Age: 50 Programme utilisé (Gm/RmXp/...): GM (6.1 et 7 enregistrées), Purebasic (démo) Etudes: Supérieures Loisirs: ordinateur Date d'inscription: 13/08/2005
 | Sujet: Re: Premier problème [RESOLU] Ven 8 Mai - 1:40 | |
| Parfait alors ! Juste une précision qui sera peut-être utile à certains voulant débuter dans la programmation 'classique' . Un pointeur n'est ni plus ni moins qu'une variable particulière contenant comme valeur une adresse en guise de donnée et non pas simplement une valeur scalaire comme un bête entier, chaine, etc. C'est ainsi qu'en assembleur, on simulait dans le passé l'accès à des structures de données en mémoire qui, en langage assembleur, n'existaient pas à l'origine du langage binaire (aujourd'hui, tout macro-assembleur/editeur propose la gestion des structures) En ayant cela en tête, cela facilite beaucoup je trouve la compréhension des pointeurs et encore plus la notion de pointeurs doubles (c'est à dire une variable contenant comme valeur une adresse pointant sur une autre adresse) Aujourd'hui, je pense que d'avoir commencé par le langage assembleur me facilite la compréhension de notions informatiques comme les pointeurs, les structures, les tableaux, les listes chainées, etc. qui ne sont ni plus ni moins des implémentations de données dans la mémoire de l'ordinateur (implémentations plus ou moins compliquées à comprendre et à gérer selon leur type et/ou l'usage que l'on en fait) Un exemple typique en assembleur d'un programme "qui se mord la queue" et donc pas à suivre (= plantage assuré ou alors faut bien savoir ce que l'on fait !) est celui d'un programme assembleur qui tout simplement modifie son code binaire en mémoire du PC lors de son exécution (certains virus utilisaient beaucoup voire utilisent toujours cette méthode afin de se cacher des programmes anti-virus) Je crois d'ailleurs que de tels programmes sont dits polymorphes. A+ |
|  | | | | Premier problème [RESOLU] | |
|
| Page 2 sur 2 | Aller à la page : 1, 2 |
| | Permission de ce forum: | Vous pouvez répondre aux sujets dans ce forum
| |
| |
| |
|