java面向对象实现两人猜拳游戏

本文介绍了一个基于Java的石头剪刀布游戏程序,详细展示了Player和CaiPan类的设计,包括对象的创建、属性的设定及游戏逻辑的实现。通过随机数生成玩家出拳动作,并根据游戏规则判断胜负,更新玩家分数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Player类

public class Player {

/**
 * @author DCH
 */
private String name;
private int score;

/*
 * 无参构造器
 * 
 */
public Player(){
	
}

/*
 * 
 * 有参构造器
 * 
 */
public Player(String name,int score){
	this.name=name;
	this.score=score;
}

//get/set方法
public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

public int getScore() {
	return score;
}

public void setScore(int score) {
	this.score = score;
}

//可以出拳   出拳 石头(1) ,剪刀(2),布(3)
	/**
	 * 出拳方法 
	 * @return
	 */
	public int getNum(){
		// 生成一个随机数  ,  1  2  3  
		int r = (int)(Math.random()*100);
		if(r<33){
			System.out.println(name+"出拳:石头");
			return 1;
		}else if(r<66){
			System.out.println(name+"出拳:剪刀");
			return 2;
		}else{
			System.out.println(name+"出拳:布");
			return 3;
		}
	 
	}

public void scoreInfo(){
	System.out.println("分数为"+getScore());
}

}

caipan类

public class CaiPan {

/**
 * @author DCH
 */
//第一个选手
private Player player1;
//第二个选手
private Player player2;

//无参构造器
public CaiPan(){
	
}


//有参构造器
public CaiPan(Player player1,Player player2){
	this.player1=player1;
	this.player2=player2;
}


//get/set方法
public Player getPlayer1() {
	return player1;
}

public void setPlayer1(Player player1) {
	this.player1 = player1;
}

public Player getPlayer2() {
	return player2;
}

public void setPlayer2(Player player2) {
	this.player2 = player2;
}

//可以出拳   出拳 石头(1) ,剪刀(2),布(3)
public void change(){
	int	a=player1.getNum();
	int b=player2.getNum();
	if(a==1){
		if(b==2){
			int s =  player1.getScore()+1;
			player1.setScore(s);
			System.out.println("赢的人为 "+player1.getName());
		}else if(b==3){
			int s =  player2.getScore()+1;
			player2.setScore(s);
			System.out.println("赢的人为 "+player2.getName());
		}else{
			System.out.println("平局");
		}
	}
	if(a==2){
		if(b==1){
			int s =  player1.getScore()+1;
			player1.setScore(s);
			System.out.println("赢的人为 "+player2.getName());
		}else if(b==3){
			int s =  player2.getScore()+1;
			player2.setScore(s);
			System.out.println("赢的人为 "+player1.getName());
		}else{
			System.out.println("平局");
		}
	}
	if(a==3){
		if(b==1){
			int s =  player1.getScore()+1;
			player1.setScore(s);
			System.out.println("赢的人为 "+player1.getName());
		}else if(b==2){
			int s =  player2.getScore()+1;
			player2.setScore(s);
			System.out.println("赢的人为  "+player2.getName());
		}else{
			System.out.println("平局");
		}
	}
}

}

CQtest类(测试类)

public class CQtest {

/**
 * @author DCH
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub
	
	Player player1 = new Player();
	player1.setName("杜");
	Player player2 = new Player();
	player2.setName("李");
	CaiPan caipan1 = new CaiPan();
	//这里出现空指针异常的问题是
	//初始化了但是没有给对象player1和player2,
	//导致不能调用player类里面相关的方法与属性.
	caipan1.setPlayer1(player1);
	caipan1.setPlayer2(player2);
	for (int i = 0; i < 10; i++){
		caipan1.change();
	}
	player1.scoreInfo();
	player2.scoreInfo();
}

}

注意在初始化对象时,可以通过构造器,也可以通过set/get方法给对象赋值,
例如构造器:CaiPan caipan1 = new CaiPan(Player player1,Player player2);
例如set/get方法: CaiPan caipan1 = new CaiPan();//这个是调用无参构造器
caipan1.setPlayer1(player1);
caipan1.setPlayer2(player2);
如果没有set设置对象的话,就不能在Caipan类调用Player类的对象方法和属性.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值