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

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

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

}

时间: 2024-12-28 01:02:33

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

游戏数值——LOL篇 以LOL为起点-说游戏数值设计核心思路

附     文   文档在今年三月份我动笔写了一小部分,但当时思路凌乱,行文梗阻,于是丢在一边构思了半年,现在又回过头来慢慢写,希望能写好写完吧,初衷是希望即时萌新也能看懂,但是好像并不能行——本来几个数据就能弄好的东西,我不得不用文字把他们阐述清楚(可是如果不说清楚,只留下一串数据那就毫无意义可言——比如RPG中装备掉落率,如果不说清楚的掉落率的来源根据,仅仅一个数值有什么意义呢?),所以导致文档变得长而又长 虽然说是数值相关的文档,但本文更多地还是以用户及游戏性 (付费)为导向来说明数值方案

游戏自动发布系统思路

⑴ftp.rsync.shell实现游戏资源自动发布至cdn集群; ⑵利用svn的hooks.python实现游戏代码自动发布至web集群; 游戏自动发布系统思路

小甲鱼Python视频第004讲:(改进我们的小游戏)课后习题及参考答案

------------恢复内容开始------------ 测试题: 0. 请问以下代码会打印多少次“我爱鱼C!” while 'C':      print('我爱鱼C!') 一直打印 1.请问以下代码会打印多少次“我爱鱼C! i = 10 while i:     print('我爱鱼C!')     i = i - 1      打印10-1+1次,共计10次 eg: 10次 2. 请写出与 10 < cost < 50 等价的表达式     cost > 10 and cost

004 改进我们的小游戏

1 temp = input("请输入一个整数:") 2 m=int(temp) 3 while m: 4 print(m) 5 m=m-1 原文地址:https://www.cnblogs.com/sunshining-f/p/8622824.html

LOG.ZS.0001.基于Freetype的游戏字体渲染优化思路

Total Utf8-ucs2 Html_parse Layout Render_string Init_texture Ft_load_glyph 原始 2293 1 26 708 1556 2 1403 上表用于记录优化各步骤的消耗时间. 生成的文本纹理,文本是加州宾馆的全歌词. 原始版本整个纹理的生成耗时2300毫秒左右,可以看到实际是慢得发指. 究其原因,是由于实现iron引擎的时候未进行任何性能方面的考虑. 上述时间表的构成: total : 总消耗时间 utf8-ucs2: 将utf

htc vive 游戏切换武器功能思路以及demo(unity,c#)

</pre>个人感觉vr游戏或者展示类程序的灵魂就是真实感以及身临其境的感觉,如果场景中加入了大量的ui会破坏真实感,影响感觉,因此我觉得ui这种东西在vr里应该尽量转化为现实物体,比如显示屏,按钮等,一来增加了交互,二来也在增加真实感的同时也实现了ui的功能.<span style="font-family:黑体; word-wrap:break-word; color:rgb(105,105,105); font-size:16px; line-height:25px&qu

零基础学python-3.6 根据模块结构 改进我们的游戏

回顾一下我们的游戏: #建立游戏的核心玩法类 class core(object): version=1.0 def guessNum(self): try: secret=random.randint(1,100)#生成随机数 #print (secret) time=6#猜数字的次数 guess=0#输入的数字 minNum=0#最小随机数 maxNum=100#最大随机数 print("---------欢迎来到猜数字的地方,请开始---------") print("

小项目特供 贪吃蛇游戏(基于C语言)

C语言写贪吃蛇本来是打算去年暑假写的,结果因为ACM集训给耽搁了,因此借寒假的两天功夫写了这个贪吃蛇小项目,顺带把C语言重温了一次. 是发表博客的前一天开始写的,一共写了三个版本,第一天写了第一版,第二天写了第二版和第三版. 相信C语言写个小游戏或小项目是大多数计算机相关专业的学生都做的事情,但是作为一个数学专业的学生,我们教研室的老师对C语言的要求也就比较低了,大一没有让我们做个小项目实践一次.至今为止用C/C++做过的三个小项目(大作业),一个是外校同学让我帮忙写的学生信息管理系统(天呐,这

第1部分: 游戏引擎介绍, 渲染和构造3D世界

原文作者:Jake Simpson译者: 向海Email:[email protected] ------------------------------------------------------------第1部分: 游戏引擎介绍, 渲染和构造3D世界 介绍 自Doom游戏时代以来我们已经走了很远. DOOM不只是一款伟大的游戏,它同时也开创了一种新的游戏编程模式: 游戏 "引擎". 这种模块化,可伸缩和扩展的设计观念可以让游戏玩家和程序设计者深入到游戏核心,用新的模型,场景和