JAVA零基础小白自学日志——第十五天

import java.util.ArrayList; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class StartupBust { private GameHelper helper = new GameHelper(); private ArrayList<Startup> StartupsList = new ArrayList<Startup>(); private int numOfGuesses = 0; private void setUpGame() { // first make some Startups and give them locations Startup one = new Startup(); one.setName("poniez"); Startup two = new Startup(); two.setName("hacqi"); Startup three = new Startup(); three.setName("cabista"); StartupsList.add(one); StartupsList.add(two); StartupsList.add(three); System.out.println("Your goal is to sink three Startups."); System.out.println("poniez, hacqi, cabista"); System.out.println("Try to sink them all in the fewest number of guesses"); for (Startup StartupToSet : StartupsList) { ArrayList<String> newLocation = helper.placeStartup(3); StartupToSet.setLocationCells(newLocation); } // close for loop } // close setUpGame method private void startPlaying() { while (!StartupsList.isEmpty()) { String userGuess = helper.getUserInput("Enter a guess"); checkUserGuess(userGuess); } // close while finishGame(); } // close startPlaying method private void checkUserGuess(String userGuess) { numOfGuesses++; String result = "miss"; // assume a miss until told otherwise for (int i = 0; i < StartupsList.size(); i++) { Startup StartupToTest = (Startup) StartupsList.get(i); result = StartupToTest.checkYourself(userGuess); if (result.equals("hit")) { break; } if (result.equals("kill")) { StartupsList.remove(i); // he's gone break; } } // close for System.out.println(result); } private void finishGame() { System.out.println("All Startups are dead! Your stock is now worthless"); if (numOfGuesses <= 9) { System.out.println("It only took you " + numOfGuesses + " guesses. You get the Enron award!"); } else { System.out.println("Took you long enough. " + numOfGuesses + " guesses."); System.out.println("Too bad you didn't get out before your options sank."); } } public static void main(String[] args) { StartupBust game = new StartupBust(); game.setUpGame(); game.startPlaying(); } } class Startup { private ArrayList<String> locationCells; // private int numOfHits = 0; // don't need to track this now private String name; //public void setLocationCells(ArrayList<String> locs) { // locationCells = locs; // } 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"; } // end if } // end outer if return result; } // end method } // close class 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> placeStartup(int comSize) { ArrayList<String> alphaCells = new ArrayList<String>(); // holds ‘f6' type coords String temp = null; // temporary String for concat int[] coords = new int[comSize]; // current candidate coords int attempts = 0; // current attempts counter boolean success = false; // flag = found a good location ? int location = 0; // current starting location comCount++; // nth Startup to place int incr = 1; // set horizontal increment if ((comCount % 2) == 1) { // if odd Startup (place vertically) incr = gridLength; // set vertical increment } while (!success & attempts++ < 200) { // main search loop (32) location = (int) (Math.random() * gridSize); // get random starting point //System.out.print(" try " + location); int x = 0; // nth position in Startup to place success = true; // assume success while (success && x < comSize) { // look for adjacent unused spots if (grid[location] == 0) { // if not already used coords[x++] = location; // save location location += incr; // try ‘next' adjacent if (location >= gridSize) { // out of bounds - ‘bottom' success = false; // failure } if (x > 0 && (location % gridLength == 0)) { // out of bounds - right edge success = false; // failure } } else { // found already used location // System.out.print(" used " + location); success = false; // failure } } } // end while int x = 0; // turn location into alpha coords 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; } }
上一篇:【问题记录】配置mongodb副本集实现数据流实时获取-操作步骤


下一篇:抽象工厂模式与工厂方法(简单工厂)的区别