Java入门案列之猜拳小游戏
最近正在学习Java基础知识,终于完成了第一个小demo,记录下来,算是一个小总结与整理,也希望可以帮助到别人。
先看看我写了哪些类:
Player:玩家类;
ComputerPlayer:机器人玩家类,主要用来实现机器人随机出拳;
Game:游戏类,主要实现游戏规则的逻辑,以及正式游戏的逻辑;
TestGuessBox:代码测试类;
Player类:
//玩家类
publicclassPlayer{
privateStringname;//玩家昵称
privateintscore;//玩家积分
privateStringbox;//玩家出的
//玩家构造函数,传入玩家昵称与玩家初始积分
Player(Stringname,intscore){
this.name=name;
this.score=score;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetScore(){
returnscore;
}
publicvoidsetScore(intscore){
this.score=score;
}
publicStringgetBox(){
returnbox;
}
publicvoidsetBox(Stringbox){
this.box=box;
}
}
ComputerPlayer类
publicclassComputerPlayerextendsPlayer{
//机器人玩家构造函数,传入机器人昵称与初始积分
ComputerPlayer(Stringname,intscore){
super("机器人"+name,score);
//TODOAuto-generatedconstructorstub
}
/**
*实现机器人玩家随机出拳的逻辑
*/
voidpunch(){
String[]box={"剪刀","石头","布"};
intindex=(int)(Math.random()*3);
this.setBox(box[index]);
}
}
Game类
importjava.util.Scanner;
publicclassGame{
Playerp;//玩家
ComputerPlayercp;//机器人玩家
//构造函数,得到一个玩家和一个机器人玩家
Game(Playerp,ComputerPlayercp){
this.p=p;
this.cp=cp;
}
//开始游戏
voidstart(){
System.out.println("玩家"+p.getName()+
"和"+cp.getName()+"开始游戏咯");
System.out.println("您的初始积分为:"+p.getScore()+
"\n"+cp.getName()+"的积分是:"+cp.getScore());
Scannersc=newScanner(System.in);
while(true){
System.out.println("请出拳(剪刀石头布,exit退出游戏):");
Stringpbox=sc.next();
if(filter(pbox)){//过滤器
if(pbox.equals("exit")){//退出游戏
break;
}else{
p.setBox(pbox);
cp.punch();
System.out.println("您出了:"+p.getBox());
System.out.println(cp.getName()+"出了:"+cp.getBox());
intresult=ruler(p,cp);
if(result>0){
System.out.println("您赢了,赢得10积分");
p.setScore(p.getScore()+10);
cp.setScore(cp.getScore()-10);
}
elseif(result<0){
System.out.println("您输了,扣除10积分");
p.setScore(p.getScore()-10);
cp.setScore(cp.getScore()+10);
}
else{
System.out.println("您和机器人打平了!");
}
}
}
else{
System.out.println("输入了无法识别的关键字,请重新输入:");
continue;//退出本次循环,进入下一次循环
}
}
System.out.println("本轮结束,积分情况如下:");
System.out.println("您的当前积分:"+p.getScore());
System.out.println(cp.getName()+"的当前积分:"
+cp.getScore());
}
/**
*游戏规则
*
*@paramp1玩家1
*@paramcp2机器玩家2
*@return0为打平,1为玩家赢,-1为机器玩家赢
*/
intruler(Playerp1,Playercp2){
if(p1.getBox().equals("剪刀")){
if(cp2.getBox().equals("石头"))
return-1;
elseif(cp2.getBox().equals("布"))
return1;
}elseif(p1.getBox().equals("石头")){
if(cp2.getBox().equals("剪刀"))
return1;
elseif(cp2.getBox().equals("布"))
return-1;
}elseif(p1.getBox().equals("布")){
if(cp2.getBox().equals("剪刀"))
return-1;
elseif(cp2.getBox().equals("石头"))
return1;
}
return0;
}
/**
*过滤器
*@params需要过滤的文字
*@return
*/
booleanfilter(Strings){
if(s.equals("剪刀")||s.equals("石头")||s.equals("布")||s.equals("exit")){
returntrue;
}else
returnfalse;
}
}
TestGuessBox类
publicclassTestGuessBox{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Playerp=newPlayer("小七月",100);
ComputerPlayercp=newComputerPlayer("小丑八怪",100);
Gamegame=newGame(p,cp);
game.start();
}
}
很简单,理清了思路就很容易写了。如果有错误请指出。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。