攻击DotCom小游戏
许久都没写博客了,些许是前段时间有些懈怠,今天来写博客,想记录下做过的事情,怕以后电脑换了,以前做的小项目也跟着丢了,总结下最近做的一个小游戏:
游戏目的:建立一个7X7的网格,选择其中的连续的三格来作为一个目标,一共有3个目标,对每次的猜数,给一个hit,miss,kill,如果三个目标都杀完了,返回猜测次数,给个分数
游戏核心:类之间的交流 private对属性设置后部分代码的重构 ArrayList的使用
要求:main()作为一个启动程序 基本上所有的代码都放到各类中
一个类里面:属性propety和方法method
property method main 三者居然就构建了java的世界 佩服OO
headfirst中提及极限编程:意在对课题有基本了解后,先写只重功能的测试码,却不去想怎么实现,再去一一写各类,在我写这个游戏时,确也不只一次的先联想到测试码,而后再去想各类的编写,竟是如此自然
注意:这其中却遇到了一个for循环,在逻辑上一定会对res变量赋值,愚蠢的电脑却只有在运行的时候才能知道,可是由于res的赋值在for循环中,因此编译器只能报错
因此如果以后遇到这种情况姑且给变量赋值,因为既然逻辑上会被赋值,想必也会更改他的值,我们就姑且打消编译器的疑虑吧,啊哈哈哈哈
Game类:
package twoClass;
import java.util.ArrayList; class Game{
int numOfGuess = 0;
ArrayList<DotCom> ThreeDotCom;
GameHelper helper; void SetUp(){
DotCom [] Three = new DotCom[3];
helper = new GameHelper();
ArrayList<DotCom> tmp= new ArrayList<DotCom>();
for(int i = 0; i < 3; i++){
Three[i] = new DotCom();
}
Three[0].nameSet("pet.com");
Three[1].nameSet("amaoza.com");
Three[2].nameSet("tmall.com");
for(int i = 0; i < 3; i++){
tmp.add(Three[i]);
}
ThreeDotCom = tmp;
for(DotCom Cell: ThreeDotCom){
ArrayList<String> generator = helper.placeDotCom(3);
Cell.setLocation(generator);
}
}
void startPlaying(){
String guess;
String res = " ";
while(!ThreeDotCom.isEmpty()){
guess = helper.getUserInput("Enter a num:");
numOfGuess++;
for(DotCom Cell : ThreeDotCom){
res = Cell.checkUserGuess(guess);
if(res == "kill"){
ThreeDotCom.remove(Cell);
}
if(res != "miss")
break;
}
System.out.println(res);
}
} void finishGame(){
System.out.println("you have sunk three dots by " + numOfGuess + "guess");
}
public static void main(String [] args){
Game myGame = new Game();
myGame.SetUp();
myGame.startPlaying();
myGame.finishGame();
}
}
DotCom类:
package twoClass;
import java.util.ArrayList;
public class DotCom{
private ArrayList<String> LocCell;
private String name;
public void nameSet(String webName){
name = webName;
}
public void setLocation(ArrayList<String> Loc){
LocCell = Loc;
}
public String checkUserGuess(String guess){
String res = "miss";
if(LocCell.contains(guess)){
res = "hit";
LocCell.remove(guess);
if(LocCell.isEmpty())
res = "kill";
}
if(res == "kill"){
System.out.println("ouch! You have sunk " + name);
}
return res;
}
}
以及搬来的砖:
package twoClass;
import java.util.*;
import java.io.*;
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; 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;
} 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 attempts = 0;
boolean success = false;
int location = 0; comCount++;
int incr = 1;
if((comCount % 2) == 1){
incr = gridLength;
} while( !success & attempts++ < 200 ){
location = (int) (Math.random() * gridSize);
int x = 0;
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;
} }
攻击DotCom小游戏的更多相关文章
- [安卓] 12、开源一个基于SurfaceView的飞行射击类小游戏
前言 这款安卓小游戏是基于SurfaceView的飞行射击类游戏,采用Java来写,没有采用游戏引擎,注释详细,条理比较清晰,适合初学者了解游戏状态转化自动机和一些继承与封装的技巧. 效果展示 ...
- 自制Unity小游戏TankHero-2D(2)制作敌方坦克
自制Unity小游戏TankHero-2D(2)制作敌方坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...
- 12岁的少年教你用Python做小游戏
首页 资讯 文章 频道 资源 小组 相亲 登录 注册 首页 最新文章 经典回顾 开发 设计 IT技术 职场 业界 极客 创业 访谈 在国外 - 导航条 - 首页 最新文章 经典回顾 开发 ...
- c++制作小游戏--雷电
用c++实现了一个小游戏--雷电,貌似执行的还不错.贴图和声效也是Duang!Duang!的.整个项目我也会给出下载链接,有兴趣的能够编译执行一下.用到了C++11的新特性,最好是使用vs2013编译 ...
- 小游戏大智慧,10 个让人眼前一亮的 JavaScript 游戏
摘要: JS还可以这么玩~ Fundebug经授权转载,版权归原作者所有. 这是一篇有趣的文章,我们精选了 JS13K 游戏编程挑战的优秀作品,与大家分享.JS13K 是专为 JavaScript 开 ...
- 原生JS实现的h5小游戏-植物大战僵尸
代码地址如下:http://www.demodashi.com/demo/12755.html 项目介绍 本项目是利用原生js实现的h5小游戏-植物大战僵尸,主要结合了一下自己对于h5小游戏的理解,结 ...
- Chrome自带恐龙小游戏的源码研究(七)
在上一篇<Chrome自带恐龙小游戏的源码研究(六)>中研究了恐龙的跳跃过程,这一篇研究恐龙与障碍物之间的碰撞检测. 碰撞盒子 游戏中采用的是矩形(非旋转矩形)碰撞.这类碰撞优点是计算比较 ...
- day22 01 初识面向对象----简单的人狗大战小游戏
day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战 怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...
- c++小游戏
#include <iostream> using namespace std; double shengmingli=2000;//定义主角初始生命力 int gongjili=150; ...
随机推荐
- Piggy-Bank (hdoj1114)
Piggy-Bank Problem Description Before ACM can do anything, a budget must be prepared and the necessa ...
- Linux的启动流程以及GRUB详解
一.Linux引导和启动流程 概述,计算机电源接通后通过BISO之后,没有问题,就会去硬盘上找到MBR(Main Boot Record 主引导记录区)位于整个硬盘的0磁道0柱面1扇区, ...
- asp.net mvc,做 301 永久重定向
以下代码为 asp.net mvc 4.0 代码做的 301 永久重定向 string url = “http://www.csdn.net/test.html” Response.StatusCod ...
- JVM 看不到某些异常的stacktrace问题(转)
在java 1.5的release notes里面可以看到这样一句话: The compiler in the server VM now provides correct stack backtra ...
- Erlang语言介绍
Erlang (/ˈɜrlæŋ/ er-lang) is a general-purpose concurrent, garbage-collected programming language an ...
- jQuery改造插件,添加回调函数
<script language="javascript" type="text/javascript"> function doSomething ...
- Tar打包、压缩与解压缩到指定目录的方法
tar在linux上是常用的打包.压缩.加压缩工具,他的参数很多,折里仅仅列举常用的压缩与解压缩参数 参数: -c :create 建立压缩档案的参数: -x : 解压缩压缩档案的参数: -z : 是 ...
- cf467A George and Accommodation
A. George and Accommodation time limit per test 1 second memory limit per test 256 megabytes input s ...
- 《Java解惑》书摘
例子1:关于char数组的输出 System.out.println("H" + "a");//输出:Ha System.out.println('H' + ' ...
- iOS 创建推送证书
1.首先你想创建推送证书和以前你做真机测试证书一样,需要实现准备一个99$的付费账号.然后登陆苹果开发者网站.http://developer.apple.com/ 2.登陆以后你能看到这个界面然后选 ...