码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-04 23:54:15      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:

终于看了两天才摸 熟悉,还是有点笨啊。。。

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

}

技术分享

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

标签:

原文地址:http://www.cnblogs.com/aguncn/p/4477983.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!