用java写猜拳小游戏

题目:用面向对象编程的思想,设计一个猜拳游戏,完成人机猜拳互动游戏的开发。

  • 题目要求:
  • 基本思想:
  • 各部分主要代码:
    • Npc1类代码:
    • Player1类:
    • content方法:
    • checked方法:
    • 全部代码:
    • 结果展示:

题目要求:

1)选取对战角色
2)猜拳
3)记录分数

基本思想:

1)创建一个Npc1类,类中有设定人物的编号属性,人物属性,分数属性。
2)创建一个Player1类,类中有玩家人名属性,玩家分数属性,
3)创建一个content方法,输入相应的拳的序号,返回相应的拳;
4)创建一个checked方法,将电脑随机产生的序号和我们从键盘呢输入的序号作比较,判断输赢,返回结果;
5)调用checked方法,将返回值在switch里面分别作比较,输出相应的结果;

各部分主要代码:

Npc1类代码:

class Npc1 {int number;//Npc1的编号String name;//Npc1的名字int score;//记录Npc1的分数public Npc1(){}public int getNumber() {return number;//调用此方法获取Npc编号}public void setNumber(int number) {this.number = number;//给Npc设置编号}public String getName() {return name;//调用此方法获取选手选择电脑的随机人物名}public void setName(String name) {this.name = name;//给Npc名字赋值}public int getScore() {return score;//调用此方法获取目前得分}public void addScore() {this.score++;//调用此方法,电脑分数加1}public int ran(){//调用此方法可以获取电脑随机出的什么拳Random random=new Random();int number=(random.nextInt(3)+1);//随机产生(1、2、3)三个数字return number;//返回随机产生的数字}
}

Player1类:

class Player1 {String name;//选手的名字int score;//选手的分数public Player1(){//无参构造方法}public Player1(String name,int score){//这是有参构造方法this.name=name;this.score=score;}public String getName() {return name;//调用此方法获取选手的名字}public void setName(String name) {this.name = name;//调用此方法给选手名字赋值}public int getScore() {return score;//调用此方法获取选手目前得分}public void addScore() {this.score++;//调用此方法,选手分数就加1}public int guess(){//调用此方法可以获取选手要出什么拳Scanner scanner=new Scanner(System.in);int number=scanner.nextInt();//选手从键盘获取要出的拳的对应的数字return number;//返回从键盘输入的数字}
}

content方法:

public static String content(int num){switch (num){case 1:return "剪刀";case 2:return "石头";case 3:return "布";}return null;}

checked方法:

  //规定0表示平局 1表示npc赢了  2表示玩家赢了public static int checked(int random,int guess){switch(random){case 1:switch(guess){case 1:return 0;case 2:return 2;case 3:return 1;}case 2:switch(guess){case 1:return 1;case 2:return 0;case 3:return 2;}case 3:switch (guess){case 1:return 2;case 2:return 1;case 3:return 0;}}return -1;}

全部代码:

package homework09.homework0901;
import java.util.Random;
import java.util.Scanner;
//猜拳小游戏
public class Demo01 {public static void main(String[] args) {System.out.println("*************************************");System.out.println("**************猜拳,开始***************");System.out.println("*************************************");System.out.println("出拳规则:1、剪刀 2、石头 3、布");System.out.println("请选择对方角色:(1、孙膑 2、孙权 3、孙尚香)");Npc1 npc1=new Npc1();//实例化对象Player1 player1=new Player1();Scanner scanner = new Scanner(System.in);int number=scanner.nextInt();//从键盘输入一个数字,对应一个电脑人物switch(number){case 1:npc1.setNumber(1);npc1.setName("孙膑");break;case 2:npc1.setNumber(2);npc1.setName("孙权");break;case 3:npc1.setNumber(3);npc1.setName("孙尚香");break;}System.out.println("请输入你的名字:");String name=scanner.next();//从键盘输入一个名字player1.setName(name);//把名字值传递给setName方法,方便后期调用System.out.println(player1.getName()+" VS "+npc1.getName()+" 对战 ");System.out.println("要开始吗?(y/n)");//对局提示int count=0;//统计对战局数while(true){String str=scanner.next();//从键盘输入一个字符if(str.equals("y")) {//判断字符是否等于ycount++;//对局次数加1System.out.println("请出拳:1、剪刀 2、石头 3、布(输入相应的数字)");int guess= player1.guess();System.out.println("你出拳为:"+content(guess));int ran=npc1.ran();System.out.println(npc1.getName()+"出拳为:"+content(ran));int result=checked(ran,guess);switch (result){case 0:break;case 1:npc1.addScore();System.out.println("你输了,真是太笨了");break;case 2:player1.addScore();System.out.println("你赢了,真棒!");break;}System.out.println("是否要开始下一轮?(y/n)");}else{System.out.println("--------------------------------------");System.out.println(player1.getName()+" VS "+npc1.getName());System.out.println("对战次数:"+count);System.out.println();System.out.println("姓名"+"\t\t\t"+"得分");System.out.println(player1.getName()+"\t\t\t"+player1.getScore());System.out.println(npc1.getName()+"\t\t\t"+npc1.getScore());if(player1.getScore()<npc1.getScore()){System.out.println("结果:呵呵,笨笨,下次加油啊!");}else if(player1.getScore()==npc1.getScore()){System.out.println("结果:你和"+npc1.getName()+"平局");}else{System.out.println("结果:恭喜你真棒!");}break;}}}//规定0表示平局 1表示npc赢了  2表示玩家赢了public static int checked(int random,int guess){switch(random){case 1:switch(guess){case 1:return 0;case 2:return 2;case 3:return 1;}case 2:switch(guess){case 1:return 1;case 2:return 0;case 3:return 2;}case 3:switch (guess){case 1:return 2;case 2:return 1;case 3:return 0;}}return -1;}public static String content(int num){switch (num){case 1:return "剪刀";case 2:return "石头";case 3:return "布";}return null;}
}
class Npc1 {int number;//Npc1的编号String name;//Npc1的名字int score;//记录Npc1的分数public Npc1(){}public int getNumber() {return number;//调用此方法获取Npc1编号}public void setNumber(int number) {this.number = number;//给Npc1设置编号}public String getName() {return name;//调用此方法获取玩家选择电脑人物的随机人物名}public void setName(String name) {this.name = name;//给Npc1名字赋值}public int getScore() {return score;//调用此方法获取电脑人物目前得分}public void addScore() {this.score++;//调用此方法,电脑人物分数加1}public int ran(){//调用此方法可以获取电脑人物随机出的什么拳Random random=new Random();int number=(random.nextInt(3)+1);//随机产生(1、2、3)三个数字return number;//返回随机产生的数字}
}class Player1 {String name;//玩家的名字int score;//玩家的分数public Player1(){//无参构造方法}public Player1(String name,int score){//这是有参构造方法this.name=name;this.score=score;}public String getName() {return name;//调用此方法获取玩家的名字}public void setName(String name) {this.name = name;//调用此方法给玩家名字赋值}public int getScore() {return score;//调用此方法获取玩家目前得分}public void addScore() {this.score++;//调用此方法,玩家分数就加1}public int guess(){//调用此方法可以获取玩家要出什么拳Scanner scanner=new Scanner(System.in);int number=scanner.nextInt();//玩家从键盘获取要出的拳的对应的数字return number;//返回从键盘输入的数字}
}

结果展示:

在这里插入图片描述
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部