首页 > 编程 > Java > 正文

Head first java 第五章(二)

2019-11-06 07:26:53
字体:
来源:转载
供稿:网友

DotCom类

import java.util.ArrayList;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){ //if猜中 locationCells.remove(index); if(locationCells.isEmpty()){ result = "kill"; //若locationCells为空,则该DotCom被kill System.out.println(name+" go die"); }else{ result = "hit"; //若不为空,则result为hit } } return result; //checkYourself方法返回result }}

DotComBust类

import java.util.ArrayList;public class DotComBust { private GameHelper helper = new GameHelper(); private ArrayList<DotCom> dotComList = new ArrayList<DotCom>(); private int numOfGuesses = 0; private void setUpGame(){ DotCom one = new DotCom(); one.setName("dog.com"); DotCom two = new DotCom(); two.setName("ac.com"); DotCom three = new DotCom(); three.setName("bili.com"); dotComList.add(one); dotComList.add(two); dotComList.add(three); //初始化,命名及加入ArrayList System.out.println("kaishi"); for(DotCom dotComToSet : dotComList){ ArrayList<String> newLocation = helper.placeDotCom(3); dotComToSet.setLocationCells(newLocation); } } private void startPlaying(){ while(!dotComList.isEmpty()){ String userGuess = helper.getUserInput("enter a guess"); checkUserGuess(userGuess); //调用checkUserGuess方法检查输入 } finishGame(); } private void checkUserGuess(String userGuess){ numOfGuesses++; String result = "miss"; for(DotCom dotComToTest :dotComList){ result = dotComToTest.checkYourself(userGuess); //调用checkYourself方法 if (result.equals("hit")){ break; //checkYourself方法返回result为hit,则输出结果 } if(result.equals("kill")){ dotComList.remove(dotComToTest); break; //checkYourself方法返回result为kill,从DotComList移除DotComToTest } } System.out.println(result); } private void finishGame(){ System.out.println("你赢了"); if(numOfGuesses <= 18){ System.out.println("一共"+numOfGuesses+"次完成游戏"); }else{ System.out.println("用时有点久"); } } public static void main (String[] args){ DotComBust game = new DotComBust(); game.setUpGame(); game.startPlaying(); }}

GameHelper类(该类主要用处为设置DotCom位置)

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;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) { // line 19 ArrayList<String> alphaCells = new ArrayList<String>(); String [] alphacoords = new String [comSize]; // 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 dot com to place int incr = 1; // set horizontal increment if ((comCount % 2) == 1) { // if odd dot com (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 dotcom 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 good 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; } }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表