猜拳游戏之面向过程

这是一个实现石头剪刀布游戏的Java程序,玩家可以选择与刘备、关羽或张飞进行对战。每局游戏后根据胜负更新积分,连续对战直到玩家决定结束。程序包括游戏初始化、玩家出拳、电脑随机出拳、胜负判断和积分统计等功能。

游戏描述

  1. 在进入游戏后可以选择对战的电脑角色名,共有三种选择(1,刘备 2,关羽 3,张飞),
  2. 之后输入自己的游戏昵称
  3. 进入第一场比赛,输入手势(1,剪刀 2,石头3,布),
  4. 电脑手势由随机数输出,
  5. 通过判断得出胜负,并且输出电脑输出的手势,
  6. 如果赢得3分,输了不得分,平了各加一分
  7. 可以由玩家是否继续游戏
  8. 游戏结束输出各自得分情况
  9. 提示是否要开下一局

代码展示

package com.qianfeng.weekendDay02;

import java.util.Scanner;

public class FullGame {
	
	Scanner input = new Scanner(System.in);
	
	String computerName;	//电脑名字
	String PlayerName;		//玩家姓名
	
	int computerIntegral = 0;	//电脑积分
	int playerIntegral = 0;		//玩家积分
	
	String computerMora;	//电脑手势
	String playerMora;		//玩家手势
	
	int gameNumber = 0;		//对战局数
	
	public static void main(String[] args) {
		
		FullGame fullGame = new FullGame();
		String judge = "y";		//是否继续游戏
		String gameJudge = "y";	//是否继续游戏系统
		do {
			
			fullGame.gameStart();
			System.out.println();
			do {
				fullGame.gameCourse();
				fullGame.arbitrament();
				fullGame.gameNumber++;
				System.out.print("是否继续游戏(y/n):" );
				judge = fullGame.input.next();
				System.out.println();
			} while (judge.equals("y"));
			fullGame.gameend();
			System.out.println("是否想开始新游戏(y/n):");
			gameJudge = fullGame.input.next();
			fullGame.setComputerIntegral(0);
			fullGame.setPlayerIntegral(0);
			fullGame.setGameNumber(0);
		} while (gameJudge.equals("y"));
		
		
		
	}
	
	//游戏开始
	public void gameStart() {
		System.out.println("**********************");
		System.out.println("*    欢迎进入游戏        *");
		System.out.println("**********************");
		do {
			System.out.print("请选择对战的游戏角色(1.刘备 2.关羽 3. 张飞):");
			computerName = changeString(input.next());
			if (computerName.equals("刘备") || computerName.equals("关羽") || computerName.equals("张飞")) {
				break;
			} else {
				System.out.println("输入有误!!请您重新输入");
			}
		} while (true);
		System.out.print("请输入您的角色名称:");
		PlayerName = input.next();
		System.out.println(PlayerName + " VS " + computerName);
	}
	
	//游戏初始化
	public void gameCourse() {
		//玩家出拳
		do {
			System.out.print("请" + PlayerName + "出拳(1.剪刀  2.石头 3 布):");
			playerMora = changeChar(input.next());
			if (playerMora.equals("剪刀") || playerMora.equals("石头") || playerMora.equals("布")) {
				break;
			} else {
				System.out.println("输入有误!!请您重新输入");
			}
		} while (true);
		//电脑出拳
		computerMora = changeInt((int)(Math.random()*3+1));
		System.out.println(computerName + "由系统随机出拳为:" + computerMora);
	}
	
	//游戏输赢判断
	private void arbitrament() {
		System.out.println("公布双方的出拳结果--->玩家出的:" + playerMora + "\t电脑出的:" + computerMora);
		if (playerMora.equals("石头") && computerMora.equals("剪刀") || 
			playerMora.equals("剪刀") && computerMora.equals("布") ||
			playerMora.equals("布") && computerMora.equals("石头")) {
			playerIntegral += 3;
			System.out.println(PlayerName + "获胜加上3积分");
		} else if ((computerMora.equals("石头") && playerMora.equals("剪刀") || 
					computerMora.equals("剪刀") && playerMora.equals("布") ||
					computerMora.equals("布") && playerMora.equals("石头")) ){
			computerIntegral += 3;
			System.out.println(computerName + "获胜加上3积分");
		} else {
			playerIntegral++;
			computerIntegral++;
			System.out.println("平手各加1积分");
			
		}
	}
	
	//游戏结束输出
	public void gameend() {
		System.out.println("公布最终比赛结果");
		System.out.println("对战的局数:" + gameNumber);
		System.out.println(PlayerName + "积分为:" + playerIntegral + "\t" + computerName + "积分为:" + computerIntegral);
		if (computerIntegral > playerIntegral) {
			System.out.println(computerName + "赢了,很遗憾");
		} else if (computerIntegral < playerIntegral) {
			System.out.println(PlayerName + "赢了,恭喜您");
		} else {
			System.out.println("平手");
		}
	}
	
	//将字符改为手势
	private String changeChar(String n) {
		switch (n) {
		case "1":
			return "剪刀";
		case "2":
			return "石头";
		case "3":
			return "布";
		default:
			return "错误手势";
		}
	}
	
	//将数字改为手势
	private String changeInt(int n) {
		switch (n) {
		case 1:
			return "剪刀";
		case 2:
			return "石头";
		case 3:
			return "布";
		default:
			return null;
		}
	}
	
	//电脑姓名转变
	private String changeString(String n) {
		switch (n) {
		case "1":
			return "刘备";
		case "2":
			return "关羽";
		case "3":
			return "张飞";
		default:
			return "错误输入";
		}
	}

	public int getComputerIntegral() {
		return computerIntegral;
	}

	public void setComputerIntegral(int computerIntegral) {
		this.computerIntegral = computerIntegral;
	}

	public int getPlayerIntegral() {
		return playerIntegral;
	}

	public void setPlayerIntegral(int playerIntegral) {
		this.playerIntegral = playerIntegral;
	}

	public int getGameNumber() {
		return gameNumber;
	}

	public void setGameNumber(int gameNumber) {
		this.gameNumber = gameNumber;
	}
	
	

}

结果展示

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值