1. One last problem for the last chapter: when we input the same number 3 times, it can still kill the game.
if (guess == cell){
result = "hit";
numofHits++;
break;
}
We counted a hit every time the user guessed a cell location, even if that location had already been hit.
To do: need a way to know that when a user makes a hit, he hasn't previously hit that cell.
Option 1: create a new array to store the numbers that have already been guessed, and check them every time the user make a new guess
Option 2: change the value of a hit number
Option 3: delete the location cell that been hit.
2. ArrayList, a class in the core Java library (the API)
add(Object elem); remove(int index); remove(Object elem); contains(Object elem); isEmpty(); indexOf(Object elem); size(); get(int index);
New and improved DotCom class
import java.util.Arraylist;
public class SimpleDotCom {
int [] locationCells;
int numofHits = 0;
private ArrayList<String> locationCells;
public void setLocationCells (ArrayList<String> locs){
locationCells = locs;
}
public String checkYourself (String userInput){
String result = "miss";
int index = locationCells.indexOf(userInput);
if (index>=0)
{
locationCells.remove(index);
if (locationCells.isEmpty())
{
result = "kill";
}
else
{
result = "hit";
}
}
System.out.println(result);
return result;
}
}
and make some changes to the SimpleDotComGame:
ArrayList<String> locations = new ArrayList<String>();
locations.add(Integer.toString(randomNum));
locations.add(Integer.toString(randomNum+1));
locations.add(Integer.toString(randomNum+2));
theDotCom.setLocationCells(locations);
boolean isAlive = true;
Here is the result:
3. Now let's make the real game:
but since we haven't learn how to build a GUI, so this version works at the command-line.
changes we need to make :
1) add a name variable to hold the name of the DotCom;
2)Create three DotComs instead of one, and give each of the three DotComs a name; Put the DotComs on a grid rather than just a single row; Check each user guess with all three DotComs, instead of just one.
3 classes: the DotComBust, the game class, makes DotComs, gets user input, plays until all DotComs are dead.
The actual DotCom objects, DotComs know their name, location, and how to check a user guess for a match.