CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[c++] systeme de combat modifiable

BigGamer95
BigGamer95
Niveau 10
27 mai 2006 à 14:06:56

:merci: virtuality de lui avoir expliqué ^^

la j´avance encore, tj hors du compilo je note les fonction dont j´aurai besoin
la gestion de magie est theoriquement fini

void attaque(double Force) // calcule les dégats
totaux selon les degats de base et le lvl de l´attaquant
{
degat = degat + (degat*(Force/10));
degat = floor(degat);
}

id_mag_max = id_mag de la derniere magie + 1 // do
nc le nombre max de magie

for (id_mag=0;id_mag<id_mag_max;id_mag++) {
void magie[id_mag]()
{
//lecture de la ligne correspondant a l´id (ligne
1 pour id 0, 2 pour id 1, etc.)
//lecture de l´effet
//lecture du taux de reussite
//lecture de la cible
attaque(Force[id_perso]);

taux=(rand()%100)+1;
if (taux < (taux_mag-3)) degat*=2;
else if (taux>(taux_mag-3) && taux < taux_mag)
else degat = 0;

if (cible[id_mag]=0) PV[perso_tour] = PV[perso_to
ur] - degat;
else if (cible[id_mag]=1) PV[perso_adv] = PV[perso_adv] - degat;
else //affiché texte "erreur de cible dans la magi
e"
}
}

puis pour utilisé une magie :

magie[id_mag]();

pas testé et verifié, j´le fait un peu plus tard
pour la lecture des donnée pour l´instant je met /
/ mais apres j´vais voir comemnt ca marche vraiment et rajouté reelement a la fonction

apres la fonction objet, et ensuite je verrai lol

quand toute els fonction seron fini, je commencerai a prog le jeu lui meme

Virtuality
Virtuality
Niveau 8
27 mai 2006 à 16:49:33

Je te proposerai plutot de mettre dans ton fichier text le nombre de magies que le perso possède.
Un exemple, moi dans mon fichier de chargement des niveaux, je mettais un nombre (ex : 20) et par la suite, j´écrivais les 20 batiments à afficher, type et position.
Ca me permettait d´éviter de faire des tests inutils et long à faire (pour celui qui écrit la fonction bien sûr).
Je te conseil donc de faire comme ça, et le nombre dobjet, magies, etc. s´incrémentera à chaque fois que tu en rajoute.

Pour le reste, c´est difficile à dire, on a pas tout le contexte, mais sûrement que c´est bien conçu :)

Virtuality
Virtuality
Niveau 8
27 mai 2006 à 16:50:54

J´ai peur de m´être mal exprimé :
en fait ce nombre me permettait de savoir à l´avance le nombre de batiments, ennemis, etc. que j´allais devoir charger.
vala, plus court et plus clair :-)

BigGamer95
BigGamer95
Niveau 10
27 mai 2006 à 16:56:43

super comme idée, :merci:

donc en 1ere ligne, le nombre X d´objet/magie
puis il lit les X prochaine ligne avec leur information

:merci: pour cette idée

Virtuality
Virtuality
Niveau 8
27 mai 2006 à 17:24:50

C´est un plaisir :)

J´espère que tu ira au bout de ton projet :ok:

vexover
vexover
Niveau 9
27 mai 2006 à 20:06:55

Virtuality bouton profilbouton profil Posté le 27 mai 2006 à 13:03:42 Avertir un administrateur à propos de ce message !
Et pour répondre à ta question, non ça n´a rien à voir avec la RAM, ton programme s´occupe de ce genre d´allocations presque tout seul (pour faire simple, mais c´est pas tout à fait ça...)

Hé bien je ne sais pas en C++, mais en C, les allocations ne se font pas toutes seuls, on
donne le type de la variable, et sa valeur, mais
c´est vrai que l´on ne touche pas au numero de la case de RAM en mémoire. le ne vois donc pas l´intérêt d´un ID, si on peut deja donner un nom à une variable, à moins que ce soit reservé à l´affichage pendant le deroulement du programme ? ça doti surement être ça ^^

BigGamer95
BigGamer95
Niveau 10
27 mai 2006 à 20:10:15

non l´interet d´un id, c´est que vu le nombre de donné dans les doc .txt, ca simplifi enormement

au lieu de faire

effet[nom_du_truc]
je fait effet[10] par exemple

c´est pour ca que tout ce qui doit geré un grand nombre de donnée utilise ce systeme (les forum, les mmorpg, etc.)

Virtuality
Virtuality
Niveau 8
27 mai 2006 à 20:13:35

Non bien sûr c´est pareil en C++, mais ne sachant pas ton niveau, je préfère dire "presque toute seule", vu que comme tu l´a dit, on va pas s´intéresser à l´adresse mémoire (enfin si, on peut la récupérer afin de pointer dessus, mais de nouveau, c´est le programme qui "s´en charge").

Le reste BigGamer95 te la bien expliqué.

vexover
vexover
Niveau 9
27 mai 2006 à 20:26:53

hmm ben je comprend pas trop l´interêt de mettre un ID à la place d´un nom, c´est juste pour aller plus vite ?s inon je sais quon peut recupérer l´adresse d´une variable en utilisant un pointeur mais ça n´a aucun interêt ^^ .

Virtuality
Virtuality
Niveau 8
27 mai 2006 à 20:34:21

Retourne à ton cours :-)))

Non je rigole, allé, je tente encore une fois.
Imagine que tu as 2*10^5 objets (ca fais beaucoup^^)
Leur donner un id de 0 à 2*10^20 sera d´une facilité déconcertante vu qu´une simple boucle te permettra de créer ces objets et de leur donner un id.
Tu pourrais meme faire en sorte de les appeler ObjetNUmX, X étant le n° d´ID.
Tu pourra ensuite y accéder plus facilement vu qu´ils seront référencés dans un ordre précis.

Sinon obtenir l´adresse d´une variable (voir d´une fonction) peut s´avérer très util, mais j´ai pas envie de me lancer dans 30k explications lol :-p

vexover
vexover
Niveau 9
27 mai 2006 à 20:40:33

haaaa je vois, mais on peut faire pareil avec un tableaux ... non j´ai pas compris ?

BigGamer95
BigGamer95
Niveau 10
28 mai 2006 à 00:32:59

justement, l´id me sert apres dans effet_mag[id_mag] par exemple comme case du tableau (tu imagine si pour chaque case fallai repeté le nom de l´objet, ce serai vite illisible comme code)

vexover
vexover
Niveau 9
28 mai 2006 à 12:11:44

hmmm surement, mais tu définis les ID en #define donc ?

godrik
godrik
Niveau 30
28 mai 2006 à 12:41:47
  1. define c´est le mal!

const int est deja mieux
mais Si tu peux les lister, enum est encore mieux.
Mais je penses qu´il construit ces IDs en fonctionnant de l´ordre d´apparition des objets dans un fichier.

BigGamer95
BigGamer95
Niveau 10
28 mai 2006 à 12:48:20

pas besoin de define, juste un int
par exemple
dans le fichier texte, si on a

0 potion
1 acide
2 bombom

ba au lieu de mettre objet[bombom], je met directement son id, objet[2]

et ainsi je peux aussi me servir de l´id dans des boucle par exemple

godrik
godrik
Niveau 30
28 mai 2006 à 13:17:47

c´est quand meme bien d´avoir un access par nom explicite, ca evite d´avoir un objet[42] au milieu du code...

vexover
vexover
Niveau 9
28 mai 2006 à 13:18:14

Ok, donc l´ID marche forcément avec un fichier texte ?

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment