final 攻击网站的游戏
2015-07-30 11:07
597 查看
import java.util.*; 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("Pets.com"); DotCom two=new DotCom(); two.setName("eToys.com"); DotCom three=new DotCom(); three.setName("Go2.com"); dotComList.add(one); dotComList.add(two); dotComList.add(three); System.out.println("Your goal is to sink three dot coms."); System.out.println("Pets.com,eToys.com,Go2.com"); System.out.println("Try to sink them all in the fewest number of guesses."); 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); } finshGame(); } private void checkUserGuess(String userGuess) { numOfGuesses++; String result="miss"; for(DotCom dotComToTest:dotComList) { dotComToTest.checkYourself(userGuess); if(result.equals("hit")) break; if(result.equals("kill")) { dotComList.remove(dotComToTest); break; } } System.out.println(result); } private void finshGame() { System.out.println("All Dot Coms are dead!Your stock is now worthless."); if(numOfGuesses<=18) { System.out.println("It 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 your options"); } } public static void main(String [] args) { DotComBust game=new DotComBust(); game.setUpGame(); game.startPlaying(); } }
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 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; } }
import java.io.*; import java.util.*; 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) { ArrayList<String> alphaCells=new ArrayList<String>(); String [] alphacoords=new String [comSize];//保存字符串 String temp=null;//临时字符串 int [] coords=new int[comSize];//现有字符串 int attemps=0;//目前测试的字符串 boolean success=false;//找到合适的位置吗? int location=0;//目前起始位置 comCount++;//现在处理第几个com int incr=1;//水平增量 if((comCount%2)==1) { incr=gridLength;//垂直增量 } while(!success&attemps++<200)//主要搜索循环 { location=(int)(Math.random()*gridSize);//随机起点 int x=0;//第n个位置 success=true; while(success&&x<comSize) if(grid[location]==0) { coords[x++]=location; location+=incr; if(location>=gridSize) success=false; if(x>0&&(location%gridLength==0)) success=false; }else success=false; } int x=0; int row=0; int column=0; while(x<comSize) { grid[coords[x]]=1; row=(int)(coords[x]/gridLength); column=coords[x]%gridLength; temp=String.valueOf(alphabet.charAt(column)); alphaCells.add(temp.concat(Integer.toString(row))); x++; } return alphaCells; } }
相关文章推荐
- 架构相关
- 手动编译安装LAMP架构,并且实现nagios图形化监控(四)
- IOS 视频直播/智能家居(一行行敲代码,从零开始)lesson:1整体架构
- HeartBeat+DRBD+NFS 高可用
- 在线CRC32网站
- 如何利用General框架进行三层架构开发
- 盘点国内网站常用的一些CDN公共库加速服务
- 代替谷歌搜索的网站
- VC++.Net CAD编程架构
- 用Kettle的一套流程完成对整个数据库迁移 - - ITeye技术网站
- 使用keepalived搭建高可用的LVS-DR集群
- 网站服务架构
- PHP网站页面静态化
- 基于keepalived双主模型的高可用LVS
- 基于keepalived双主模型的高可用LVS
- Hibernate学习之架构
- 一个初学者对于MVC架构的理解
- Jsoup读取东方财富网站数据实例
- C/C++源代码的网站
- 攻击网站的游戏(连续的三个数字)含有ArrayList的升级版