• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Nuno_Martins

Ajuda em Mastermind

1 mensagem neste tópico

Boas pessoal,

Tenho de implementar uma versão do Mastermind, em consola.

Eis o enunciado de forma resumida:

Nesta versão em vez de usar cores, temos de usar letras, compreendidas entre A e H.

O primeiro jogador escolhe 4 letras, sem repetir nenhuma. Em seguida o jogador 2 tem de as adivinhar (também se repetir nenhuma. Por cada tentativa é-lhe indicado: quantas letras estão no sitio certo, quantas estão no sitio errado mas pertencem à combinação e quantas não pertencem à combinação. No final tem de indicar as tentativas usadas.

Exemplo:

combinação escolhida: BAFG

<limpar écran>

Tentativa 1: BCDF, resultado: 1 no sítio certo, 1 no sítio errado, e 2 erradas

Tentativa 2: ACDF, resultado: 0 no sítio certo, 2 no sítio errado, e 2 erradas

Temos também de usar os seguintes métodos:

boolean jogadaValida( String comb );
int quantasCertas(String chave, String adivinha );
int quantasForaSitio(String chave, String adivinha );

Para ser mais fácil de ajudar, aqui está o código que tenho até agora:

import java.util.*;

public class Exercicio15 {

static boolean jogadaValida(String comb) {
	boolean validacao = false;
	for(int i = 0; i < comb.length(); i++) {
		if(comb.charAt(i) >= 'A' && comb.charAt(i) <= 'H')
			validacao = true;
		else
			validacao = false;
	}
	return validacao;
}
static int quantasCertas(String chave, String adivinha) {
	int nCertas = 0;
	for(int i = 0; i < chave.length(); i++) {
		if(adivinha.charAt(i) == chave.charAt(i))
			nCertas++;
	}
	return nCertas;
}
public static void main(String[] args) {
	Scanner input = new Scanner(System.in);

	String comb = "";
	boolean validacao = false;

	while(validacao == false) {
		System.out.println("Letras possíveis: A, B, C, D, E, F, G e H");
		System.out.println("Jogador 1: Escolha uma combinação de 4 letras, sem repetir nenhuma: ");
		comb = input.nextLine();

		for(int i = 0; i < 10; i++)
			System.out.println();

		validacao = jogadaValida(comb);
	}
	System.out.println("Jogador 2: Introduza a sua tentativa: ");
	String adivinha = input.nextLine();

	quantasCertas(comb, adivinha);
}
}

No método jogadaValida(String comb) ele verifica se as letras introduzidas pertence às possíveis (entre A e H), só que não sei como posso fazer para verificar se existem alguma(s) repetida(s).

Cumprimentos e obrigado desde já.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora