Voila, j'ai l'erreur suivante : "L'expression doit être modifiable"
Je ne comprends pas trop ce que ça veut dire, est ce que ça signifie que les deux variables ne sont pas du même type ? Bref je ne comprends pas, si vous avez des pistes je suis preneur
Voila mon code
//Bibliothèques
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Player { //Identité des joueurs
int id;
signed char playerName[256];
int lp;
int hp;
int mp;
int def;
int attaques[4][2];
};
struct Mob {
int idMob;
signed char nameMob [256];
int lpMob;
int hpMob;
int mpMob;
};
int calculeDega(int vie ,int force,signed char entite[256]) {
int cal = vie - force;
printf("Vie restante au %s: %d\n",entite, vie);
return cal;
}
//Variables global
signed char attklist[5][256] = { "Lance flamme", "Tonnerre", "Jet d'eau", "Force pur", "Appelle forestier" };
int dega[5] = { 10,15,16,18,10 };
int choixAtt[4][2];
//On présente un joueur
void presentation(signed char X1[256],int X2, int X3, int X4) {
printf("Bonjour %s, votre vie est de %d, vos degats sont de %d et votre mana de %d\n",X1,X2,X3,X4);
}
//On affiche et donne le choix au joueurs de choisir 4 attaques
void listeAttk() {
int size = sizeof(attklist) / sizeof(*attklist);
printf("Voici une liste d'attaque, veuillez en choisir 4 : ");
for (int i = 0; i < size; i++) {
printf("\nL'attaque numero %d, %s\n", i + 1, attklist[i]);
}
printf("Entrez notre attaque 1 : ");
scanf_s("%d", &choixAtt[0][0]);
choixAtt[0][1] = dega[choixAtt[0][0] - 1];
printf("\nEntrez notre attaque 2 : ");
scanf_s("%d", &choixAtt[1][0]);
choixAtt[1][1] = dega[choixAtt[1][0] - 1];
printf("\nEntrez notre attaque 3 : ");
scanf_s("%d", &choixAtt[2][0]);
choixAtt[2][1] = dega[choixAtt[2][0] - 1];
printf("\nEntrez notre attaque 4 : ");
scanf_s("%d", &choixAtt[3][0]);
choixAtt[3][1] = dega[choixAtt[3][0] - 1];
}
_Bool isAlive(int A1,int A2) {
if (A1 > 0) {
return 1;
}
else {
printf("GAME OVER\n");
if (A2 == 1) {
printf("YOU LOOSE");
}
else {
printf("YOU WIN");
}
return 0;
}
}
int main(int argc, char** argv) {
//Déclaration de variables
signed char name[256];
int lpp;
int mpp;
int hpp;
int nullat[4];
//Code
printf("Quel est votre nom ? ");
scanf_s("%s", name, 256);
printf("\nQuels sont vos points de vie ? ");
scanf_s("%d", &lpp);
printf("\nQuels sont vos points de mana ? ");
scanf_s("%d", &mpp);
printf("\nQuel est votre niveau de force ? ");
scanf_s("%d", &hpp);
listeAttk();
struct Player p1 = { 1 , "", 0 , 0 , 0 , 60 , nullat };
struct Mob m1 = {1,"Goblin",50,10,5};
p1.hp = hpp;
p1.playerName = name;
p1.lp = lpp;
p1.mp = mpp;
p1.attaques = choixAtt;
while ((isAlive(p1.lp, 1)) && (isAlive(m1.lpMob, 2))) {
p1.lp = calculeDega(p1.lp, m1.hpMob,"joueur");
m1.lpMob = calculeDega(m1.lpMob, p1.hp, "mob");
}
//Fin
return 0;
}
Il faut utilise strcpy() pour copier des chaînes de caractères. p1.playerName est un pointeur constant auquel tu essaie d'attribuer la valeur d'un autre pointeur.
et ligne 110 pour copier des tableaux, c'est élément par élément ou alors avec memcpy.
L'expression doit être modifiable
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Bonhomme !! | Jeu de plateforme : Prototype.