Buongiorno ragazzi, ho un problema col mio codice in C del monopoly.. in pratica durante l'esecuzione mi va in loop, ma non riesco a capire dove sia il problema..se potreste aiutarmi ve ne sarei grato.
Vi allego il codice in C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
typedef struct giocatore{
char nome[10];
int soldi;
int terr_pos[4];
int pos;
}Giocatore;
void color(int col);
void gioco(int scacchiera[7][5], Giocatore player[]);
int ricerca(Giocatore player[], int dado);
int ricerca_Winner(Giocatore player[]);
Giocatore player[6];
void main(){
srand(time(NULL));
int i,j,ro=0,end=0;
int scacchiera[7][5]={{1,2,3,4,5},
{20,0,0,0,6},
{19,0,0,0,7},
{18,0,0,0,8},
{17,0,0,0,9},
{16,0,0,0,10},
{15,14,13,12,11}};
int terreni[19]={2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
for(int i=0; i<7; i++){
for(int j=0; j<5; j++){
printf("| %d |", scacchiera[i][j]);
}
printf("\n");
}
for(int i=0;i<6;i++) {
printf("Mettere il nome del giocatore %i : ", i+1);
gets(player[i].nome);
player[i].soldi=100;
player[i].pos=1;
}
for(i=0;i<6;i++){
for(j=0;j<3;j++){
do{
ro=rand()%19;
if(terreni[ro]==0){
end=1;
}else{
player[i].terr_pos[j]=terreni[ro];
terreni[ro]=0;
end=0;
}
}while(end==1);
}
}
for(i=0;i<6;i++){
printf(" Giocatore %i ha come terreni :", i+1);
for(j=0;j<3;j++){
printf(" %d", player[i].terr_pos[j]);
}
printf("\n");
}
gioco(scacchiera,player);
}
void gioco(int scacchiera[][5], Giocatore player[]){
int inizio,i,dadou,dadod,dado,bk,win,z,t;
int perdenti[5];
inizio=rand()%6;
i=inizio;
printf("Inizia %s\n", player[i].nome);
do {
if (i>5) {
i=0;
}
//printf("Tocca a %s\n", player[i].nome);
do {
if (player[i].soldi<=0) {
bk==1;
}
dado=0;
dadou=1+rand()%6;
dadod=1+rand()%6;
dado=dadou+dadod;
player[i].pos=player[i].pos+dado;
if (player[i].pos>20){
player[i].pos=player[i].pos-20;
}
if (player[i].pos>=2 && player[i].pos<=4){
for (int j=0; j<3; j++){
if (player[i].terr_pos[j]>=2 && player[i].terr_pos[j]<=4) {
//printf("La Casella in cui %s e' finito e' sua. \n", player[i].nome);
j=3;
}
else
if (player[i].terr_pos[j]!=2 && player[i].terr_pos[j]!=3 && player[i].terr_pos[j]!=4) {
//printf("Mi dispiace %s, sei caduto su una casella non tua.. \n", player[i].nome);
z= ricerca(player,dado);
//printf("Sei caduto sulla casella gialla quindi paghi 2 euro a %s \n", player[z].nome);
player[i].soldi-2;
player[z].soldi+2;
j=3;
}
eliminato(player[i]);
}
}
if (player[i].pos==5 || player[i].pos==11 || player[i].pos==15){
for (int j=0; j<3; j++){
if (player[i].terr_pos[j]==5 || player[i].terr_pos[j]==11 || player[i].terr_pos[j]==15) {
//printf("La Casella in cui %s e' finito e' sua.\n", player[i].nome);
j=3;
}
else
if (player[i].terr_pos[j]!=5 || player[i].terr_pos[j]!=11 || player[i].terr_pos[j]!=15) {
//printf("Mi dispiace %s, sei caduto su una casella non tua.. \n", player[i].nome);
z=ricerca(player,dado);
//printf("Sei caduto sulla casella rossa quindi paghi 5 euro a %s \n", player[z].nome);
player[i].soldi-5;
player[z].soldi+5;
j=3;
}
eliminato(player[i]);
}
}
if (player[i].pos==6 || player[i].pos==7 || player[i].pos==16 || player[i].pos==17){
for (int j=0; j<3; j++){
if (player[i].terr_pos[j]==6 || player[i].terr_pos[j]==7 || player[i].terr_pos[j]==16 || player[i].terr_pos[j]==17) {
//printf("La Casella in cui %s e' finito e' sua.\n", player[i].nome);
j=3;
}
else
if (player[i].terr_pos[j]!=6 || player[i].terr_pos[j]!=7 || player[i].terr_pos[j]!=16 || player[i].terr_pos[j]!=17) {
//printf("Mi dispiace %s, sei caduto su una casella non tua.. \n", player[i].nome);
z= ricerca(player,dado);
// printf("Sei caduto sulla casella verde quindi paghi 4 euro a %s \n", player[z].nome);
player[i].soldi-4;
player[z].soldi+4;
j=3;
}
eliminato(player[i]);
}
}
if (player[i].pos==8 || player[i].pos==18){
for (int j=0; j<3; j++){
if (player[i].terr_pos[j]==8 || player[i].terr_pos[j]==18) {
// printf("La Casella in cui %s e' finito e' sua.\n", player[i].nome);
j=3;
}
else
if (player[i].terr_pos[j]!=8 || player[i].terr_pos[j]!=18) {
//printf("Mi dispiace %s, sei caduto su una casella non tua.. \n", player[i].nome);
z= ricerca(player,dado);
//printf("Sei caduto sulla casella nera quindi paghi 3 euro a %s \n", player[z].nome);
player[i].soldi-3;
player[z].soldi+3;
j=3;
}
eliminato(player[i]);
}
}
if (player[i].pos==9 || player[i].pos==10 || player[i].pos==19 || player[i].pos==20){
for (int j=0; j<3; j++){
if (player[i].terr_pos[j]==9 || player[i].terr_pos[j]==10 || player[i].terr_pos[j]==19 || player[i].terr_pos[j]==20) {
//printf("La Casella in cui %s e' finito e' sua.\n", player[i].nome);
j=3;
}
else
if (player[i].pos!=9 || player[i].pos!=10 || player[i].pos!=19 || player[i].pos!=20) {
//printf("Mi dispiace %s, sei caduto su una casella non tua.. \n", player[i].nome);
z= ricerca(player,dado);
// printf("Sei caduto sulla casella azzurra quindi paghi 4 euro a %s \n", player[z].nome);
player[i].soldi-1;
player[z].soldi+1;
j=3;
}
eliminato(player[i]);
}
}
if (player[i].pos>=12 && player[i].pos<=14){
for (int j=0; j<3; j++){
if (player[i].terr_pos[j]>=12 && player[i].terr_pos[j]<=14) {
// printf("La Casella in cui %s e' finito e' sua.\n", player[i].nome);
j=3;
}
else
if (player[i].terr_pos[j]!=12 || player[i].terr_pos[j]!=13 || player[i].terr_pos[j]!=14) {
//printf("Mi dispiace %s, sei caduto su una casella non tua.. \n", player[i].nome);
z= ricerca(player,dado);
//printf("Sei caduto sulla casella viola quindi paghi 6 euro a %s \n", player[z].nome);
player[i].soldi-6;
player[z].soldi+6;
j=3;
}
eliminato(player[i]);
}
}
} while(bk==1);
i++;
win=0;
for (int g=0; g<6; g++) {
if (player[g].soldi<=0) {
win++;
}
}
if (win==5) {
t= ricerca_Winner(player);
printf("Ha vinto il Giocatore %s", player[t].nome);
}
}while(win<5);
}
int ricerca(Giocatore player[], int dado) {
for(int i=0;i<6;i++){
for(int j=0;j<3;j++){
if (player[i].terr_pos[j]==dado)
return i;
}
}
}
int ricerca_Winner(Giocatore player[]) {
int win;
win=0;
for (int i=0; i<6; i++) {
if( player[i].soldi>0)
win=i;
}
return win;
}
void eliminato(Giocatore player[]){
for(int i=0; i<6; i++){
if (player[i].soldi<=0){
printf("%s e' stato eliminato.\n", player[i].nome);
player[i]=player[i+1];
}
}
}
void color(int col){
{
HANDLE hCon;
hCon=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon,col);
}
}