#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <string.h>
//variabili di ogni carta
struct carte{
char nome[30]; //nome della carta es. Asse di spade
int id; //numero compreso tra 1 e 10 che identifica il num della carta es. asse spade id=1; 2 di bastoni id=1, ecc.
int id_generico; // numero compreso tra 1 e 40 che identifica TUTTE le carte es. asse s ha id 0, asse b ha id 10
int seme; // 1 spade, 2 bastoni, 3 denari, 4 coppe
int punti; // valore dei punti di ogni carta es asse--> punti=11
int valore_strozzo; //numero per identificare quale fra 2 carte dello stasso seme è > es. 2 spade ha val di strozzo=0 asse di spade val di strozzo=9 3 di spade val s=8 ecc.
int status; //se status=0 carta non pescata, se status=1 carta pescata
int briscola; // se bricola=0 il seme non è briscola se 1 lo è
int carta_sotto; //se 1 questa carta è quella sotto tutte e definisce la briscola e sara l'ultima pescata
};
struct giocatore{
int turno; //chi gioca per primo se turno=1 inizi per primo se = a 2 per secondo //p.s devo ancora capire come usarla bene
char nome[30];
struct carte carte_mano[3];
};
int main(int argc, char*argv[]){
int i,j,k;//variabili per i cicli o altro(possono essere inutili)
int resto; //vedi nel primo for
int punti_fatti; //punti del giocatore
int id_generato;
struct carte carta[41];//41 perche carta[0] non lo usiamo ma solo da 1 a 40
struct giocatore umano, AI;
int scelta;//decidere che carta giocare
srand(time(NULL)); //inizializzazione generatore
j=0;
k=0;
// Dichiarazione carte
for(i=1; i<41; i++)
{
// ID carta, seme
if(i/10 <= 1)
{
carta[i].id=i; //spade 1-10
carta[i].seme=1;
}
if(i/10 > 1 && i/10 <= 2)
{
carta[i].id=i-10; //bastoni 11-20
carta[i].seme=2;
}
if(i/10 > 2 && i/10 <= 3)
{
carta[i].id=i-20; //denari 21-30
carta[i].seme=3;
}
if(i/10 > 2 && i/10 <=40)
{
carta[i].id=i-30; //coppe 31-40
carta[i].seme=4;
}
// ID carta generico
carta[i].id_generico=i;
// punti, strozzo
if(i==1 || i==11 || i==21 || i==31)
{
carta[i].punti=11; // asse
carta[i].valore_strozzo=9;
}
if(i==2 || i==12 || i==22 || i==32)
{
carta[i].punti=0; // 2
carta[i].valore_strozzo=0;
}
if(i==3 || i==13 || i==23 || i==33)
{
carta[i].punti=10; // 3
carta[i].valore_strozzo=8;
}
if(i==4 || i==14 || i==24 || i==34)
{
carta[i].punti=0; // 4
carta[i].valore_strozzo=1;
}
if(i==5 || i==15 || i==25 || i==35)
{
carta[i].punti=0; // 5
carta[i].valore_strozzo=2;
}
if(i==6 || i==16 || i==26 || i==36)
{
carta[i].punti=0; // 6
carta[i].valore_strozzo=3;
}
if(i==7 || i==17 || i==27 || i==37)
{
carta[i].punti=0; // 7
carta[i].valore_strozzo=4;
}
if(i==8 || i==18 || i==28 || i==38)
{
carta[i].punti=2; // fante
carta[i].valore_strozzo=5;
}
if(i==9 || i==19 || i==29 || i==39)
{
carta[i].punti=3; // cavallo
carta[i].valore_strozzo=6;
}
if(i==10 || i==20 || i==30 || i==40)
{
carta[i].punti=4; // re
carta[i].valore_strozzo=7;
}
// status
carta[i].status=0;
// briscola
carta[i].briscola=0;
// carta sotto
carta[i].carta_sotto=0;
}
strcpy(carta[1].nome,"asse spade");
strcpy(carta[2].nome,"2 spade");
strcpy(carta[3].nome,"3 spade");
strcpy(carta[4].nome,"4 spade");
strcpy(carta[5].nome,"5 spade");
strcpy(carta[6].nome,"6 spade");
strcpy(carta[7].nome,"7 spade");
strcpy(carta[8].nome,"fante spade");
strcpy(carta[9].nome,"cavallo spade");
strcpy(carta[10].nome,"re spade");
strcpy(carta[11].nome,"asse bastoni");
strcpy(carta[12].nome,"2 bastoni");
strcpy(carta[13].nome,"3 bastoni");
strcpy(carta[14].nome,"4 bastoni");
strcpy(carta[15].nome,"5 bastoni");
strcpy(carta[16].nome,"6 bastoni");
strcpy(carta[17].nome,"7 bastoni");
strcpy(carta[18].nome,"fante bastoni");
strcpy(carta[19].nome,"cavallo bastoni");
strcpy(carta[20].nome,"re bastoni");
strcpy(carta[21].nome,"asse denari");
strcpy(carta[22].nome,"2 denari");
strcpy(carta[23].nome,"3 denari");
strcpy(carta[24].nome,"4 denari");
strcpy(carta[25].nome,"5 denari");
strcpy(carta[26].nome,"6 denari");
strcpy(carta[27].nome,"7 denari");
strcpy(carta[28].nome,"fante denari");
strcpy(carta[29].nome,"cavallo denari");
strcpy(carta[30].nome,"re denari");
strcpy(carta[31].nome,"asse coppe");
strcpy(carta[32].nome,"2 coppe");
strcpy(carta[33].nome,"3 coppe");
strcpy(carta[34].nome,"4 coppe");
strcpy(carta[35].nome,"5 coppe");
strcpy(carta[36].nome,"6 coppe");
strcpy(carta[37].nome,"7 coppe");
strcpy(carta[38].nome,"fante coppe");
strcpy(carta[39].nome,"cavallo coppe");
strcpy(carta[40].nome,"re coppe");
for(i=0; i<6;i++){ //6 perché sono 3 carte per te e 3 per il computer
resto=i%2;
if(resto==0){
do{
id_generato=rand()%40+1;
}while(carta[id_generato].status=1);
carta[id_generato].status=1;
umano.carte_mano[j]=carta[id_generato];
j++;
}
else
{
do{
id_generato=rand()%40+1;
}while(carta[id_generato].status=1);
carta[id_generato].status=1;
AI.carte_mano[k]=carta[id_generato];
k++;}
}
//scelta carta sotto e impostazione della briscola su tutte le carte
do{
id_generato=rand()%41;
}while(carta[id_generato].status=1);
carta[id_generato].status=1;
carta[id_generato].carta_sotto=1;
for(i=1; i<41; i++){
if(carta[i].seme==carta[id_generato].seme){
carta[i].briscola=1;
}
}
//inizio partita vera e propria
for(i=0;i<19;i++){ //ho messo 19 perche le mani giocate tutte in egual modo quindi esclusa l'ultima(che integreremo con alte if per ora tengo questo poi lo cambieremo)
printf("sciegli la carta da giocare\n");
printf("1)%s\n2)%s3)%s\n",umano.carte_mano[0].nome,umano.carte_mano[1].nome,umano.carte_mano[2]);
scanf("%d",&scelta);
}
system("PAUSE");
return 0;
}
Buongiorno, ho scritto la parte sopra riportata di un programma che non ho ancora ultimato però già così come è dovrebbe darmi in output alcuni messaggi(come quelli nella parte finale) ma ciò non accade, invece se ne metto uno appena dopo le dichiarazioni quello me lo comunica(solamente quello). Sapreste dirmi perchè?