Java面向对象思想解决猜拳问题
第一个面向对象的程序:
一个控制台猜拳小游戏:
第一步选择角色;
第二部选择剪刀,石头,布,与电脑进行PK;
第三部选择继续或者选择结束;
结束显示比赛的局数,以及各自赢得的分数;
设计思路
分析问题,设计出四个类
1.设计Person,Computer,Game三个类;
2.设计Test类启动程序;
测试运行:
-----------欢迎进入游戏世界-----------
******************
******猜拳开始*****
******************
----------------------------------------
出拳规则:1.剪刀 2.石头 3.布
请选择角色:(1.刘备 2.孙权 3.曹操):
你选择 曹操对战
输入y开始:
y
请你出拳:1.剪刀 2.石头 3.布(请输入相应数字:)
你出拳: 剪刀
电脑出拳:剪刀
和局,再来一局吧
是否开始下一轮(y/n):y
请你出拳:1.剪刀 2.石头 3.布(请输入相应数字:)
你出拳: 石头
电脑出拳:布
你输了,真笨!
是否开始下一轮(y/n):y
请你出拳:1.剪刀 2.石头 3.布(请输入相应数字:)
你出拳: 布
电脑出拳:布
和局,再来一局吧
是否开始下一轮(y/n):n
你选的是:曹操 你共战局数:3
你共得: 0分
电脑共得了: 1分
你赢了 0局
你输了 1局
和局 2局
你第1局出的: 剪刀 电脑出的: 剪刀
你第2局出的: 石头 电脑出的: 布
你第3局出的: 布 电脑出的: 布
Person 类:
package com.tt;
import java.util.*;
public class Person {
Scanner input = new Scanner(System.in);
public static int score = 0;
public int showSelect() {
while (true) {
System.out.print("请你出拳:1.剪刀 2.石头 3.布(请输入相应数字:)\n");
int num = input.nextInt();
switch (num) {
case 1:
System.out.println("你出拳: 剪刀");
return 1;
case 2:
System.out.println("你出拳: 石头");
return 2;
case 3:
System.out.println("你出拳: 布");
return 3;
default:
System.out.println("输入有误,请重新输入\n");
continue;// 输入有误,重新输入
}
}
}
}
Computer 类:
package com.tt;
import java.util.*;
public class Computer {
Scanner input = new Scanner(System.in);
public static int score;
public int showSelect() {
int num = (int) (Math.random() * 3 + 1);
switch (num) {
case 1:
System.out.println("电脑出拳:剪刀");
return 1;
case 2:
System.out.println("电脑出拳:石头");
return 2;
case 3:
System.out.println("电脑出拳:布");
return 3;
default:
return -1;
}
}
}
Game 类:
package com.tt;
import java.util.*;
public class Game {
Scanner input = new Scanner(System.in);
private Person person = new Person();
private Computer computer = new Computer();
private static int count = 0;// 记录比赛的次数
private static int win_count = 0;
private static int lose_count = 0;
private static int peace_count = 0;
ArrayList<Integer> list1 = new ArrayList<Integer>();// 记录人每次出的数字
ArrayList<Integer> list2 = new ArrayList<Integer>();// 记录电脑每次出的数字
public String Show() {
System.out.println("-----------欢迎进入游戏世界-----------");
System.out
.println("\t\t******************\n\t\t******猜拳开始*****\n\t\t******************");
System.out.println("----------------------------------------\n");
System.out.println("出拳规则:1.剪刀 2.石头 3.布");
while (true) {
System.out.println("请选择角色:(1.刘备 2.孙权 3.曹操):");
int num = input.nextInt();
switch (num) {
case 1:
System.out.println("你选择 刘备对战");
return "刘备";
case 2:
System.out.println("你选择 孙权对战");
return "孙权";
case 3:
System.out.println("你选择 曹操对战");
return "曹操";
default:
System.out.println("你输入有误,请重新输入哈");
continue;// 输入有误,重新输入
}
}
}
public void Start(String s) {
System.out.println("输入y开始:");
while (true) {
String answer = input.next();
if (answer.equals("y")) {
int person_select = person.showSelect();
int computer_select = computer.showSelect();
if ((person_select == 1 && computer_select == 1)
|| (person_select == 2 && computer_select == 2)
|| (person_select == 3 && computer_select == 3)) {
System.out.println("和局,再来一局吧\n");
peace_count++;
} else if ((person_select == 1 && computer_select == 3)
|| (person_select == 2 && computer_select == 1)
|| (person_select == 3 && computer_select == 2)) {
System.out.println(" 恭喜, 你赢了!加油\n");
Person.score++;
win_count++;
} else {
System.out.println("你输了,真笨!\n");
Computer.score++;
lose_count++;
}
list1.add(person_select);// 添加到记录人的数组中
list2.add(computer_select);// 添加到电脑人的数组中
count++;
System.out.print("是否开始下一轮(y/n):");
} else {
System.out.println("\n你选的是:" + s + " 你共战局数:" + count);
System.out.println("你共得: " + Person.score + "分");
System.out.println("电脑共得了: " + Computer.score + "分");
System.out.println("你赢了 " + win_count + "局");
System.out.println("你输了 " + lose_count + "局");
System.out.println("和局 " + peace_count + "局");
// 显示人和电脑每次的对战
for (int i = 0; i < list1.size(); i++) {
System.out.println("你第" + (i + 1) + "局出的: "
+ great(list1.get(i)) + " 电脑出的: "
+ great(list2.get(i)));
}
}
}
}
// 用来显示比赛过程
public String great(int num) {
switch (num) {
case 1:
return "剪刀";
case 2:
return "石头";
case 3:
return "布";
default:
return null;
}
}
}
Test 类:
package com.tt;
public class Test {
public static void main(String[] args) {
Game g1 = new Game();
String s = g1.Show();
g1.Start(s);
}
}
Java面向对象思想解决猜拳问题的更多相关文章
- 06-03 Java 面向对象思想概述、开发设计特征,类和对象的定义使用,对象内存图
面向对象思想概述.开发设计特征 1:面向对象思想 面向对象是基于面向过程的编程思想. 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 2:面向对象的思想特点 A:是一 ...
- JAVA面向对象思想理解分析
1.面向对象是面向过程而言.两者都是一种思想.面向过程:强调的是功能行为.(强调过程.动作)面向对象:将功能封装进对象,强调了具备了功能的对象.(强调对象.事物)面向对象是基于面向过程的.将复杂的事情 ...
- 薪资管理系统(Java面向对象思想)
package com.test3; import java.util.*; import java.io.*; /** * @author qingfeng * 重要思想:面向对象思想(添加员工管理 ...
- java面向对象思想2
1.主函数是一类特殊的函数,作为程序入口,可被虚拟机调用.主函数格式是固定的.public:函数访问权限最大.static:代表函数随着类的加载已经存在.void:主函数没有具体返回值.main:不是 ...
- java面向对象思想1
1.面向对象是面向过程而言.两者都是一种思想.面向过程:强调的是功能行为.(强调过程.动作)面向对象:将功能封装进对象,强调了具备了功能的对象.(强调对象.事物)面向对象是基于面向过程的.将复杂的事情 ...
- 《Head First Java》读书笔记(2) - Java面向对象思想
1.了解继承 对象继承实际上就是一种"is - a"的关系,如上图的"PantherMan is a SuperHero?",是,那么便属于继承的理解. 继承能 ...
- java面向对象思想之封装
一.什么是封装 菜鸟教程对封装的解释是"在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装.隐藏起来的方法.".简单来说就 ...
- JAVA面向对象思想
1.面向对象的基本特征 面向对象具有三个基本特征:封装.多态.继承. 1)封装 封装指的是将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能. ...
- 浅谈Java面向对象思想
本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...
随机推荐
- SharePoint 2013开发入门探索(二)- 列表操作
我们如何用代码对SharePoint列表做些例如增删改查的操作呢?如果您的程序可以部署到服务器上,就可以使用 服务器对象模型,因为服务器对象模型提供的功能最多,限制最少:否则可能要选择客户对象模型等其 ...
- javascript实现字符串的截取
截取字符串方法有很多的,(不含根据传入参数截取成数组的split()方法)这里说的是子字符串,所以不说split()方法了. slice(),substr(),substring()一共三种方法,其中 ...
- Win10专业版激活方法可查版本
Win10专业版激活步骤 ------安装Win10专业版,请win+R,键入winver回车,可查看版本------ 1.点击左下角windows按钮,找到设置并打开,依次点击"更新和安全 ...
- 升级到iOS9之后的相关适配
iOS9AdaptationTips(iOS9开发学习交流群:458884057) iOS9适配系列教程[中文在页面下方]转自@iOS程序犭袁 (截至2015年9月26日共有10篇,后续还将持续更新. ...
- hdu 1394 Minimum Inversion Number(树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:给你一个0 — n-1的排列,对于这个排列你可以将第一个元素放到最后一个,问你可能得到的最 ...
- Log4j写日志文件使用详解
Log4j输出到控制台成功,写入文件失败 - Log4j和commons log的整合 一.今天在使用commongs-logging.jar和log4j.properties来输出系统日志的时候,发 ...
- [Python] Removing a non-empty folder
Removing a non-empty folder You will get an ‘access is denied’ error when you attempt to use os.remo ...
- 如何让MVC6在IIS上面跑
asp.net5的MVC6发布出来的结果和MVC5之前版本的相差太远了,直接在本地的IIS服务器上面是不可能运行的. 看了汤姆大叔的MVC6项目发布与部署,讲了很多丰富的知识点.但是对于立即要解决问题 ...
- java 中 finally里面写了return 会发生什么?
boolean test() throws Exception { boolean ret = true; try { int b = 12; int c; for (int i = 1; i > ...
- .NET面试题解析(11)-SQL语言基础及数据库基本原理
系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 本文内容涉及到基本SQL语法,数据的基本存储原理,数据库一些概念.数据优化等.抱砖引玉,权当一个综合复习! ...