Associer un chiffre a un mot
Résolu/Fermé
BadGamer
Messages postés
506
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
25 décembre 2014
-
13 janv. 2013 à 14:11
BadGamer Messages postés 506 Date d'inscription mercredi 24 novembre 2010 Statut Membre Dernière intervention 25 décembre 2014 - 15 janv. 2013 à 21:04
BadGamer Messages postés 506 Date d'inscription mercredi 24 novembre 2010 Statut Membre Dernière intervention 25 décembre 2014 - 15 janv. 2013 à 21:04
A voir également:
- Associer un chiffre a un mot
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Dans le texte, un seul mot a réellement été écrit en lettres capitales (majuscules). quel est ce mot ? ✓ - Forum Word
- Mot de passe administrateur freebox ✓ - Forum Freebox
- Mettre un mot de passe sur un dossier - Guide
- Piratage facebook changer mot de passe - Guide
3 réponses
[Dal]
Messages postés
6062
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
24 mars 2023
1 044
Modifié par [Dal] le 14/01/2013 à 12:11
Modifié par [Dal] le 14/01/2013 à 12:11
Salut BadGamer,
Quelque chose comme cela devrait t'aider à commencer ce que tu veux faire, si j'ai bien compris (je ne connais pas Call of Duty) :
Après, si "AccessoirePrincipale" doit contenir un accessoire qui appartient à une "arme" donnée, tu devrais sans doutes créer une structure struct_armes, qui contient les différentes armes, le nombre d'accessoires, et la liste de leurs accessoires sous la forme d'un tableau de chaînes de caractères.
Si l'arme Principale ne peut être la même que l'arme Secondaire, tu dois effectuer une vérification du nombre aléatoire tiré.
etc., selon les règles du système de création de classes.
Dal
Quelque chose comme cela devrait t'aider à commencer ce que tu veux faire, si j'ai bien compris (je ne connais pas Call of Duty) :
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #define MAX_LEN_ST 100 typedef struct struct_classe { char Principale[MAX_LEN_ST]; char AccessoirePrincipale[MAX_LEN_ST]; char Secondaire[MAX_LEN_ST]; char AccesoireSecondaire[MAX_LEN_ST]; char Atout1[MAX_LEN_ST]; char Atout2[MAX_LEN_ST]; char Atout3[MAX_LEN_ST]; char Mortelle[MAX_LEN_ST]; char Tactique[MAX_LEN_ST]; } CLASSE; #define NB_MAX_ARMES 2 char *arme[] = { "mitrailette", "sniper" }; int main(void) { /* à appeler une seule fois, pour initialiser le générateur de * nombres aléatoires */ srand(time(NULL )); /* Création d'une "CLASSE" */ CLASSE ma_classe; /* sélection arme Principale */ int principale = rand() % NB_MAX_ARMES; strncpy(ma_classe.Principale, arme[principale], sizeof(ma_classe.Principale)); /* etc. autres sélections */ /* affichage résultat */ printf("Ma classe :\nPrincipale = %s", ma_classe.Principale); /* terminer */ return 0; }
Après, si "AccessoirePrincipale" doit contenir un accessoire qui appartient à une "arme" donnée, tu devrais sans doutes créer une structure struct_armes, qui contient les différentes armes, le nombre d'accessoires, et la liste de leurs accessoires sous la forme d'un tableau de chaînes de caractères.
Si l'arme Principale ne peut être la même que l'arme Secondaire, tu dois effectuer une vérification du nombre aléatoire tiré.
etc., selon les règles du système de création de classes.
Dal
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 817
14 janv. 2013 à 21:19
14 janv. 2013 à 21:19
Quand tu parles de classe, tu entends les classes en C++ ?
Car les classes n'existent pas en C. Dans ce cas, il faut utiliser les structures comme fait dans le code de [Dal]
Car les classes n'existent pas en C. Dans ce cas, il faut utiliser les structures comme fait dans le code de [Dal]
BadGamer
Messages postés
506
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
25 décembre 2014
132
15 janv. 2013 à 18:33
15 janv. 2013 à 18:33
Je parle de structure je n'ai pas encore vu le C++
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 817
15 janv. 2013 à 19:46
15 janv. 2013 à 19:46
D'accord, dans ce cas, oublie le mot "classe" ^^. En programmation, "classe" désigne un concept bien précis en programmation orientée objet.
[Dal]
Messages postés
6062
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
24 mars 2023
1 044
15 janv. 2013 à 19:50
15 janv. 2013 à 19:50
En fait, je pense que ce mot vient de son jeu en ligne, où ils parlent de classes de personnages :
https://callofduty.fandom.com/wiki/Create-A-Class
Dal
https://callofduty.fandom.com/wiki/Create-A-Class
Dal
BadGamer
Messages postés
506
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
25 décembre 2014
132
15 janv. 2013 à 19:52
15 janv. 2013 à 19:52
Ah mais oui quand je dit une classe je parle du jeu désolé !!
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 817
15 janv. 2013 à 19:56
15 janv. 2013 à 19:56
Au temps pour moi alors ^^.
BadGamer
Messages postés
506
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
25 décembre 2014
132
15 janv. 2013 à 18:37
15 janv. 2013 à 18:37
J'ai mis 100 pour ne pas me prendre la tete, avec 30 ça devrait etre bon mais bon voila on est pas a quelques octets ^^
Le passage que je ne comprend pas c'est:
Car le rand() % NB_MAX_ARMES; vas juste générer un nombre aléatoire et apres justement ce que je ne sait pas c'est comment associer ce nombre aléatoire au mot...pourrais tu detailler juste ce passage stp car le reste c'est bon je maîtrise c'est juste l'association du nombre aléatoire a une arme =)
Merci d'avance
Le passage que je ne comprend pas c'est:
int principale = rand() % NB_MAX_ARMES; strncpy(ma_classe.Principale, arme[principale], sizeof(ma_classe.Principale)); /* etc. autres sélections */
Car le rand() % NB_MAX_ARMES; vas juste générer un nombre aléatoire et apres justement ce que je ne sait pas c'est comment associer ce nombre aléatoire au mot...pourrais tu detailler juste ce passage stp car le reste c'est bon je maîtrise c'est juste l'association du nombre aléatoire a une arme =)
Merci d'avance
[Dal]
Messages postés
6062
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
24 mars 2023
1 044
Modifié par [Dal] le 15/01/2013 à 19:43
Modifié par [Dal] le 15/01/2013 à 19:43
Bon, on va décomposer.
1.
Signifie que arme[0] contient "mitrailette" et arme[1] contient "sniper".
2.
Comme on a définit NB_MAX_ARMES à 2
génère un nombre aléatoire de 0 à NB_MAX_ARMES - 1, donc, ici, de 0 à 1, et place ce nombre dans la variable "principale".
3.
renvoie donc à l'arme choisie aléatoirement.
4.
copie la chaîne de caractères dans ma_classe.Principale
5.
(re-)termine la chaîne si cela était nécessaire (cf. commentaire de fiddy).
Dal
1.
char *arme[] = { "mitrailette", "sniper" };
Signifie que arme[0] contient "mitrailette" et arme[1] contient "sniper".
2.
Comme on a définit NB_MAX_ARMES à 2
int principale = rand() % NB_MAX_ARMES;
génère un nombre aléatoire de 0 à NB_MAX_ARMES - 1, donc, ici, de 0 à 1, et place ce nombre dans la variable "principale".
3.
arme[principale]
renvoie donc à l'arme choisie aléatoirement.
4.
strncpy(ma_classe.Principale, arme[principale], sizeof(ma_classe.Principale));
copie la chaîne de caractères dans ma_classe.Principale
5.
ma_classe.Principale[sizeof(ma_classe.Principale)] = '\0';
(re-)termine la chaîne si cela était nécessaire (cf. commentaire de fiddy).
Dal
BadGamer
Messages postés
506
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
25 décembre 2014
132
Modifié par BadGamer le 15/01/2013 à 19:44
Modifié par BadGamer le 15/01/2013 à 19:44
Ah d'accord mais j'avais essayé un truc du genre char *arme[] =
{ "mitrailette", "sniper" }; sauf que je n'arrivais pas a mettre plusieurs mot dans un tableau ! Car une chaine est elle meme un tableau en quelque sorte...on fait un tableau 2D la ?
{ "mitrailette", "sniper" }; sauf que je n'arrivais pas a mettre plusieurs mot dans un tableau ! Car une chaine est elle meme un tableau en quelque sorte...on fait un tableau 2D la ?
[Dal]
Messages postés
6062
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
24 mars 2023
1 044
15 janv. 2013 à 20:04
15 janv. 2013 à 20:04
char *arme[] définit un tableau de pointeurs sur des chars (lis la déclaration de droite à gauche).
Les indices permettent, en fait, de passer d'un pointeur à un autre.
Ce n'est pas réellement un tableau 2D de ce point de vue là, car le tableau arme ne contient que des pointeurs.
Certes, les pointeurs pointent vers des espaces mémoires alloués par le compilateur où se trouvent des char terminés par \0, alors, j'imagine qu'on peut en discuter :-)
Dal
Les indices permettent, en fait, de passer d'un pointeur à un autre.
Ce n'est pas réellement un tableau 2D de ce point de vue là, car le tableau arme ne contient que des pointeurs.
Certes, les pointeurs pointent vers des espaces mémoires alloués par le compilateur où se trouvent des char terminés par \0, alors, j'imagine qu'on peut en discuter :-)
Dal
BadGamer
Messages postés
506
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
25 décembre 2014
132
15 janv. 2013 à 21:04
15 janv. 2013 à 21:04
Ah d'accord super c'est cette notion que je ne gere pas ! Je vais aller regarder deux trois cours merci =)
14 janv. 2013 à 21:16
15 janv. 2013 à 09:47
Dans le cas présent, on sait que les "armes" (qui sont codées en dur dans le tableau), sont des chaînes dont la taille ne dépassent pas 100 octets, y compris le caractère \0, donc 99 caractères, le caractère \0 est déjà copié, et une nouvelle copie est redondante.
C'est la supposition (implicite) que j'ai faite en me disant que BadGamer avait vu large en dimensionnant à 100 ses chaînes. Mais Fiddy a sans doutes raison qu'une ceinture de sécurité est préférable à un grand choc, au cas où un jour tu mettrais dans ton tableau une "méga-super-arme-absolue-de-la-destruction-de-la-mort-qui-tue-apocalyptique-qui-fait-vraiment-peur-et-qui-fait-très-mal" :-D (ou si les armes sont saisies par l'utilisateur à l'avenir).
Alors, on peut effectivement faire dans ce cas :
Même si la chaîne est déjà terminée avant, cela ne fait rien, et le code est plus sûr pour l'avenir.
Dal
15 janv. 2013 à 19:45
C'est effectivement un réflexe à prendre lorsque l'on utilise strncpy().