Source Code Listing 2
- By Vince Huston
- February 24, 2001
Component JAVA
Mastermind and Design Paradigms
Vince Huston
Listing 2.
import java.io.*;
public class MastermindPlayDS1 {
public static void main( String[] args ) throws IOException {
BufferedReader rdr = new BufferedReader( new InputStreamReader( System.in ));
String str = null;
BoardDS1 board = new BoardDS1();
int[] response = new int[2];
while (response[0] != BoardDS1.NUM_SLOTS) {
System.out.print( "Enter guess: " );
str = rdr.readLine();
board.evaluate( str.toCharArray(), response );
System.out.println( " " + response[0] + ' ' + response[1] );
} } }
class BoardDS1 {
public static final int NUM_CHOICES = 6;
public static final int NUM_SLOTS = 4;
private char[] answer = new char[NUM_SLOTS];
private boolean[] answerUsed = new boolean[NUM_SLOTS];
private boolean[] guessUsed = new boolean[NUM_SLOTS];
private int[] answerChars = new int[NUM_CHOICES];
private int[] guessChars = new int[NUM_CHOICES];
public BoardDS1() {
// populate answer array with random characters
for (int i=0; i < num_slots;="" i++)="" answer[i]="(char)" ('a'="" +="" (int)="" (math.random()*1000)="" %="" num_choices);="" for="" (int="" i="0;" i="">< num_slots;="" i++)="" answerchars[="" answer[i]="" -="" 'a'="" ]++;="" }="" public="" void="" evaluate(="" char[]="" guess,="" int[]="" response="" )="" {="" response[0]="response[1]" =="" 0;="" initialize="" boolean="" arrays="" for="" (int="" i="0;" i="">< num_slots;="" i++)="" guessused[i]="answerUsed[i]" =="" false;="" compute="" black="" answer="" for="" (int="" i="0;" i="">< num_slots;="" i++)="" if="" (guess[i]="=" answer[i])="" {="" response[0]++;="" guessused[i]="answerUsed[i]" =="" true;="" }="" compute="" white="" answer="" for="" (int="" i="0;" i="">< num_slots;="" i++)="" if="" (="" !="" guessused[i])="" for="" (int="" j="0;" j="">< num_slots;="" j++)="" if="" (="" !="" answerused[j])="" if="" (guess[i]="=" answer[j])="" {="" response[1]++;="" guessused[i]="answerUsed[j]" =="" true;="" break;="" }="" }="" }="">