您的位置:首页 > 其它

改进了一下这个游戏的输出及思路,是不是好玩多了??:)

2015-05-04 23:20 405 查看
终于看了两天才摸 熟悉,还是有点笨啊。。。

GameHelper.java

import java.io.*;
import java.util.*;

public class GameHelper {
int comCount = 0;

public String getUserInput(String prompt) {
String inputLine = null;
System.out.println(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) {
final String alphabet = "abcdefg";
int gridLength = 7;
int gridSize = 49;
int [] grid = new int[gridSize];

ArrayList<String> alphaCells = new ArrayList<String>();
String temp = null;
int [] coords = new int[comSize];
int attempts = 0;
boolean success = false;
int location = 0;
int incr;
if (((int) (Math.random() * 2) % 2) == 1) {
incr = gridLength;
} else {
incr = 1;
}
//System.out.println("incr is: " + incr);

while ( !success & attempts++ < 200) {
location = (int) (Math.random() * gridSize);
//System.out.println("location: " +location);
int x = 0;
success = true;
while (success && x < comSize) {
if (grid[location] == 0) {
coords[x++] = location;
location += incr;
//System.out.println("location: " +location);
if (location >= gridSize) {
success = false;
}
if (x > 0 && (location % gridLength == 0)) {
success = false;
}
} else {
success = false;
}
//System.out.println("sucess status is :" + success);
//System.out.println("x value is :" + x);
}
}
//System.out.print("coords array is :");
//for (int item : coords) {
//    System.out.print(item + " ");
//}
//System.out.println("");
int x = 0;
int row = 0;
int column = 0;
while (x < comSize) {
grid[coords[x]] = 1;
row = (int) (coords[x] / gridLength);
//System.out.println("row value is :" + row);
column = (int) (coords[x] % gridLength);
temp = String.valueOf(alphabet.charAt(column));
//System.out.println("temp value is :" + temp);
alphaCells.add(temp.concat(Integer.toString(row)));
x++;
}
//for (String item : alphaCells) {
//    System.out.print(item + " ");
//}
return alphaCells;
}

}


DotCom.java

import java.util.*;

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 getName() {
return name;
}

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;
}

}


DotComBurst.java

import java.util.*;

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("Your goal is to sink three doc coms.");
System.out.println("Pets.com, eToys.com, Go2.com");
System.out.println("Try to sink them all in the fewsest number of guesses.");

for(DotCom dotComToSet : dotComsList) {
ArrayList<String> newLocation = helper.placeDotCom(3);
dotComToSet.setLocationCells(newLocation);
for (String item : newLocation) {
System.out.print( item +" ");
}

System.out.println(dotComToSet.getName());
System.out.println();
}
}

private void startPlaying() {
while (!dotComsList.isEmpty()) {
String userGuess = helper.getUserInput("Enter a guess");
checkUserGuess(userGuess);
}
finishGame();
}

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")) {
dotComsList.remove(dotComToTest);
break;
}
}
System.out.println(result);
}

private void finishGame(){
System.out.println("All Dot Coms are dead! Your stock is now worthless.");
if (numOfGuesses < 18) {
System.out.println("It's only took you " + numOfGuesses + " guesses.");
System.out.println("You got out before your options sank.");
} else {
System.out.println("Took you long enough." + numOfGuesses + " guesses.");
System.out.println("Fish are dancing with you options..");
}
}

public static void main (String[] args) {
DotComBust game = new DotComBust();
game.setUpGame();
game.startPlaying();
System.out.println("Finish");
}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐