攻击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; ...
随机推荐
- Django 1.6 基于类的通用视图
Django 1.6 基于类的通用视图 最初 django 的视图都是用函数实现的,后来开发出一些通用视图函数,以取代某些常见的重复性代码.通用视图就像是一些封装好的处理器,使用它们的时候只须要给出特 ...
- I/O事件
I/O事件 最近在研究tornado和gevent,里面涉及了非阻塞I/O.在了解非阻塞I/O之前,需要先了解I/O事件 我们知道,内核有缓冲区.假设有两个进程A,B,进程B想读进程A写入的东西(即进 ...
- jQuery插件jqplot的详细配置说明和渲染器
jQuery插件jqplot的详细配置说明和渲染器 (2012-08-23 08:57:42) 转载▼ 标签: jqplot 详细配置 渲染器 it 分类: 技术类 jQuery.jqplot插件的官 ...
- 正式学习React (七) react-router 源码分析
学习react已经有10来天了,对于react redux react-redux 的使用流程和原理,也已经有一定的了解,在我上一篇的实战项目里,我用到了react-route,其实对它还只是 停留在 ...
- 你应该知道的CSS文字大小单位PX、EM、PT[转]
摘要: 这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章, 题目有点吓人,但是确实是现在国内网页制作方面的一些缺陷.我一直也搞不清楚px与em之间的关系和特点,看过以后确实收获很大.平 ...
- linux上应用随机启动
这是个go项目,其他的可以参考. 首先要有个脚本比如demo #!/bin/bash # # etcd This shell script takes care of starting and sto ...
- 跨域(cross-domain)访问 cookie (读取和设置)
Passport 一方面意味着用一个帐号可以在不同服务里登录,另一方面就是在一个服务里面登录后可以无障碍的漫游到其他服务里面去.坦白说,目前 sohu passport 在这一点实现的很烂(不过俺的工 ...
- [Leetcode][Python]43: Multiply Strings
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 43: Multiply Stringshttps://leetcode.co ...
- linux之SQL语句简明教程---HAVING
那我们如何对函数产生的值来设定条件呢?举例来说,我们可能只需要知道哪些店的营业额有超过 $1,500.在这个情况下,我们不能使用 WHERE 的指令.那要怎么办呢?很幸运地,SQL 有提供一个 HAV ...
- 【ZOJ】3785 What day is that day? ——浅谈KMP在ACM竞赛中的暴力打表找规律中的应用
转载请声明出处:http://www.cnblogs.com/kevince/p/3887827.html ——By Kevince 首先声明一下,这里的规律指的是循环,即找到最小循环周期. 这 ...