之前写过一次关于剪刀石头布的游戏,代码量过大,后期维护困难,逻辑关系复杂
所以,这次写了一个接口和方法调用版本的,方便于后期的维护和拓展。
首先,写程序之前要先明白游戏的需求:
1.电脑和人各生成“石头、剪刀、布”中任意一个结果。
2.比较电脑和人各自的“值”,并输出结果(值代表:石头、剪刀、布)。
开始写代码:
【需求1】
/*
新建Computer接口和Person接口,并且在其中生成自己的随机数(随机数的值为:0~2):
*/
public interface Computer {
int computerIntResult = new Random().nextInt(3);
}
public interface Person {
int personIntResult = new Random().nextInt(3);
}
/*
1.因为电脑和人生成的是数字,而我们最后输出的是“石头剪刀布”的汉字,所以我们需要有int和String的虚拟转化方法,即change类。
2.在change类中创建changeShow方法,
3.name的值用来区分电脑和人的不同结果
4.changeNumber的值用来接收人和电脑的随机数。
5.新建一个stringRandomNumber的变量,用于输出虚拟转化后的结果,=null是为了以后要是写循环就可以清除上一次的值。
6.在switch中的表达式我们用 changeNumber,当传过来的值(电脑或者人的随机数)为0的时候,stringRandomNumber的值为:剪刀(1和2就不解释了)。
7.最后输出:Person/Computer出的是:剪刀/石头/布
*/
public class Change {
public void changeShow(String name,int changeNumber){
String stringRandomNumber = null;
switch (changeNumber){
case 0:
stringRandomNumber="剪刀";
break;
case 1:
stringRandomNumber="布";
break;
case 2:
stringRandomNumber="石头";
break;
default:
break;
}
System.out.println(name+"出的是:"+stringRandomNumber);
}
}
【需求2】
/*
1.写一个类Compare实现Computer和Person的接口,这个类是用来比较人和电脑各自值的结果。
2.在类中写一个show方法,方便于之后在测试类中调用测试。
3.写两个输出语句提示出人和电脑各自生成的随机数为多少。
4.调用Change类里面的changeShow方法并且分别将电脑和人的随机数赋值给changeShow方法里面的changeNumber,实现将随机数输出为汉字。
5.使用电脑和人的随机数进行判断最后的结果。
*/
public class Compare implements Computer,Person{
public static void show(){
System.out.println("电脑随机数为:"+computerIntResult);
System.out.println("人的随机数为:"+personIntResult);
Change change= new Change();
change.changeShow("Computer",computerIntResult);
change.changeShow("Person",personIntResult);
if(computerIntResult>personIntResult){
System.out.println("最终结果是:电脑获胜!");
}else if(computerIntResult==personIntResult){
System.out.println("最终结果是:平局!");
}else{
System.out.println("最终结果是:人获胜!");
}
}
}
/*
最后编写测试类TestMain直接调用Compare类中的show方法
*/
public class TestMain {
Compare compare = new Compare();
public static void main(String [] args){
Compare.show();
}
}
/*
输出结果(例举一种):
*/
电脑随机数为:0
人的随机数为:2
Computer出的是:剪刀
Person出的是:石头
最终结果是:人获胜!
【以下为完整代码】