Signori premettendo che non volevo si scatenasse una tale polemica, e mi dispiace vedere che magari per colpa mia si è arrivati ad una diatriba volevo avvisarvi che sono riuscito a proseguire con il codice.
sono riuscito ad ottenere la mia matrice 4x8 con le carte disposte casualmente e a visualizzare solo l'ultima riga.
dentro le mie struct ho inserito il parametro status che fa corrispondere all'int=1 la visualizzazione della carta e all'int=0 la visualizzazione di "?";
adesso la mia idea era quella di creare 8 puntatori che puntassero alle 8 carte finali delle rispettive colonne della mia matrice e prevederne 2 in più che mi permettano di fare i confronti fra 2 carte specifiche indicando le colonne che si vogliono confrontare, qualora i confronti risultino veri eliminare le ultime 2 carte, riscrivere la matrice con le carte rimanenti e facendo salire i rispettivi puntatori alle carte subito più in alto, la mia idea era quella di utilizzare i puntatori per effettuare il cambio di status da 0 ad 1 alle mie carte permettendo di visualizzare quelle sopra solo qualora venissero eliminate le carte sotto di esse. qualcuno saprebbe indirizzarmi sul modo più efficiente per effettuare questa operazione?
possibilmente senza generare altre sterili critiche! vi ringrazio comunque di cuore.
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
typedef struct carta //definisco la struttura carta
{
char *seme;
int valore;
char *faccia;
int isVuota;
int status;
}carta;
int main ()
{ int i;
int j;
int m;
int n;
int primacarta;
int secondacarta;
carta mazzo[32]; //definisco l'array mazzo che contiene le mie 32 carte e le inizializzo una ad una
srand(time(NULL)); //tengo conto del tempo di avvio del programma
mazzo[0] = {"\u2663", 1 , "A",0, 0};
mazzo[1] = {"\u2663", 2 , "J",0, 0};
mazzo[2] = {"\u2663", 3 , "Q",0, 0};
mazzo[3] = {"\u2663", 4 , "K",0, 0};
mazzo[4] = {"\u2663", 1 , "A",0, 0};
mazzo[5] = {"\u2663", 2 , "J",0, 0};
mazzo[6] = {"\u2663", 3 , "Q",0, 0};
mazzo[7] = {"\u2663", 4 , "K",0, 0};
mazzo[8] = {"\u2665", 1 , "A",0, 0};
mazzo[9] = {"\u2665", 2 , "J",0, 0};
mazzo[10] = {"\u2665", 3 , "Q",0, 0};
mazzo[11] = {"\u2665", 4 , "K",0, 0};
mazzo[12] = {"\u2665", 1 , "A",0, 0};
mazzo[13] = {"\u2665", 2 , "J",0, 0};
mazzo[14] = {"\u2665", 3 , "Q",0, 0};
mazzo[15] = {"\u2665", 4 , "K",0, 0};
mazzo[16] = {"\u2666", 1 , "A",0, 0};
mazzo[17] = {"\u2666", 2 , "J",0, 0};
mazzo[18] = {"\u2666", 3 , "Q",0, 0};
mazzo[19] = {"\u2666", 4 , "K",0, 0};
mazzo[20] = {"\u2666", 1 , "A",0, 0};
mazzo[21] = {"\u2666", 2 , "J",0, 0};
mazzo[22] = {"\u2666", 3 , "Q",0, 0};
mazzo[23] = {"\u2666", 4 , "K",0, 0};
mazzo[24] = {"\u2660", 1 , "A",0, 0};
mazzo[25] = {"\u2660", 2 , "J",0, 0};
mazzo[26] = {"\u2660", 3 , "Q",0, 0};
mazzo[27] = {"\u2660", 4 , "K",0, 0};
mazzo[28] = {"\u2660", 1 , "A",0, 0};
mazzo[29] = {"\u2660", 2 , "J",0, 0};
mazzo[30] = {"\u2660", 3 , "Q",0, 0};
mazzo[31] = {"\u2660", 4 , "K",0, 0};
carta tavolo[4][8]; //effettuo il riempimento della matrice inserendo stocasticamente le carte (tenendo conto che le celle non siano già riempite da altre carte)
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
tavolo[i][j].isVuota=1;
}
}
i=0;
while(i < 32)
{
m=rand()%4;
n=rand()%8;
if(tavolo[m][n].isVuota == 1 )
{
tavolo[m][n]=mazzo[i];
mazzo[i].isVuota=1;
i = i+1;
}
}
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
if(i==3) //setto solamente le carte dell'ultima riga ad 1 in modo che vengano visualizzate
{
tavolo[i][j].status=1;
}
}
}
for(int x = 0 ; x < 4 ; x++) //stampo il tavolo da gioco
{
printf("|");
for(int y = 0 ; y < 8 ; y++)
{
if(tavolo[x][y].status==0)
printf("? ", tavolo[x][y].seme, tavolo[x][y].faccia);
else if(tavolo[x][y].status==1)
printf("%s %s ", tavolo[x][y].seme, tavolo[x][y].faccia);
}
printf("|\n");
}
}