package mahjong.engine; import mahjong.aux.Card; import mahjong.aux.set.Aside; import mahjong.aux.set.Set; import mahjong.player.GenericPlayer; import mahjong.tools.Deck; import java.util.Random; /** * Created by joe on 12/2/14. */ public class Engine { GenericPlayer[] players=new GenericPlayer[4]; Set deck; public Engine(GenericPlayer player1,GenericPlayer player2,GenericPlayer player3,GenericPlayer player4) { players[0]=player1; players[1]=player2; players[2]=player3; players[3]=player4; } public void ShufflePlayer() { Random rand=new Random(); for (int i=0;i<5;++i) { int x = rand.nextInt(4); int y = (x+rand.nextInt(3)+1)%4; GenericPlayer tmp; tmp=players[x]; players[x]=players[y]; players[y]=tmp; } } public void start() { ShufflePlayer(); for (int i=0;i<4;++i) System.out.println(players[i].getName()); deck = Deck.generateDeck(); } public static void playerPutAsideCards(GenericPlayer player, Card card, Aside aside) { boolean mark=true; for (Card asCard:aside.getRep()) if (card.getId() == asCard.getId() && mark) mark = true; else player.hand.remove(asCard); } public void mainLoop() { start(); boolean hu=false; int pos=0; while (!hu && deck.getSize()>0) { Card card=deck.draw(); GenericPlayer player=players[pos]; // Hu if (player.hand.huAble(card)) { player.confirmHu(card, 0); hu=true; System.out.println(player.getName().concat(" Hule")); } // Gang if (player.hand.gangAble(card)) { Aside aside = player.confirmJiaAnGang(card, 0); if (aside.getRep()[0].getStdId()==card.getStdId()) { // An for (Aside exAside:player.hand.asides) if (exAside.getRep()[0].getStdId() == card.getStdId()) { aside.setFrom(exAside.getFrom()); player.hand.asides.remove(exAside); break; } player.hand.asides.add(aside); } else { // Jia playerPutAsideCards(player,card,aside); // @TODO Remove consider card no } } // pos=(pos+1)%4; } } }