基于java实现人机猜拳游戏
作者:TrueBrightSide 发布时间:2021-06-09 08:50:32
本文实例为大家分享了java实现人机猜拳游戏的具体代码,供大家参考,具体内容如下
完成人机猜拳互动游戏的开发,用户通过控制台输入实现出拳,电脑通过程序中的随机数实现出拳,每一局结束后都要输出结果。当用户输入n时停止游戏,并输出总结果。效果如图1-1所示。
图1-1人机猜拳游戏
实现思路
图1-2该项目的类图
(1) 创建出用户类。
定义用户类Customer,定义类的属性(name、score)和类的方法showFist()。
请思考getFist()中的switch语句该如何书写。
(2) 创建计算机类Computer,实现计算机出拳。
计算机出拳是根据产生的随机数来决定出拳的具体内容。这点的实现和用户类出拳类似,请自己完成。
(3) 创建游戏类,实现选择对战对手
Ø 创建游戏类Game,编写其属性。属性有:甲方玩家、乙方玩家和对战次数以及平手次数。
Ø 编写游戏类的开始游戏方法startGame(),实现的效果如下图1-3所示。
图1.3对战选手的选择
(4) 分别调用用户类和计算机类的出拳方法showFist(),接收返回值并比较,给出胜负结果,运行结果如下图1-4所示。
图1-4用户和电脑出拳对战
(5) 实现循环对战,效果如下图1-5所示。
图1-5实现循环对战
(6) 完善游戏类,显示对战结果,效果如下图1-6所示。
图1-6显示对战结果
(7) 建立测试类RunGame,调用Game类的startGame()方法。
代码实现
Your 类代码(用以表示你出的招式)
package chaiquan;
public class your {
public static int quan(int i)
{
switch(i)
{
case 1:
System.out.println("你出拳:剪刀");
break;
case 2:
System.out.println("你出拳:石头");
break;
case 3:
System.out.println("你出拳:布");
break;
default:
System.out.println("输入错误,请重新输入");
break;
}
return i;
}
}
Customer 类(实现计算机随机出拳以及对胜负结果的判断)
package chaiquan;
public class Customer {
static int scor=0;
static int scor1=0;
static int scor2=0;
static int chuzhao;
public static int showFist()
{
chuzhao= (int) (Math.random() * 3) + 1;
return chuzhao;
}
public static int getFist()
{
switch(chuzhao)
{
case 1:
System.out.println("剪刀");
break;
case 2:
System.out.println("石头");
break;
case 3:
System.out.println("布");
break;
}
return chuzhao;
}
public static int play(int i)
{
if(i==chuzhao)
{
System.out.println("此局:和局,嘿嘿,等着瞧吧!");
scor++;
}
else if(i==1&&chuzhao==2)
{
System.out.println("此局:很遗憾,你输了");
scor1++;
}
else if(i==1&&chuzhao==3){
System.out.println("此局:恭喜,你赢了");
scor2++;
}
else if(i==2&&chuzhao==1)
{
System.out.println("此局:恭喜,你赢了");
scor2++;
}
else if(i==2&&chuzhao==3)
{
System.out.println("此局:很遗憾,你输了");
scor1++;
}
else if(i==3&&chuzhao==1)
{
System.out.println("此局:很遗憾,你输了");
scor1++;
}
else if(i==3&&chuzhao==2){
System.out.println("此局:恭喜,你赢了");
scor2++;
}
return i;
}
}
Game 类(开始游戏)
package chaiquan;
public class Game {
public static void main(String[] args) {
GameGame.startGame();
}
}
GameGame类(游戏真正的执行进程)
package chaiquan;
import java.util.Scanner;
public class GameGame {
public static void startGame(){
int iii=1;
System.out.println("---------------欢迎进入游戏世界---------------\n\n\n\t\t********************\n\t\t****猜拳,开始****\n\t\t********************");
System.out.print("请选择你想和谁对战(1:刘备 2:孙权 3:曹操):");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
while(true){
System.out.print("要开始吗?(y/n):");
String b=sc.next();
if(b.equals("n")){
System.out.println("结束");
return;
}
else if(b.equals("y")){
while(true)
{
System.out.print("请出拳:1.剪刀 2.石头 3.布(输入相应数字):");
int c=sc.nextInt();
Computer.quan(c);
System.out.print(Qwe.getName1(a)+"出拳:");
Customer.showFist();
Customer.getFist();
Customer.play(c);
System.out.print("是否开始下一轮(y/n):");
String m=sc.next();
if(m.equals("y"))
{
iii++;
}
else if(m.equals("n"))
{
System.out.println("------------------------------------------");
System.out.println(Qwe.getName1(a)+"VS玩家");
System.out.println("对战次数:"+iii+"出拳一样的情况有"+Customer.scor+"次");
if(Customer.scor1<Customer.scor2)
{
System.out.println("结果:恭喜恭喜,你赢了");
break;
}
else if(Customer.scor1==Customer.scor2){
System.out.println("平局!");
break;
}
else
{
System.out.println("很遗憾你输了!");
break;
}
}
else
{
System.out.println("输入错误,请重新输入;");
break;
}
}
}
else{
System.out.println("输入错误,请重新输入");
continue;
}
}
}}
User 类(选择游戏玩家)
package chaiquan;
public class user {
static String name;
public static String getName1(int i)
{
switch(i)
{
case 1:
name="刘备";
break;
case 2:
name="孙权";
break;
case 3:
name="曹操";
break;
}
return name;
}
}
来源:https://blog.csdn.net/TrueBrightSide/article/details/52594295


猜你喜欢
- 在工作中,如果需要跟XML打交道,难免会遇到需要把一个类型集合转换成XML格式的情况。之前的方法比较笨拙,需要给不同的类型,各自写一个转换的
- Android 滑动监听的实例详解摘要: ScollBy,ScollTo是对内容的移动,view.ScollyBy是对view的内容的移动&
- mybatis if test判断入参的值1.第一种判断方式<if test=' requisition != null an
- 引言上一节讲面试中被问到分布式系统概念相关的,讲完了分布式系统的概念,优点缺点和 RPC 后,我以为这个问题就到此结束了,没想到成功给自己挖
- 本文实例讲述了C#判断系统是32位还是64位的方法。分享给大家供大家参考。具体如下:public static int GetOSBit()
- 一般的 Executors 的 execute以及submit并发包下 Executors 创建的线程存在 一个 execute(),以及三
- 本文实例形式展示了DevExpress实现GridControl根据列选中一行的方法,比较实用的功能,希望能对大家进行项目开发起到一定的借鉴
- Spring概述Spring就是为解决企业应用开发的复杂性而创建的,做为开源中间件,它使用基本的JavaBean来完成以前只可能有EJB(J
- 最近在项目中用到了上下滚动展示条目内容,就使用kotlin简单编写实现了一下该功能。使用kotlin实现viewflipper展示textv
- protected bool IsChineseLetter(string input,int index){int code = 0;in
- 介绍Objects Comparer是用于对象比较的工具,c#常见的数据结构都是可以用这个三方库进行对比,比较复杂的对象也是可以比较的。简而
- 详解Http请求中Content-Type讲解以及在Spring MVC中的应用引言: 在Http请求中,我们每天都在使用Content-t
- 一、总体概述官方文档:https://docs.devexpress.com/WindowsForms/8117/controls-and-
- Spring框架是一个优秀的多层J2EE系统框架,Spring本身没有提供对系统的安全性支持。Acegi是基于Spring IOC 和 AO
- 引言java中的Math.random()是一个在[0,1)范围等概率返回double数值类型的算法,基于此函数,我们来延申一些随机概率算法
- mybatis输出SQL格式化通过第三方日志工具可以控制日志级别的输出,但是我们发现mybatis输出的SQL不是那么的完整,我们SQL里的
- 异常处理是每个项目中都绕不开的话题,那么如何优雅的处理异常,是本文的话题。本文将结合SpringBoot框架一起和大家探讨下。要思考的问题在
- ActivityThread功能它管理应用进程的主线程的执行(相当于普通Java程序的main入口函数),并根据AMS的要求(通过IAppl
- 效果图,每隔1秒,变换一下时间 xml: <RelativeLayout xmlns:android="http
- 本文实例为大家分享了c语言实现可自定义的游戏地图的具体代码,供大家参考,具体内容如下博主相信每个人都有想做游戏的冲动,那么本文将给出一个用c