之前寫過一次關於剪刀石頭布的游戲,代碼量過大,后期維護困難,邏輯關系復雜(詳情見:https://www.cnblogs.com/1355861728--qqcom/p/11959565.html)
所以,這次寫了一個接口和方法調用版本的,方便於后期的維護和拓展。
首先,寫程序之前要先明白游戲的需求:
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出的是:石頭
最終結果是:人獲勝!
【以下為完整代碼】
