虽然之前通过看视频和入门书学习了简单的java知识,不过感觉自己离真正的入门还差了点呢,所以开启刷书之路,先从这本相对来说简单而又生动的HeadFitst JAVA开始吧。
类不是对象,却是用来创建对象的模型
main的两种用途:
测试真正的类
启动java应用程序
书中代码:猜数字的小游戏
(这个小程序的目的是体现java中类之间的交互,把main解放出来)
game产生一个一定范围内的随机数,几个player猜测该数字
类的设计:GuessGame,Player,GameLaunchers
思路是:
GameLaunchers作为登录器,实例化
GuessGame;
GuessGame对象的成员变量决定了数字范围,玩家数等游戏信息,并由start方法运行。
Player对象呢,就只有一个ID号,哦对了,还有猜的数字的相关信息和方法
废话不多说啦,把代码拉出来看看
先上登录器的代码
package GuessingGame;
import java.io.IOException;
public class GameLauncher {
public static void main(String[] args) throws IOException {
GuessGame newgame=new GuessGame(1,30,2);
while(true){
newgame.start();
System.out.println("按Q键退出,其他任意键继续");
if(System.in.read()=='q'||System.in.read()=='Q')break;
}
}
}
再是核心游戏功能的实现
package GuessingGame;
import java.util.Scanner;
public class GuessGame {
int minNum=0;
int maxNum=3;
int guessNum=-1;
int playerNum=3;
Player[] plarr;
public GuessGame(){
this.plarr =new Player[this.playerNum];
for(int i=0;i<plarr.length;i++){
plarr[i]=new Player(i+1);
}
System.out.println("Ready");
}
public GuessGame(int minN,int maxN,int playerNum){
this.minNum=minN;
this.maxNum=maxN;
this.guessNum=minNum-1;
this.playerNum=playerNum;
this.plarr =new Player[this.playerNum];
for(int i=0;i<plarr.length;i++){
plarr[i]=new Player(i+1);
}
System.out.println("Ready");
}
public void start(){
System.out.println("I'm thinking of a number between "+minNum+" and "+maxNum);
this.guessNum=(int)((Math.random())*(maxNum-minNum))+minNum;
System.out.println("Guess what it is!");
Scanner sc=new Scanner(System.in);
for(int i=0;i<this.plarr.length;i++){
System.out.println("Please Guess, "+"Player "+plarr[i].id);
plarr[i].guessNum(sc.nextInt());
}
System.out.println("Now it's the time to judge:");
boolean hasRight=false;
StringBuilder str=new StringBuilder();
for(int i=0;i<plarr.length;i++){
if(plarr[i].guess==this.guessNum){hasRight=true;str.append("player "+plarr[i].id+" ,");}
}
if(hasRight){
str.deleteCharAt(str.length()-1);
str.append("win the game");
}else{
str.replace(0,str.length(), "No one get the right number");
}
System.out.println("The number is "+this.guessNum+". "+str);
}
}
然后是简单的player类
package GuessingGame;
public class Player {
int id;
int guess;
public Player(int id){
this.id=id;
}
public void guessNum(int guess){
this.guess=guess;
System.out.println("Player "+this.id+" is guess "+guess);
}
}
最后我试了下java的打包发布,把它打包成了jar包,在cmd中跑了一下,不过要记得为多文件的它设置一个入口,在这里就是GuessLauncher这个类了。
虽然简单,不过还是很开心~