CODE:
import java.util.*;
import java.io.*;
public class DotComBust{
private GameHelper helper= new GameHelper();
private ArrayList<DotCom> dotComsList = new ArrayList<DotCom>();
private int numOfGuesses=0;
private void setUpGame(){
DotCom one = new DotCom();
one.setName("Pets.com");
DotCom two = new DotCom();
two.setName("eToys.com");
DotCom three = new DotCom();
three.setName("Go2.com");
dotComsList.add(one);
dotComsList.add(two);
dotComsList.add(three);
System.out.println("please Guess!:");
for (DotCom dotComToSet : dotComsList){
ArrayList<String>newLocation = helper.placeDotCom(3);
dotComToSet.setLocationCells(newLocation);
}
}
private void StartPlaying(){
while(!dotComsList.isEmpty()){
String userGuess=helper.getUserInput("Enter a guess!");
checkUserGuess(userGuess);
}
finishGame();
}
public class GameHelper {
private static final String alphabet = "abcdefg";
private int gridLength = 7;
private int gridSize = 49;
private int [] grid = new int[gridSize];
private int comCount = 0;
public String getUserInput(String prompt) {
String inputLine = null;
System.out.print(prompt + " ");
try {
BufferedReader is = new BufferedReader(
new InputStreamReader(System.in));
inputLine = is.readLine();
if (inputLine.length() == 0 ) return null;
} catch (IOException e) {
System.out.println("IOException: " + e);
}
return inputLine.toLowerCase();
}
public ArrayList<String> placeDotCom(int comSize) {
ArrayList<String> alphaCells = new ArrayList<String>();
//String [] alphacoords = new String [comSize]; // 保存字符串
String temp = null; // 臨時字符串
int [] coords = new int[comSize]; // 現有字符串
int attempts = 0; // 目前測試的字符串
boolean success = false; // flag = 找到了合適的字符嗎 ?
int location = 0; // 目前起點
comCount++;
int incr = 1;
if ((comCount % 2) == 1) {
incr = gridLength;
}
while ( !success & attempts++ < 200 ) {
location = (int) (Math.random() * gridSize);
//System.out.print(" try " + location);
int x = 0;
success = true;
while (success && x < comSize) {
if (grid[location] == 0) {
coords[x++] = location;
location += incr;
if (location >= gridSize){
success = false;
}
if (x>0 & (location % gridLength == 0)) {
success = false;
}
} else {
// System.out.print(" used " + location);
success = false;
}
}
}
int x = 0;
int row = 0;
int column = 0;
// System.out.println("\n");
while (x < comSize) {
grid[coords[x]] = 1; // mark master grid pts. as 'used'
row = (int) (coords[x] / gridLength); // get row value
column = coords[x] % gridLength; // get numeric column value
temp = String.valueOf(alphabet.charAt(column)); // convert to alpha
alphaCells.add(temp.concat(Integer.toString(row)));
x++;
// System.out.print(" coord "+x+" = " + alphaCells.get(x-1));
}
// System.out.println("\n");
return alphaCells;
}
}
private void checkUserGuess(String userGuess){
numOfGuesses++;
String result ="miss";
for (DotCom dotComToTest : dotComsList){
result = dotComToTest.checkYourself(userGuess);
if (result.equals("hit")){
break;
}
if (result.equals("kill")){
break;
}
}
System.out.println(result);
}
private void finishGame(){
System.out.println("ALL DOT HAVE BEEN KILLED!YOU WIN THE GAME!");
System.out.println("It took you "+numOfGuesses+"guesses.");
}
public class DotCom{
private ArrayList<String> locationCells;
private String name;
public void setLocationCells(ArrayList<String> loc){
locationCells=loc;
}
public void setName(String n){
name=n;
}
public String checkYourself(String userInput){
String result ="miss";
int index= locationCells.indexOf(userInput);
if (index>=0){
locationCells.remove(index);
if(locationCells.isEmpty()){
result ="kill";
System.out.println("Ouch! You Sunk"+name+" :(");
}else{
result="hit";
}
}
return result;
}
}
public class Day {
public static void main(String args[]) {
DotComBust game = new DotComBust();
game.setUpGame();
game.StartPlaying();
}
}
}