summaryrefslogtreecommitdiff
path: root/engine/Engine.java
diff options
context:
space:
mode:
Diffstat (limited to 'engine/Engine.java')
-rw-r--r--engine/Engine.java73
1 files changed, 73 insertions, 0 deletions
diff --git a/engine/Engine.java b/engine/Engine.java
index b59035f..efd853c 100644
--- a/engine/Engine.java
+++ b/engine/Engine.java
@@ -1,12 +1,19 @@
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)
{
@@ -15,4 +22,70 @@ public class Engine {
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 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"));
+ }
+ // An Gang
+ if (player.hand.gangAble(card))
+ {
+ Aside aside = player.confirmJiaAnGang(card, 0);
+ if (aside.getRep().getStdId()==card.getStdId())
+ {
+ for (Aside exAside:player.hand.asides)
+ if (exAside.getRep().getStdId() == card.getStdId()) {
+ aside.setFrom(exAside.getFrom());
+ player.hand.asides.remove(exAside);
+ break;
+ }
+ player.hand.asides.add(aside);
+ }
+ else {
+ player.hand.asides.add(aside);
+ for (int i=0;i<3;++i)
+ player.hand.remove(card);
+ // @TODO Remove consider card no
+ }
+ }
+
+ //
+
+ pos=(pos+1)%4;
+ }
+ }
}