猜拳游戏之面向对象

2024-02-25 18:08
文章标签 游戏 面向对象 猜拳

本文主要是介绍猜拳游戏之面向对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

猜拳游戏

要求:用户可以选择对战的角色名称(1,刘备 2,关羽 3,张飞),也可以自由输入自己名称,在对战期间,电脑由系统随机出拳(1,剪刀 2,石头 3, 布),玩家由自己出拳,结束后可以看到自己和电脑的手势,以及得分情况,(赢一局积3分,输一局不扣分,平局各加一分)。在整局游戏结束后要求显示出胜负情况以及积分情况。

类的设计

本局游戏设置为四个类分别是玩家类、电脑类、裁判类、游戏测试类。

玩家类

属性:昵称(roleName)积分(integral)

方法:玩家出拳(printMora)

电脑类

属性:名称(roleName)积分(integral)

方法:电脑出拳(printMora)

裁判类

属性:玩家(player)电脑(computer)局数(gameNumber)

方法: 游戏开始准备(start()) 猜拳输赢判定(arbitrament()) 游戏结果公示(end())游戏过程(wholeJourney())转换手势(changeString(int mora, Object gamePlayer))

代码展示

玩家类

package com.qianfeng.moraGame;import java.util.Scanner;//玩家类
public class Player {private String roleName;//玩家姓名private int integral;//玩家积分public Player() {}public Player(String roleName, int integral) {this.roleName = roleName;this.integral = integral;}//玩家猜拳public int printMora() {Scanner input = new Scanner(System.in);int mora = input.nextInt();
//		input.close();return mora;}public String getRoleName() {return roleName;}public void setRoleName(String roleName) {this.roleName = roleName;}public int getIntegral() {return integral;}public void setIntegral(int integral) {this.integral = integral;}}

电脑类

package com.qianfeng.moraGame;import java.util.Random;//电脑类
public class Computer {private String roleName;//电脑名字private int integral;//电脑积分public Computer() {}public Computer(String roleName, int integral) {this.roleName = roleName;this.integral = integral;}//电脑猜拳public int printMora() {Random random = new Random();int mora = random.nextInt(3)+1;return mora;}public void setRoleName(String roleName) {this.roleName = roleName;}public String getRoleName() {return this.roleName;}public void setIntegral(int integral) {this.integral = integral;}public int getIntegral() {return integral;}}

裁判类

package com.qianfeng.moraGame;import java.util.Scanner;//裁判类
public class Referee {Scanner input = new Scanner(System.in);private Player player;private Computer computer;private int gameNumber;public Referee() {}public Referee(Player player, Computer computer) {this.player = player;this.computer = computer;}//游戏开始准备private void start() {System.out.println("***************************");System.out.println("*      欢迎您进入游戏          *");System.out.println("***************************");int n;do {System.out.print("请选择您对战的角色(1,刘备 2,关羽 3,张飞):");n = input.nextInt();if (n == 1 || n == 2 || n == 3) {break;} else {System.out.println("输入错误!!");}} while (true);switch (n) {case 1:computer.setRoleName("刘备");break;case 2:computer.setRoleName("关羽");break;case 3:computer.setRoleName("张飞");break;}System.out.print("请输入您的游戏昵称:");player.setRoleName(input.next());System.out.println(player.getRoleName() + " VS " + computer.getRoleName());System.out.println();}//猜拳输赢判定private void arbitrament() {int mora1;do {System.out.print("请" + player.getRoleName() + "出拳(1,剪刀 2,石头 3,布):");mora1 = player.printMora();if (mora1 == 1 || mora1 == 2 || mora1 == 3) {break;} else {System.out.println("输入错误!!");}} while (true);int mora2 = computer.printMora();System.out.println(computer.getRoleName() + "由系统出拳完毕");changeString(mora1, player);changeString(mora2, computer);if (mora1-mora2 == 1 || mora1-mora2 == -1) {System.out.println("恭喜您取得一局胜利加3积分");player.setIntegral(player.getIntegral()+3);} else if (mora1-mora2 == -1 || mora1-mora2 == 2) {System.out.println("您惜败" + computer.getRoleName() + "加3积分");computer.setIntegral(computer.getIntegral()+3);} else {System.out.println("平手各加一积分");player.setIntegral(player.getIntegral()+1);computer.setIntegral(computer.getIntegral()+1);}}//游戏结束公示private void end() {System.out.println();System.out.println("公布此次游戏的最终结果:\n结果场次为:" + gameNumber);System.out.println(player.getRoleName() + "积分为:" + player.getIntegral());System.out.println(computer.getRoleName() + "积分为:" + computer.getIntegral());if (computer.getIntegral() < player.getIntegral()) {System.out.println("恭喜您此次游戏您胜利了!!!");} else if(computer.getIntegral() > player.getIntegral()) {System.out.println("很遗憾此次游戏您惜败!!!");} else {System.out.println("平分秋色!!!");}System.out.println("游戏结束");}//游戏过程public void wholeJourney() {start();String judge;do {arbitrament();System.out.println();System.out.print("是否继续战斗(y/n):");judge = input.next();gameNumber++;} while (judge.equals("y"));end();}//转化手势private void changeString(int mora, Object gamePlayer) {String name;if(gamePlayer instanceof Player) {Player player = (Player)gamePlayer;name = player.getRoleName();} else if (gamePlayer instanceof Computer) {Computer computer = (Computer)gamePlayer;name = computer.getRoleName();} else {name = "错误昵称";}switch (mora) {case 1:System.out.println(name + "出拳为:剪刀");break;case 2:System.out.println(name + "出拳为:石头");break;case 3:System.out.println(name + "出拳为:布");break;}}public int getGameNumber() {return gameNumber;}public void setGameNumber(int gameNumber) {this.gameNumber = gameNumber;}}

游戏测试类

package com.qianfeng.moraGame;import java.util.Scanner;public class GameTest {public static void main(String[] args) {Scanner input = new Scanner(System.in);Player player = new Player();Computer computer = new Computer();Referee referee = new Referee(player,computer);String judge;do {referee.wholeJourney();System.out.print("是否继续一局新的游戏(y/n):");judge = input.next();System.out.println();//新的一局初始积分与局数referee.setGameNumber(0);player.setIntegral(0);computer.setIntegral(0);} while (judge.equals("y"));System.out.println("欢迎下次再来");input.close();}
}

这篇关于猜拳游戏之面向对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/746275

相关文章

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

火柴游戏java版

代码 /*** 火柴游戏* <p>* <li>有24根火柴</li>* <li>组成 A + B = C 等式</li>* <li>总共有多少种适合方式?</li>* <br>* <h>分析:</h>* <li>除去"+"、"="四根,最多可用火柴根数20根。</li>* <li>全部用两根组合成"1",最大数值为1111。使用枚举法,A和B范围在0~1111,C为A+B。判断</li>** @

国产游戏行业的崛起与挑战:技术创新引领未来

国产游戏行业的崛起与挑战:技术创新引领未来 近年来,国产游戏行业蓬勃发展,技术水平不断提升,许多优秀作品在国际市场上崭露头角。从画面渲染到物理引擎,从AI技术到服务器架构,国产游戏已实现质的飞跃。然而,面对全球游戏市场的激烈竞争,国产游戏技术仍然面临诸多挑战。本文将探讨这些挑战,并展望未来的机遇,深入分析IT技术的创新将如何推动行业发展。 国产游戏技术现状 国产游戏在画面渲染、物理引擎、AI

ffmpeg面向对象-待定

1.常用对象 rtsp拉流第一步都是avformat_open_input,其入参可以看下怎么用: AVFormatContext *fmt_ctx = NULL;result = avformat_open_input(&fmt_ctx, input_filename, NULL, NULL); 其中fmt_ctx 如何分配内存的?如下 int avformat_open_input(

第四次北漂----挣个独立游戏的素材钱

第四次北漂,在智联招聘上,有个小公司主动和我联系。面试了下,决定入职了,osg/osgearth的。月薪两万一。 大跌眼镜的是,我入职后,第一天的工作内容就是接手他的工作,三天后他就离职了。 我之所以考虑入职,是因为 1,该公司有恒歌科技的freex平台源码,可以学学,对以前不懂的解解惑。 2,挣点素材钱,看看张亮002的视频,他用了6000多,在虚幻商城买的吸血鬼游戏相关的素材,可以玩两年。我

chapter06 面向对象基础 知识点Note

文章目录 前言类的设计 属性和行为对象的内存解析 (堆 栈 方法区)类的成员之一 变量(属性) field类的成员之二 方法 method对象数组方法重载 overload可变个数的形参 语法糖方法的值传递机制递归关键字package importMVC设计模式import导入面向对象特征之一 封装类的成员之三 构造器JavaBeanUML类图 前言 ` 面向对象封装 面向

nyoj 1038 纸牌游戏

poj 的一道改编题,说是翻译题更恰当,因为只是小幅度改动。 一道模拟题,代码掌控能力比较好,思维逻辑清晰的话就能AC。 代码如下: #include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct node{char c[5];int rk;char da[5];int nu

如果出一个名叫白神话悟空的游戏

最近黑神话由于与原著不符引起了原著派的争议。 所以我在摸鱼的时候想到如果游科或者某个别的公司“痛改前非”不夹带私货完全复刻吴承恩百回版剧情制作一个“重走西游路”的游戏,会有一个什么样的销量?(设定为原著派已经多方渠道认证,此游戏的确没有夹带私货,绝大部分复刻了原著剧情) 游戏玩法我想了几类 超长线性有岔路蜈蚣形状地图,蜈蚣的腿部是探索区域和支线,重走西游路线,开篇就是开始取经前唐玄宗御弟cg

【JVM】JVM栈帧中的动态链接 与 Java的面向对象特性--多态

栈帧 每一次方法调用都会有一个对应的栈帧被压入栈(虚拟机栈)中,每一个方法调用结束后,都会有一个栈帧被弹出。 每个栈帧中包括:局部变量表、操作数栈、动态链接、方法返回地址。 JavaGuide:Java内存区域详解(重点) 动态链接 动态链接:指向运行时常量池中该栈帧所属方法的引用。 多态 多态允许不同类的对象对同一消息做出响应,但表现出不同的行为(即方法的多样性)。 多态

《黑暗之魂2:原罪学者》是什么类型的游戏 《黑暗之魂》可以在苹果Mac电脑上玩吗?

在宏大的世界观游戏中,《黑暗之魂2:原罪学者》脱颖而出,以其探索性和挑战性征服了全球玩家的心灵。下面我们来看看《黑暗之魂2:原罪学者》是什么类型的游戏,《黑暗之魂2:原罪学者》可以在苹果电脑玩吗的相关内容。 一、《黑暗之魂2:原罪学者》是什么类型的游戏 《黑暗之魂2:原罪学者》作为《黑暗之魂2》的增强版和重制版,是一款FromSoftware制作、BANDAI NAMCO和FromSoft