【面向对象】猜拳游戏

/**
 * 计算机玩家类
 *
 * */

import java.util.Scanner;

public class ComputerPlayer {
    //属性
    String name;
    int score;
    //方法
    public int showFist(){
        int fistNo = (int)(Math.random() * 3 + 1);
        String fistType = "";
        switch (fistNo){
            case 1:
                fistType = "剪刀";
                break;
            case 2:
                fistType = "石头";
                break;
            case 3:
                fistType = "布";
                break;
        }
        System.out.println(name + "出拳:" + fistType);
        return fistNo;
    }
}
public class TestComputerPlayer {
    public static void main(String[] args) {
        ComputerPlayer computerplay = new ComputerPlayer();
        computerplay.name ="曹操";
        System.out.println(computerplay.showFist());
    }
}
/**
 * 玩家类
 * */

import java.util.Scanner;


public class PersonPlayer {
    String name;
    int score;

    public int showFist() {
        Scanner input = new Scanner(System.in);
        System.out.print("请出拳:1.剪刀 2.石头 3.布(输入相应的数字):");
        int fistNo = input.nextInt();
        String fistType = "";
        switch (fistNo){
            case 1:
                fistType = "剪刀";
                break;
            case 2:
                fistType = "石头";
                break;
            case 3:
                fistType = "布";
                break;
        }
        System.out.println("你出拳:" + fistType);
        return fistNo;
    }
}
public class TestPersonPlayer {
    public static void main(String[] args) {
        PersonPlayer personplayer = new PersonPlayer();
        System.out.println(personplayer.showFist());
    }
}
import java.util.Scanner;

public class Game {
    
    int times;   //记录游戏的次数
    ComputerPlayer computerPlayer;   //null
    PersonPlayer personPlayer;    //null
    
    public void init() {
        System.out.println("出拳规则:1.剪刀  2.石头  3.布");
        System.out.print("选择对方角色(1:刘备 2:孙权 3:曹操):");
        Scanner input = new Scanner(System.in);
        int role = input.nextInt();
        computerPlayer = new ComputerPlayer();
        switch (role) {
            case 1:
                computerPlayer.name = "刘备";
                break;
            case 2:
                computerPlayer.name = ("孙权");
                break;
            case 3:
                computerPlayer.name = ("曹操");
                break;
            default:
                break;
        }
        System.out.print("请输入你的名字:");
        personPlayer = new PersonPlayer();
        personPlayer.name = input.next();
        System.out.println(personPlayer.name + "  VS  " + computerPlayer.name + " 对战");
        System.out.println();
    }
    
    public void star() {
        Scanner input = new Scanner(System.in);
        System.out.print("要开始吗(y/n):");
        String isBegin = input.next();
        if (isBegin.equalsIgnoreCase("y")) {
            int personFistNo = 0;
            int computerFistNo = 0;
            String isNext = "";
            do {
                times++;
                personFistNo = personPlayer.showFist();
                computerFistNo = computerPlayer.showFist();
                calcOnceResult(personFistNo, computerFistNo);
                System.out.print("是否进入下一轮(y/n)");
                isNext = input.next();
            } while (isNext.equalsIgnoreCase("y"));
        }
        print();
    }

    public void calcOnceResult(int personFistNo, int computerFistNo) {
        if (personFistNo == computerFistNo) {
            //各加1分
            personPlayer.score++;
            computerPlayer.score++;
            System.out.println("握手言和");
        } else {
            //人胜
            if ((personFistNo == 1 && computerFistNo == 3) || (personFistNo == 2 && computerFistNo == 1)
                    || (personFistNo == 3 && computerFistNo == 2)) {
                personPlayer.score = personPlayer.score + 2;
                System.out.println("人定胜天");
            } else {
                computerPlayer.score += 2;  //computerPlayer.score = computerPlayer.score + 2
                System.out.println("计算机胜利");
            }
        }
    }

    public void print() {
        System.out.println("------------------------------------------");
        System.out.println(computerPlayer.name + "  VS  " + personPlayer.name);
        System.out.println("对战次数:" + times);
        System.out.println("姓名\t\t得分");
        System.out.println(personPlayer.name + "\t\t" + personPlayer.score);
        System.out.println(computerPlayer.name + "\t\t" + computerPlayer.score);
        calcTotalResult();
        System.out.println("------------------------------------------");
    }

    public void calcTotalResult() {
        if (personPlayer.score > computerPlayer.score) {
            System.out.println("最终结果:人胜");
        } else if (personPlayer.score == computerPlayer.score) {
            System.out.println("最终结果:平局");
        } else {
            System.out.println("最终结果:人机胜");
        }
    }
}
public class TestGame {
    public static void main(String[] args) {
        Game game = new Game();
        game.init();
        game.star();
    }
}

最终组合成完全体

public class GameApp {
    public static void main(String[] args) {
        //游戏界面
        System.out.println("----------------------欢迎进入游戏世界----------------------");
        System.out.println("                  ************************                  ");
        System.out.println("                  *******猜拳 ,开始******                  ");
        System.out.println("                  ************************                  ");

        //组装游戏部分
        Game game = new Game();
        //初始化
        game.init();
        //开始游戏
        game.star();
        //输出游戏统计结果
        game.print();
        //输出游戏最终结果
        game.calcTotalResult();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值