猜拳游戏案例

猜拳是由石头、剪刀、布组成,可以选择你的对手是谁,这里设定了3个对手(总裁、副总、总监),然后选择你的出拳,通过使用数字1、2、3来分别代表着3种状态。然后我们还需要加上计分的功能。这里我们建立4个类,人、机、主方法、测试类。

当然啦,我们都知道人类和机类的基本方法都差不多,因为我们要获取到键盘的输入内容,所以我们要使用这个Scanner ,这个在util包下面,我们直接导入就可以了。这里直接贴出的代码:

import java.util.Scanner;

public class Person{
	private String name;
	private int score;

	public Person(){
		name="sdksdk0";
		score=0;
	}
	public Person(String n){
		name=n;
		score=0;
	}
	public int showFist(){
		Scanner input=new Scanner(System.in);
		System.out.println("\n请出拳:1 剪刀 2 石头  3  布(输入相应数字):");
		int show=input.nextInt();
		switch(show){
		case 1:
			System.out.println("你出拳:剪刀");
			break;
		case 2:
			System.out.println("你出拳:石头");
			break;
		case 3:
			System.out.println("你出拳:布");
			break;
		}
		return show;
	}
	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;
	}
}

机类的话,自然需要一个随机数了,这样才可以随机比较。

import java.util.Random;
public class Android{

	private String name;
	private int score;
	public Android(String n){
		name=n;
		score=0;
	}
	public Android(){
		name="Android";
		score=0;
	}
	public int showFist(){
		Random r=new Random();
		int show=r.nextInt(3)+1;
		switch(show){
		case 1:
			System.out.println("你出拳:剪刀");
			break;
		case 2:
			System.out.println("你出拳:石头");
			break;
		case 3:
			System.out.println("你出拳:布");
			break;
		}
		return show;
	}
	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;
	}
}

下面最重要的是我们的主方法类了。

我们需要来定义人、机、计分方法。

private Person person;

private Android android;

private int count;

功能初始化

public void initial(){

person=new Person();

android=new Android();

count=0;

}

定义显示结果:

if(result==1){
			System.out.println("结果:平分秋色");
		} else if(result==2){
			System.out.println("结果:"+person.getName()+"你赢了");
		} else if(result==3){
			System.out.println("结果:"+person.getName()+"你输了"+android.getName()+"赢了");
		}

在这几种情况下是玩家赢了:

1 剪刀 2 石头  3  布

用户1对机器3,用户2对机器1,用户3对机器2.

如果用户输入的和机器产生的一样就是平局了,其余情况就是机器赢了。

至于计算分数的话就这样就可以了android.setScore(android.getScore()+1);

完整代码如下:

import java.util.Scanner;
public class Referee{
	private Person person;
	private Android android;
	private int count;

	//初始化功能
	public void initial(){
		person=new Person();
		android=new Android();
		count=0;
	}

	//计算 总分
	public int calcResult(){
		if(person.getScore()==android.getScore()){
			return 1;
		} else if(person.getScore()>android.getScore()){
			return 2;
		} else{
			return 3;
		}
	}

	//显示总结果
	public void showResult(){
		System.out.println("======================");
		System.out.println(person.getName()+"VS"+android.getName());
		System.out.println("总对战次数:"+count);
		int result=calcResult();
		if(result==1){
			System.out.println("结果:平分秋色");
		} else if(result==2){
			System.out.println("结果:"+person.getName()+"你赢了");
		} else if(result==3){
			System.out.println("结果:"+person.getName()+"你输了"+android.getName()+"赢了");
		}
		System.out.println("======================");
	}

	public void startGame(){
		System.out.println("======================");
		System.out.println("\n\t************************");

		System.out.println("请选择你的对手  1 总裁  2  副总  3  总监");

		Scanner input=new Scanner(System.in);
		int role=input.nextInt();
		switch(role){
		case 1:
			android.setName("总裁");
			break;
		case 2:
			android.setName("副总");
			break;
		case 3:
			android.setName("总监");
			break;
		}
		System.out.println("\n要开始吗?[Y/N]");
		String con=input.next();
		int perFist;
		int androidFist;
		while(con.equals("Y")){
		//	perFist = person.showFist();
			perFist=person.showFist();
			androidFist=android.showFist();

		if(perFist==androidFist){
			System.out.println("结果:平局");
		} else if((perFist==1&&androidFist==3)
			||(perFist==2&&androidFist==1)
			||(perFist==3&&androidFist==2)){
		System.out.println("结果:"+person.getName()+"赢了!");
		person.setScore(person.getScore()+1);

		} else{
		System.out.println("结果:"+person.getName()+"输了");
		android.setScore(android.getScore()+1);
		}

		count++;
		System.out.print("\n是否开始下一轮(Y/N)");
		con=input.next();
		}
		showResult();
	}
}

最后,我们只需要一个测试类就可以了

public class StartGame{
	public static void main(String[] args){
		Referee r=new Referee();
		r.initial();
		r.startGame();
	}
}

当然咯,如果你想要把测试类都写在一起也是可以正常编译出来的,不过不建议这样做,这样的话对代码的重构性就不好了。使用命令javac StartGame.java进行编译,然后 java StartGame 运行。

时间: 2025-01-05 15:05:51

猜拳游戏案例的相关文章

猜拳游戏GuessGame源码

该游戏是一款比较不错的猜拳游戏GuessGame源码案例,GuessGame--猜拳游戏,这也是我自己的第一款休闲类的游戏案例,游戏实现也比较简单的,希望这个能够帮大家的学习和使用,更多安卓源码尽在源码天堂android游戏源码频道. 源码项目下载:http://code.662p.com/view/10059.html <ignore_js_op> 打开时的界面 游戏的界面 详细说明:http://android.662p.com/thread-6138-1-1.html

猜拳游戏

//通过控制台命令方式实现一个猜拳游戏,用户通过输入(1.石头,2.剪刀,3.布)与电脑pk,最后通过积分的多少判断胜负 Scanner sc=new Scanner(System.in); for(;;){ System.out.println("欢迎来到猜拳游戏,游戏规则:1.石头,2.剪刀,3.布.赢一次获得1个积分点,输一次扣一个积分点.您共有5次猜拳机会."); System.out.println("请确定是否开始游戏:1.开始  0.退出"); int

C#面向对象编程-猜拳游戏

1.需求 现在要制作一个游戏,玩家与计算机进行猜拳游戏,玩家出拳,计算机出拳,计算机自动判断输赢. 2.需求分析 根据需求,来分析一下对象,可分析出:玩家对象(Player).计算机对象(Computer).裁判对象(Judge). 玩家出拳由用户控制,使用数字代表:1石头.2剪子.3布 计算机出拳由计算机随机产生 裁判根据玩家与计算机的出拳情况进行判断输赢 3.类对象的实现 玩家类示例代码 class Player { string name; public string Name { get

在学会循环结构语句时就可以写的一个猜拳游戏小项目

package com.etc.for2; import java.util.Scanner; /** * 猜拳游戏规则: * 人或机器可以随机出石头.剪刀.布, * 若一方出石头,另一方出剪刀,则输出打印出石头方获胜, * 若一方出石头,另一方出布,则输出打印出布方获胜, * 若一方出布,另一方出剪刀,则输出打印出剪刀方获胜, * */ public class TestCaiQuan { public static void main(String[] args) { Scanner sc=

猜拳游戏 java基础

//用循环方式实现和计算机玩猜拳的程序 (设定胜出条件--输3次或赢3次即退出) package eduask01; import java.util.*; public class Rask03 { public static void main(String[]args){ Scanner sc=new Scanner(System.in); int m=0,n=0;//累计输或赢的次数 for(;;){//死循环进行游戏 System.out.println("猜拳游戏:1.表示石头 2.

MRC实现猜拳游戏(附:@property理解偏差纠正)

1 /* 猜拳游戏 2 对象1:人, 属性:输入要出的拳并显示,分数,姓名 3 对象2:Bot,属性同上,继承.自动生成出拳,枚举法.显示出拳,与传过来的人的出拳作比较,判定结果并输出分数. 4 其他:每比较一次提示是否继续. 5 6 注意:MRC! 7 */ 8 9 #import <Foundation/Foundation.h> 10 #import "Bot.h" 11 int main(int argc, const char * argv[]) 12 { 13

安卓版猜拳游戏源码

安卓版猜拳游戏源码,该文件中带有安装测试包的,这个游戏源码比较简单的,现在有两个代码,一个自定义VIEW的,一个就是普通的imageView图片,游戏非常适合一些新手的使用和学习. <ignore_js_op> <ignore_js_op> <ignore_js_op>  详细说明:http://android.662p.com/thread-4914-1-1.html 安卓版猜拳游戏源码,布布扣,bubuko.com

简单版猜拳游戏

界面很简单 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观

Java 入门课程视频实战-0基础 已经上传完了.欢迎小伙伴们过来围观 直接进入: http://edu.csdn.net/course/detail/196 课程文件夹例如以下: 1 初识Java  19:08 2 熟悉Eclipse开发工具  12:42 3 Java语言基础  17:39 4 流程控制  14:53 5 数组  14:44 6 字符串  34:32 7 类和对象  29:30 8 猜拳游戏  33:39 9 模拟银行柜员机程序  36:35 10 退休金结算程序  本课程由