Je travaille depuis un moment sur un jeu a la ogame et je suis confronté au gros problème de la gestion de l'attaque.
J'explique ici vite fait le principe du calcul.
Imaginer 3 unité d'attaque :
- les lancier avec 10 de def
- les cavalerie avec 50 de def
- les volant avec 70 de def
Lors d'une attaque j'envois 1000 lancier + 2478 cavalerie + 500 volant. Cela fait donc un total de 1000+2478+500 = 3978 unité d'attaque.
leurs défenses totale est donc de (1000*10) + (2478*50) + (500*70) = 168900 de défense total.
Suite a une grosse attaque de la part des enemis, un script de ma création me renvoit la defense total restante aprés attaque. Ici imaginons qu'il nous revienne 15874 def
Cela nous revient a dire qu'on a eu une perte de 100 - (168900*15874)/100 = 90 % environ
c'est a dire qu'il nous resterais 3978 -90% = 374 environ
Mon but serez de savoir sur c'est 374 combien reste t-il de lancier de cavalerie et de volant sachant que d'apres la def de chacun, le volant et plus resistante que la cavalerie qui est plus resistante que le lancier ????
Les lanciers représentent 6% du total de défense
Les cavaliers représentent 73% du total de défense
Les volants représentent 21% du total de défense
Donc si l'attaque a fait perdre 15346 points de defense, ca a donc enlevé :
15346*6% = 921 points de def = 93 lanciers
15346*73% = 11202 points de def = 224 cavaliers
15346*21% = 3223 points de def = 46 volants
merci beaucoup de ta réponse :p, je vais mettre ca en pratique
edit : je vient de mettre en pratique et a ce moment la j'ai remarquer que quelquchose n'allait pas :s si on attaque par exemple avec 1000 lancier 1000 cavelrie et 1000 vol, les 3 partis perte exactement le meme nombre d'unité.
un exemple j'ai 1000 lancier +1000 cavelerie +1000 volant en attaque = 130000 de def total (selon les coeficient du dessus)
apres attaque il revient 53000 de def total.
En suivant ton calcul on, retrouve que il revient 407 lancier , 407 cavelrie et 407 volant ce qui n'st pas logique puisque les volant sont censé resister plus que les cavalerie qui sont censer resister plus que les lancier^^.
Il existe une solution, mais je ne sais pas si elle te conviendrait:
Supposons, que tu ai X points de def à faire disparaitre, tu fais d'abord disparaitre tes lanciers, s'il t'en reste encore et que t'as fais disparaitre le bon nombre de pts, tant mieux, sinon tu fais disparaitre la cavalerie du nombre de poins qu'il faut.S'il en reste tant mieux, sinon tant pis, c'est les volants qui prendront.
C'est assez peu interessant, car il faut que l'armée soit quasiement détruite pour perdre un exemplaire de l'unité la plus forte, tandis que l'unité la plus faible est réduite a néant a chaque combat
Par contre après tu peux faire des systèmes plus complexes, ou chaque unité a une initiative différente, ou les dégats sont distribués selon les zones (avant, arrière, ciel), avec des types (percant, contondant, feu...) et avec des modificateurs de role (+x% d'attaque contre le type X)
Tu peux même rajouter des "generaux" qui vont donner des caractéristiques particulières a ton armée
C'est interessant d'avoir a faire autre chose que de masser le plus possible de points d'attaque et de defense
Je ne sais pas si les deux autres on dit ce que je pense (désoler pour ne pas dire les pseudos )
Tu récupères le pourcentage de chaque groupe d'unité :
- Cavalerie : 2478 / 3978 * 100 =~ 62% (arrondit à l'unité ^^)
- Lancier : 1000 / 3978 * 100 =~ 25%
- Volant : 500 / 3978 * 100 =~ 13%
Ce qui te restera de tes groupes d'unités : le reste : X = 374 :
- Cavalerie : 62 * X / 100 = 232
- Lancier : 25 * X / 100 = 94
- Volant 13 * X / 100 = 49
Bon tu gagnes une unité ...
Désolé si ça ne ta pas aidé
Oups, c'est vrai que j'ai pas pensé à prendre en compte ceux qui sont plus résistants.
Donc au total c'est comme si t'as 1000 lancier + 2478*5 cavalerie + 500*7 volant, avec le même def de 10. C'est ça ?
Je ne connais pas la logique de ce genre de jeux, mais si ce que j'ai dis plus haut est correcte, il est facile de connaitre le nombre d'unité de chaque type à la fin, en faisant comme a fait Floooder ...
++
X.Lewandowski le problème de ton système et que si on a 1000 uniter de chaque alors les perte de chaque groupe d'uniter seront equitable or cela ne doit pas être le cas
MeCaK ton idée de séparer comme ca est interessante mais je ne voit vraiment pas comment effectuer le calcul pour savoir le nombre d'uniter final
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Pas d'aide concernant le code par MP, le forum est là pour ça :)