Diana Costa Posted December 14, 2022 at 10:44 PM Report #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
thoga31 Posted December 15, 2022 at 08:16 PM Report #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!
Diana Costa Posted December 22, 2022 at 06:24 PM Author Report #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
thoga31 Posted December 23, 2022 at 12:01 PM Report #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!
Diana Costa Posted December 23, 2022 at 11:06 PM Author Report #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).
pwseo Posted December 24, 2022 at 12:28 AM Report #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).
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