实现结果:
人机猜拳:
********************************************
*****************猜拳,开始***************
********************************************
出拳规则: 1.剪刀2.石头 3.布
请选择对方角色(1.刘备2.孙权3.曹操)
请输入你的名字:小怪兽
小怪兽VS孙权
要开始吗?(y/n) : y
*********************************************
请出拳: 1.剪刀2.石头3.布(输入相应数字) :
你出拳:石头
孙权出拳:剪刀
哇,你赢了,好厉害!
是否开始下一局(y/n) : y
********************************************
请出拳: 1.剪刀2.石头3.布(输入相应数字) :3
实现方法及思路:
玩家类:
属性:姓名:name,赢的次数:count
方法:出拳(),giveName()给名字赋值
电脑类:
属性:姓名:name,赢的次数:count
方法:出拳(),giveName()
游戏类:
属性:sum(共多少次),玩家对象,电脑对象
方法:Conoare()每一局的对战结果
versult()最后对战结果
XXX VS XXX
XXX 赢了 XX局
电脑赢了 XX局
最终对战结束:谁赢了
编程实现:
1. 电脑类:
import java.util.Random;
import java.util.Scanner;
//电脑类:名字,计数,猜拳属性
public class Computer {
Scanner input = new Scanner(System.in);
private String name;
private int count;
private String chuquan;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getChuquan() {
return chuquan;
}
public void setChuquan(String chuquan) {
this.chuquan = chuquan;
}
//获得名字方法
public void giveName(){
System.out.print("请选择对方角色(1.刘备 2.孙权 3.曹操)");
int name=0;
boolean panduan=true;
do{
try{
do{
name = input.nextInt();
if(name>0 && name<4){
panduan=false;
}else{
System.err.println("输入错误,请输入1-3之间的整数:");
}
}while(panduan==true);
}catch (Exception e) {
System.err.println("输入错误,请输入1-3之间的整数:");
input.next();
}
}while(panduan==true);
if(name==1){
this.name = "刘备";
}else if(name==2){
this.name = "孙权";
}else{
this.name = "曹操";
}
}
//电脑随机获得数字的猜拳方法
public void guess(){
Random random1 = new Random();
int jishu = random1.nextInt(3);
if(jishu==1){
chuquan = "剪刀";
}else if(jishu==2){
chuquan = "石头";
}else{
chuquan = "布";
}
}
}
2. 玩家类:
import java.util.Scanner;
//玩家类:名字,计数,猜拳属性
public class Player {
Scanner input = new Scanner(System.in);
private String name;
private int count;
private String chuquan;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getChuquan() {
return chuquan;
}
public void setChuquan(String chuquan) {
this.chuquan = chuquan;
}
//用户输入玩家名字的方法
public void giveName(){
System.out.println("请输入你的名字:");
name = input.next();
}
//用户猜拳方法
public void guess(){
System.out.print("请出拳:\t1.剪刀\t2.石头\t3.布(输入相应数字):");
int jishu = 0;
boolean panduan=true;
do{
try{
do{
jishu = input.nextInt();
if(jishu>0 && jishu<4){
panduan=false;
}else{
System.err.println("输入错误,请输入1-3之间的整数:");
}
}while(panduan==true);
}catch (Exception e) {
System.err.println("输入错误,请输入1-3之间的整数:");
input.next();
}
}while(panduan==true);
if(jishu==1){
setChuquan("剪刀");
}else if(jishu==2){
setChuquan("石头");
}else if(jishu==3){
setChuquan("布");
}
}
}
3. 游戏类
//游戏类
public class Game {
//初始化玩家类和电脑类
Player p = new Player();
Computer c = new Computer();
//游戏开始
public void start(){
c.giveName();
p.giveName();
System.out.println(p.getName()+" VS "+c.getName());
}
//判断每次猜拳的结果
public void game(){
p.guess();
c.guess();
System.out.println("你出拳:"+p.getChuquan());
System.out.println(c.getName()+"出拳:"+c.getChuquan());
if((p.getChuquan().equals("剪刀") && c.getChuquan().equals("布")) || (p.getChuquan().equals("石头") && c.getChuquan().equals("剪刀")) || (p.getChuquan().equals("布") && c.getChuquan().equals("石头"))){
p.setCount(p.getCount()+1);
System.out.println("哇,你赢了,好厉害!");
}else if((c.getChuquan().equals("剪刀") && p.getChuquan().equals("布")) || (c.getChuquan().equals("石头") && p.getChuquan().equals("剪刀")) || (c.getChuquan().equals("布") && p.getChuquan().equals("石头"))){
c.setCount(c.getCount()+1);
System.out.println("对不起,你输了!");
}else if(c.getChuquan().equals(p.getChuquan())){
System.out.println("平局!");
}
}
//输出最终结果
public void versult(){
System.out.println(p.getName()+" VS "+c.getName());
System.out.println(p.getName()+"赢了"+p.getCount()+"局");
System.out.println("电脑赢了"+c.getCount()+"局");
if(p.getCount() > c.getCount()){
System.out.println("最终对战结果:"+p.getName()+"赢了");
}else if(p.getCount() < c.getCount()){
System.out.println("最终对战结果:电脑赢了");
}else if(p.getCount() == c.getCount()){
System.out.println("最终对战结果:平局");
}
}
}
4. 测试类
//测试类
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("********************************");
System.out.println("************猜拳, 开始************");
System.out.println("********************************");
System.out.println("出拳规则:\t1.剪刀\t2.石头\t3.布");
//调用Game类
Game g = new Game();
g.start();
System.out.println();
System.out.println("要开始吗?(输入y继续,输入其他结束)");
String panduan = input.next();
//循环game方法
while(panduan.equals("y")){
System.out.println("********************************");
g.game();
System.out.println("是否开始下一局(输入y继续,输入其他结束) : ");
panduan = input.next();
}
System.out.println("游戏结束");
g.versult();
}
}