Android_開發(fā)day10撲克游戲
目的:
通過寫一些小游戲來增加學習中的樂趣大猛,同時也是對前面學習的一些知識的一些整合瞳收。
技術:
<1> 單例設計模式:所謂的單例設計模式就是創(chuàng)造一個對象實例就可以在不同的地方去訪問它堕澄,做到一改全改的效果方便程序的形成膜蛔。單例設計模式首先不允許用戶創(chuàng)建某個類的實例瀑志,可以將構造函數(shù)私有化涩搓,第二步在自己的類里面提供創(chuàng)建這個對象的方法。我們可以在類中用public static 類名(返回類型) 方法名{return 事先在類里面創(chuàng)建好的該類的一個靜態(tài)對象(對象名一般用default sharedInstance manage)劈猪;}昧甘,這種創(chuàng)建單例式對象的方法叫做餓漢式。第二種創(chuàng)建單例對象的方法叫做懶漢式战得,即在外部需要它的時候才創(chuàng)建它充边,因此只要在類里提供創(chuàng)建它的方法即可。
<2> 數(shù)組的引用:ArrayList<泛型>是一個動態(tài)可變數(shù)組常侦,也是一個管理數(shù)組的類浇冰,它的里面裝的是引用變量,可根據(jù)引用變量的多少來動態(tài)開辟內(nèi)存聋亡,其實就是我們c語言階段學的鏈表湖饱,而Java中有一個雙鏈表的LinkedList<>。常用的方法有add(東西)杀捻;get(0~數(shù)組長度)井厌;size();返回值就是數(shù)組的長度。
技術如何使用:
有了前面的幾個類的基礎后我們就可以將其整合致讥,因此我們可以將游戲中心寫成如下代碼:
public class GameCenter {
public static void main(String[] args){
int choice = 0;
do {
int num, basicBet;
Utils.showWelcome();
System.out.print("請輸入玩家個數(shù):");
num = Utils.scanf();
System.out.print("請規(guī)定本局底注:");
basicBet = Utils.scanf();
Person[] players = new Person[num];
PlayerManager.initPlayers(players);//生成玩家
while (true) {
System.out.println("請確認玩家信息:");
PlayerManager.showPlayers(players);//顯示玩家
System.out.println("Loading……");
PlayerManager.distributePoker(players);
//manager.showPokers();//測試
System.out.print("( ");
PlayerManager.showPlayerPoker(players);//看一下玩家的牌
System.out.println("看不見我 )");
PlayerManager.gameStart(players, basicBet);//第一輪游戲開始
System.out.println("游戲結束仅仆,請選擇:");
Utils.showMenu(1);
System.out.print("請選擇:");
choice = Utils.scanf();
if (choice == 2 || choice == 4) {
break;
} else if (choice == 3) {
System.out.print("請輸入底注:");
basicBet = Utils.scanf();
System.out.print("Success!");
}
}
}while (choice != 4);
}
}
相對對于昨日添加了一個Utils類,目的是更好的輸出到控制臺垢袱,和從控制臺輸入墓拜。
import java.util.Scanner;
public class Utils {
public static void showWelcome(){
showStar();
System.out.println("歡迎來到御坂斗地主");
showStar();
}
public static void showStar(){
System.out.println("*******************");
}
public static void showMenu(boolean i){
if (!i) {
System.out.println("1.看牌");
System.out.println("2.下注");
System.out.println("4.棄牌");
}
else {
System.out.println("1.看牌");
System.out.println("3.跟注");
System.out.println("4.棄牌");
}
}
public static int scanf(){
int num;
Scanner scanner = new Scanner(System.in);
num = scanner.nextInt();
return num;
}
public static void showMenu(int i){
System.out.println("1.再來一局");
System.out.println("2.從頭開始");
System.out.println("3.修改底注");
System.out.println("4.退出游戲");
}
}
實際使用效果:
總結:
這個Demo如果能完整寫完的話就能夠體會到了面對對象的編程思想與面向過程的編程思想的差別。