Java基础编程练习

6-49 使用继承,实现“剪刀石头布的游戏”分数 10

使用继承,实现“剪刀石头布的游戏”。

小时候很喜欢玩一个游戏,“剪刀石头布”,可以是出拳的形式,或跳格子的形式。现在我们用计算机来玩这个游戏。
电脑用随机数产生剪刀石头布,游戏玩家用输入1,2,3的方式出拳。
游戏玩家输入1或2或3,分别 代表剪刀(1)石头(2)布(3)。
电脑胜出时,显示"Winner is computerPlayer."
游戏玩家胜出时,显示“Winner is personPlayer.”
平局时显示"A Draw."

函数接口定义:

根据主方法内容,实现三个类的定义,分别是是ComputerPlayer、PersonPlayer、Game类。
其中ComputerPlayer、PersonPlayer要继承Player类。
根据主方法中的用法,实现Game类。

裁判测试程序样例:

import java.util.Scanner;

class Player{
    String name;
    Player(String name){
        this.name = name;
    }
    int show() {  //出拳方法
        int show = ( int ) (Math.random() * 10 ) %3  +1;
        return show ;
    }
}
/* 请在这里填写答案 */

public class Main {

    public static void main(String[] args) {
        ComputerPlayer c = new ComputerPlayer ("computer");
        PersonPlayer  p = new PersonPlayer("player ") ;
        Game g = new Game( c ,p );
        g.start();  
    }

}

输入样例:

2

输出样例:

A Draw.

以下是答案:这道题有的时候能通过PTA有时候不能,我很好奇电脑出的不应该是随机数吗,怎么会有判断我出的和电脑出的比较,怎么一定能保证和答案的一样呢???


import java.util.Scanner;
public class Pta_6_49 {
	public static void main(String args[]) {
		ComputerPlayer c = new ComputerPlayer("computer");
		PersonPlayer p = new PersonPlayer("player");
		Game g =new Game(c,p);
		g.start();
	}

}
class Player{
	String name;
	Player(String name){
		this.name=name;
	}
	int show() {
		int show = (int)(Math.random()*10)%3+1;
		return show;
	}
}
class Game{
	int com;
	int per;
	Game(ComputerPlayer c,PersonPlayer p){
		this.com = c.show();
		this.per = p.show();
	}
	void start(){
		if(com==per) {
			System.out.println("A Draw.");
		}
		else if(com==1&&per==2) {
			System.out.println("Winner is personPlayer.");
		}
		else if(com==2&&per==3) {
			System.out.println("Winner is personPlayer.");
		}
		else if(com==3&&per==1) {
			System.out.println("Winner is personPlayer.");
		}
		else {
			System.out.println("Winner is computerPlayer.");
		}
	}
}
class ComputerPlayer extends Player{
	ComputerPlayer(String name){
		super(name);
	}
	 int show() {  
	        int show = ( int ) (Math.random() * 10 ) %3  +1;
	        return show ;
	    }

}
class PersonPlayer extends Player{
	PersonPlayer(String name) {
		super(name);
	}
	int show() {  
		Scanner sc = new Scanner(System.in);
        return sc.nextInt();
    }
}
  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值