this is my first post here, I usually find my problem in my code using this website but this is too specific for it to actually be on this website.
My code keeps crashing after a certain line, i can't figure out which one.
im not going to make you guys read all my code, here is what i think doesnt work
void preparationButins(S_butins* Butins, S_train Train[], int players)
{
// preparation de butins
Butins->p250 = 4;
Butins->p500 = 8;
Butins->p750 = 8;
Butins->p1000 = 4;
// preparation de wagons
int i, j;
for(i = 0; i < players; i++)
{
// si i=0 (donc si le wagon est le wagon de tete, donner 2000 en butins et mettre le marshall dans ce train
if(i == 0)
{
// tests
printf("entering i == 0");
Train->butin[0] = 2000;
Train->marshall = 1;
}
else
{
printf("entering randomize butins");
for(j = 0; j < NB_BUTINS; j++)
{
Train[i].butin[j] = randomizeButins(Butins);
}
printf("exiting bitch");
}
}
}
int randomizeButins(S_butins* Butins)
{
// faut trouver un moyen de limiter les butins sans que la console crash
int number;
int r;
printf("randomizing");
r = (rand() % 4);
printf("\n %d\n", r);
printf("end of randomizing");
if(r == 0)
{
number = 250;
}
if(r == 1)
{
number = 500;
}
if(r == 2)
{
number = 750;
}
if(r == 3)
{
number = 1000;
}
/* fait crasher console, mauvais code
switch(r)
{
case 1:
if(Butins->p250 <= 0)
{
randomizeButins(Butins);
}
else
{
--Butins->p250;
number = 250;
}
break;
case 2:
if(Butins->p500 <= 0)
{
randomizeButins(Butins);
}
else
{
--Butins->p500;
number = 500;
}
break;
case 3:
if(Butins->p750 <= 0)
{
randomizeButins(Butins);
}
else
{
--Butins->p750;
number = 750;
}
break;
case 4:
if(Butins->p1000 <= 0)
{
randomizeButins(Butins);
}
else
{
--Butins->p1000;
number = 1000;
}
break;
default:
printf("there was an error in randomize butins");
break;
}
*/
return number;
}
here is my full code for reference
#include <stdio.h>
#include <stdlib.h>
#define MANCHE 4
#define MOTS 100
#define NB_BUTINS 4
// structure qui definit un joueur
typedef struct joueur
{
char name[100];
int playernumber;
// il a 6 tirs dans le pistolet
int pistolet;
// il a 10 cartes de deplacement
int deplacement;
int changement;
int braquage;
int baston;
int marshal;
// on doit prendre en compte son argent ainsi que ou il est dans le jeu (dans le train en dehors)
int money;
int inTrain;
int ballesTire;
} S_joueur;
// structure qui definit tout les butins dans le jeu
typedef struct butins
{
int p250;
int p500;
int p750;
int p1000;
} S_butins;
typedef struct train
{
S_joueur joueurs[5];
int butin[NB_BUTINS];
// pour savoir si y a un marshall dans ce wagon
int marshall;
} S_train;
/*******************************************PROTOTYPES***************************************************************/
int cbDeJoueurs();
int randomizeButins(S_butins* Butins);
void preparationButins(S_butins* Butins, S_train Train[], int players);
void preparationJoueurs(S_train Train[], S_joueur Joueurs[], int players);
void Display(S_train T[], S_butins B, S_joueur J[], int players);
/****************************************FIN DE PROTOTYPES************************************************************/
int main(int argc, char** argv)
{
srand(time(NULL));
int i;
int players = cbDeJoueurs();
S_train Train[players + 1];
S_butins Butins;
S_joueur Joueurs[players];
preparationButins(&Butins, Train, Joueurs);
preparationJoueurs(Train, Joueurs, players);
Display(Train, Butins, Joueurs, players);
for(i = 0; i < MANCHE; i++)
{
}
}
int cbDeJoueurs()
{
int players;
printf("combien y a t-il de joueurs ?\n");
do
{
printf("Choisissez un chiffre entre 3 et 5\n");
scanf("%d", &players);
}
while(players < 3 && players > 5);
return players;
}
void preparationButins(S_butins* Butins, S_train Train[], int players)
{
// preparation de butins
Butins->p250 = 4;
Butins->p500 = 8;
Butins->p750 = 8;
Butins->p1000 = 4;
// preparation de wagons
int i, j;
for(i = 0; i < players; i++)
{
// si i=0 (donc si le wagon est le wagon de tete, donner 2000 en butins et mettre le marshall dans ce train
if(i == 0)
{
// tests
printf("entering i == 0");
Train->butin[0] = 2000;
Train->marshall = 1;
}
else
{
printf("entering randomize butins");
for(j = 0; j < NB_BUTINS; j++)
{
Train[i].butin[j] = randomizeButins(Butins);
}
printf("exiting bitch");
}
}
}
void preparationJoueurs(S_train Train[], S_joueur Joueurs[], int players)
{
int i;
for(i = 0; i < players; i++)
{
// preparation de parametres du joueur
printf("Quel est le nom du joueur?");
scanf("%s", &Joueurs[i].name);
Joueurs[i].playernumber = i;
Joueurs[i].ballesTire = 0;
Joueurs[i].baston = 1;
Joueurs[i].braquage = 2;
Joueurs[i].changement = 2;
Joueurs[i].deplacement = 2;
Joueurs[i].inTrain = 1;
Joueurs[i].marshal = 1;
Joueurs[i].money = 0;
Joueurs[i].pistolet = 6;
// placement de joueurs pairs / impairs dans les derniers wagons.
if(i % 2 == 0)
{
Train[players - 1].joueurs[i] = Joueurs[i];
}
else if(i % 2 == 1)
{
Train[players].joueurs[i] = Joueurs[i];
}
}
}
int randomizeButins(S_butins* Butins)
{
// faut trouver un moyen de limiter les butins sans que la console crash
int number;
int r;
printf("randomizing");
r = (rand() % 4);
printf("\n %d\n", r);
printf("end of randomizing");
if(r == 0)
{
number = 250;
}
if(r == 1)
{
number = 500;
}
if(r == 2)
{
number = 750;
}
if(r == 3)
{
number = 1000;
}
/* fait crasher console, mauvais code
switch(r)
{
case 1:
if(Butins->p250 <= 0)
{
randomizeButins(Butins);
}
else
{
--Butins->p250;
number = 250;
}
break;
case 2:
if(Butins->p500 <= 0)
{
randomizeButins(Butins);
}
else
{
--Butins->p500;
number = 500;
}
break;
case 3:
if(Butins->p750 <= 0)
{
randomizeButins(Butins);
}
else
{
--Butins->p750;
number = 750;
}
break;
case 4:
if(Butins->p1000 <= 0)
{
randomizeButins(Butins);
}
else
{
--Butins->p1000;
number = 1000;
}
break;
default:
printf("there was an error in randomize butins");
break;
}
*/
return number;
}
void Display(S_train T[], S_butins B, S_joueur J[], int players)
{
int i, j;
printf(" ");
for(i = 0; i < players; i++)
{
printf(" ");
for(j = 0; j < 5; j++)
{
if(T[i].joueurs[j].inTrain == 0)
{
// have to insert color depending on player
// ************************************************************
printf("%d", T[i].joueurs[j].playernumber);
}
}
printf(" ");
}
printf("\n ");
// line between top of train and bottom
for(i = 0; i < players; i++)
{
printf("____");
}
printf("\n/|");
// inside the train
for(i = 0; i < players; i++)
{
printf(" ");
if(T[i].marshall == 1)
printf("M");
for(j = 0; j < 5; j++)
{
if(T[i].joueurs[j].inTrain == 1)
{
// have to insert color depending on player
printf("%d", T[i].joueurs[j].playernumber);
}
}
printf(" ");
}
}
Aucun commentaire:
Enregistrer un commentaire