Tombes010 Posted January 7, 2023 at 07:42 PM Report Share #629575 Posted January 7, 2023 at 07:42 PM (edited) Foi-me pedido para desenvolver um programa em C que crie um baralho de cartas e os jogadores para um jogo da sueca, os escreva e eventualmente faça o jogo decorrer Este foi o enunciado que me deram: estrutura s_carta e o tipo t_carta - face (1 carater) de entre "A7KQJ65432" - naipe (1 carater) de entre "ECOP" - pontos (1 inteiro) de entre 11 10 4 3 2 0 - ordem (1 inteiro) entre 0 e 39 estrutura s_jogador e o tipo t_jogador - nome (vetor de 10 carateres) - vcartas [mão] (vetor de 10 t_carta) - ncartas [qtd de cartas q tem na mão] (1 inteiro) Na main vou precisar de declarar: - baralho (vetor de 40 t_carta) - vjogadores (vetor de 4 t_jogador) Funções necessárias criarBaralho - ver exame de 5 de Setembro de 2022, ex 5. - ver faces_e_naipes.c do moodle e adaptar escCarta - recebe UMA t_carta e escreve a carta no ecran (ex: AP - Ás de Paus) (a função é um único printf) - Nota no final, para por com cores e com símbolos é esta a única função que deve ser alterada escCartas - recebe um vetor de cartas e a sua qtd de elementos e escreve as cartas do vetor no ecran. - Usa a função escCarta escBaralho - recebe um vetor de 40 cartas e escreve as cartas do vetor no ecran (10 em cada linha). criarJogadores - recebe o vetor com 4 jogadores e preenche-o com o respetivo nome (hardcoded usando strcpy) e coloca as respetivas ncartas a 0. escJogador - recebe UM jogador - Escreve o nome do jog e o vetor de cartas q tem na mao escJogadores - recebe o vetor de (4) jogadores (e o índice do 1º jogador a ser escrito - para a parte opcional ) Funções para baralhar e ordenar vetores de t_cartas Ir ver o programa e5_ordenacao_de_estruturas.c E adaptar a ordenação/desordenação de uma turma por 'idade' crescente para ordenar/desordenar um baralho por 'ordem' crescente Funções para partir o baralho - rodar o vetor de t_carta uma casa - rodar o vetor de t_carta n casas (usa a anterior) (está feito na aula sobre vetores para vetores de inteiros) Função para dar - recebe o vetor baralho (já baralhado e partido) e o vetor de jogadores. - recebe tb o índice do jogador que dá. - Altera tb o ncartas de cada jogador para 10. - devolve uma t_carta (o trunfo) (pode ser ou não por referência) Na main vou: - declarar baralho (vetor de 40 t_carta) - declarar vjogadores (vetor de 4 t_jogador) - criar o baralho - criar os jogadores - escrever o baralho (originalmente ordenado) - escolher à sorte o índice do jogador que baralha - escrever o nome do jogador que baralha - baralhar as cartas - escrever baralho baralhado - determinar índice do jogador que parte - escrever o nome do jogador que parte - tirar n à sorte entre 0 e 39 - partir o baralho por esse nº - escrever baralho partido - determinar índice do jogador que dá - escrever o nome do jogador que dá - dar as cartas - escrever os jogadores (cada um com as resp cartas desordenadas) - escrever o trunfo - ordenar as cartas de cada jogador - escrever os jogadores (cada um com as resp cartas ordenadas) Consegui fazer até escCartas, mas fiquei preso no escrever o baralho Este é o meu código até agora: #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> ///Carta typedef struct s_carta { char naipe; char face; int ordem; int pontos; } t_carta; ///Jogador typedef struct s_jogador { int nome[10]; //Nome do jogador int vcartas[10]; //Vetor de 10 cartas que corresponde ao seu baralho int ncartas; //Número de cartas que o jogador tem na mão }t_jogador; ///Criar baralho void criarBaralho(t_carta baralho[]) { char naipes[]="ECOP"; // Espadas, Copas, Ouros, Paus char faces []="A7KJQ65432"; //int pontos={11,10,4,3,2,0,0,0,0,0}; caso queira passar para a parte não obrigatória for(int i=0;i<40;i++) { baralho[i].naipe=naipes[i/10]; baralho[i].face=faces [i%10]; baralho[i].ordem=i; //baralho[i].pontos=pontos[i%10]; } } ///Escrever Carta void escCarta(t_carta carta) { printf("%c%c", carta.face, carta.naipe); } ///Escrever um vetor de Cartas void escVetorDecartas (t_carta vCartas[], int n) { for (int i=0;i<n;i++)escCarta(vCartas[i]); } ///Escrever Baralho void escBaralho ( Seria possível alguém me ajudar com este tópico? Edited January 7, 2023 at 10:18 PM by thoga31 GeSHi Link to comment Share on other sites More sharing options...
thoga31 Posted January 7, 2023 at 10:29 PM Report Share #629580 Posted January 7, 2023 at 10:29 PM Creio que seja isto que precisas para essa função: void escBaralho(t_carta baralho[]) { escVetorDecartas(baralho, 40); } Cumprimentos. Knowledge is free! Link to comment Share on other sites More sharing options...
Tombes010 Posted January 7, 2023 at 10:33 PM Author Report Share #629581 Posted January 7, 2023 at 10:33 PM Obrigado, já tinha pensado nisso mas fiquei em duvida por ser muito simples Estava a complicar 😅 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now