Jump to content

Jogo da sueca em C


Tombes010
 Share

Recommended Posts

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 by thoga31
GeSHi
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.