5-2、 使用继承实现:“剪刀石头布的游戏”
游戏有两个对象参加,一个是电脑玩家,一个是人类玩家,电脑自动出拳,玩家输入出拳,游戏判断二者胜负,并输出结果。要求使用继承。
定义一个计算机玩家类ComputerPlayer:
它有一个成员变量(name)和一个成员方法(show)。其中的成员变量表示它的名称,成员方法表示出拳的行为,出的拳值是由系统产生随机数表示。(提示:随机数可以使用Math.random()方法,或使用Random类)
定义一个游戏玩家类PersonPlayer:
它有一个成员变量(name)和一个成员方法(show)。其中的成员变量表示它的名称,成员方法表示出拳的行为,出的拳值是由用户输入的整数表示。
定义一个游戏类Game:
它有两个成员变量(computer\player)和一个成员方法(start),其中的成员变量分别表示两个对手,一个是计算机玩家对象,一个是游戏玩家对象。成员方法表示一次游戏过程。
编写一个测试类,完成一次剪刀石头布的游戏。
提示:
从ComputerPlayer类,personPlayer类,找出共同的属性和共同的行为;定义为二者的父类Player类。
ComputerPlayer类,personPlayer类,使用继承的方式定义,恰当运用用继承、重写、super关键字等。
import java.util.Scanner;
//父类
class Player
{
int name;
//public Player(int name)
//{
//this.name=name;
//}
public void show(int name)
{
System.out.println(name);
}
}
//子类1
class ComputerPlayer extends Player
{
int name;
//方法重写
public void show(int name1)
{
System.out.println("computershow is "+name1);
}
}
//子类2
class PersonPlayer extends Player
{
int name;
//方法重写
public void show(int name2)
{
System.out.println( "PersonPlayer is "+name2);
}
}
class Game
{
int com;
int per;
public void start(int p,int c)
{
//com= new ComputerPlayer();
//per=new PersonPlayer();
if(p==1) {
if(c==1) {
System.out.println("平局");
}
else if(c==2) {
System.out.println("person winner");
}
else if(c==3) {
System.out.println("computer winner");
}
}
else if(p==2) {
if(c==2) {
System.out.println("平局");
}
else if(c==3) {
System.out.println("person winner");
}
else if(c==1) {
System.out.println("computer winner");
}
}
else if(p==3) {
if(c==3) {
System.out.println("平局");
}
else if(c==1) {
System.out.println("person winner");
}
else if(c==2) {
System.out.println("computer winner");
}
}
}
}
public class game1 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入1,2,3分别表示石头剪刀布:");
int x=(int)(Math.random()*2+1);
int y=sc.nextInt();
ComputerPlayer p1=new ComputerPlayer();
p1.show(x);
PersonPlayer p2=new PersonPlayer();
p2.show(y);
Game p=new Game();
p.start(x,y);
}
}