Diana Costa Posted December 14, 2022 at 10:44 PM Report Share #628913 Posted December 14, 2022 at 10:44 PM Boa noite, Pretendo elaborar um código para a execução do jogo Yahtzee no Visual Studio e gostaria de obter alguma sugestão de por onde começar e conselhos relativamente à sua elaboração. Obg Link to comment Share on other sites More sharing options...
thoga31 Posted December 15, 2022 at 08:16 PM Report Share #628954 Posted December 15, 2022 at 08:16 PM Começas por criar um projeto do tipo CLI/Terminal na linguagem C. Depois escreves o teu código. Quando tiveres dúvidas específicas, perguntas. Lamento, mas não há grande coisa que se possa dizer... usa funções, separa o que é I/O da lógica do jogo, e o resto vai em parte por estilo pessoal do programador. Só podemos ajudar com código propriamente dito. Knowledge is free! Link to comment Share on other sites More sharing options...
Diana Costa Posted December 22, 2022 at 06:24 PM Author Report Share #629128 Posted December 22, 2022 at 06:24 PM (edited) Boa tarde, Comecei a elaboração do código do jogo Yahtzee, porém após o lançamento dos primeiros dados o programa pergunta ao utilizador de dados pretende lançar novamente mas este não executa. Será que me poderia ajudar? Este é o segmento do código referido. void lancamento_de_dados() { int n, p, i, x_jogadas = 3; int v_dados[5],repetir = 0; int v_armazenar[5]; int modifica_dados[] = { 1, 1, 1, 1, 1 }; do { printf("\nInsira o numero de dados: "); scanf_s("%d", &n); printf("\nNumeros correspondentes a cada dado: "); for (i = 0; i < n; i++) { if (modifica_dados[i] == 1) v_dados[i] = rand() % 6 + 1; printf("%d ", v_dados[i]); // scanf_s("%d", &v_dados[i]); } printf("\n Deseja lancar os dados novamente (1-sim / 0-Nao): "); scanf_s("%d,%d,%d,%d,%d", &modifica_dados[0], &modifica_dados[1], &modifica_dados[2], &modifica_dados[3], &modifica_dados[4]); printf("%d,%d,%d,%d,%d", modifica_dados[0], modifica_dados[1], modifica_dados[2], modifica_dados[3], modifica_dados[4]); for (p = 0; p < 5; p++) { if (modifica_dados[i] == 1) { repetir = 1; } } x_jogadas--; } while (x_jogadas > 0 && repetir == 1); } Edited December 23, 2022 at 11:46 AM by thoga31 GeSHi Link to comment Share on other sites More sharing options...
thoga31 Posted December 23, 2022 at 12:01 PM Report Share #629139 Posted December 23, 2022 at 12:01 PM A sequência do que perguntas ao utilizador seguido do que lês do input não faz grande sentido. Nomeadamente aqui: printf("\n Deseja lancar os dados novamente (1-sim / 0-Nao): "); scanf_s("%d,%d,%d,%d,%d", &modifica_dados[0], &modifica_dados[1], &modifica_dados[2], &modifica_dados[3], &modifica_dados[4]); printf("%d,%d,%d,%d,%d", modifica_dados[0], modifica_dados[1], modifica_dados[2], modifica_dados[3], modifica_dados[4]); Pedes por um input simples — "0" ou "1" —, mas o scanf() aguarda por 5 números separados por vírgulas. Qual o objetivo da função lancamento_de_dados()? Quais os passos que ela deve completar a fim de alcançar esse objetivo? Knowledge is free! Link to comment Share on other sites More sharing options...
Diana Costa Posted December 23, 2022 at 11:06 PM Author Report Share #629154 Posted December 23, 2022 at 11:06 PM Primeiramente o utilizador tem que lançar obrigatoriamente 5 dados, após esse lançamento ele tem que decidir que valores pretende guardar. Após esta decisão ele tem que lançar novamente os dados que não pretendeu guardar os valores. O utilizador só pode fazer um máximo de 3 lançamentos. Após termos todos os valores (5 no máximo correspondentes aos 5 dados lançados) o programa tem de analisar todos os valores e apresentar em que parâmetro de pontuações se encontra. E no final somar os pontos todos e obter o número de pontos total que irá definir o vencedor do jogo. (Também tenho dúvidas em como fazer o código neta parte do programa). Parâmetro das pontuações UNS - soma de todos os dados com o numero 1 (1-1-3-4-5 vale 2 pontos); DOIS - soma de todos os dados com o numero 2 (2-2-2-4-5 vale 6 pontos); TRES - soma de todos os dados com o numero 3 (3-1-2-4-5 vale 3 pontos); QUATROS - soma de todos os dados com o numero 4 (4-5-4-4-4 vale 16 pontos); CINCOS - soma de todos os dados com o numero 5 (5-2-5-4-2 vale 10 pontos); SEIS - soma de todos os dados com o numero 6 (6-6-6-1-2 vale 18 pontos); PAR - soma de um par de dados (6-6-2-3-4 vale 12 pontos); DOIS PARES - soma de dois par des diferentes (2-2-4-4-5 vale 12 pontos); TRINCA - soma de tres dados iguais (3-3-3-5-6 vale 9 pontos); QUADRA - soma de quatro dados iguais (2-2-2-2-5 vale 8 pontos); FULL HOUSE - soma de tres dados iguais e mais dois dados iguais (2-2-2-4-4 vale 20 pontos); SEQUENCIA BAIXA - a combinacao de dados com 1-2-3-4-5 na jogada (vale 15 pontos); SEQUENCIA ALTA - a combinacao de dados com 2-3-4-5-6 na jogada (vale 20 pontos); CHANCE - soma de 5 dados aleatorios (3-2-4-5-2 vale 16 pontos); YAHTZY - combinacao de 5 dados iguais (50 pontos). Link to comment Share on other sites More sharing options...
pwseo Posted December 24, 2022 at 12:28 AM Report Share #629156 Posted December 24, 2022 at 12:28 AM @Diana Costa Já tentaste esquematizar o fluxo do teu programa? Possivelmente seria útil para perceberes de que forma deves dividir o código, e o que ele deve fazer em cada função. Para isto, é preciso apenas papel e caneta (embora possas, claro está, fazer isso no PC também). 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