攻击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; ...
随机推荐
- QListWidget与QTableWidget的使用以及样式设置
QListWidget和QTableWidget的使用和属性,QTableWidget和QListWidget样式表的设置,滚动条的样式设置 一.QListWidget的使用 //一.QListWid ...
- EPiServer 简单项目总结
国内用到的EPiServer应该不多,所以记录点用到过的东西,以便分享 1.EPiServer office site http://www.episerver.com/ 2.EPiServer CM ...
- css 优先级
css优先级的四大原则: 原则一: 继承不如指定 如果某样式是继承来的永远不如具体指定的优先级高.例子1:CODE:<style type="text/css"> &l ...
- C编程技巧
1,attempted assighnment to literal if (i == 3) { //codes } else if (4 == 4); 2,引用数组元素相当于对指针加上偏移量的引用 ...
- python 重要模块
1,使用字典的特殊字符串替换,基于字典的字符串格式化
- 基于Andoird 4.2.2的同步框架源代码学习——同步提供端
Android同步框架 同步(synchronization)允许用户将远程数据下载到新的设备上,同时将设备上的帐户数据上传到远端.同步还保证用户能够看到最新的数据. 开发者自然可以通过自己的方式来设 ...
- 代理方法keywordAction与Fun的使用
代理是一种特殊的,指向某个方法模块所在的地址.一般来讲,那个方法模块,能够是一个普通的方法,很多其它的时候,是一团匿名的lamda表达式,即一个匿名方法.如今简单理解一下代理的简写方式,即Action ...
- Android 开源框架ActionBarSherlock 和 ViewPager 仿网易新闻客户端
转载请注明出处:http://blog.csdn.net/xiaanming/article/details/9971721 大家都知道Android的ActionBar是在3.0以上才有的,那么在3 ...
- 多进程用户并发处理Demo(C#版)
这个示例主要演示的是在多进程操作数据库时,如何避免并发重复数据入库的例子. 过多的线程理论不再阐述,网上.书上皆有. 项目采用 Asp.Net Framework 4.5 / Mysql 5.4 数据 ...
- 【部分枚举】【3-21个人赛】ProblemH
Problem H Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Sub ...