1.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Attack.java Sun Jun 19 17:30:18 2011 +0400
1.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Attack.java Sun Jun 19 17:32:15 2011 +0400
1.3 @@ -3,21 +3,36 @@
1.4 import ru.alphatech.icfpc.game.ICFPCException;
1.5 import ru.alphatech.icfpc.game.IValue;
1.6 import ru.alphatech.icfpc.game.Player;
1.7 +import ru.alphatech.icfpc.game.Run;
1.8 import ru.alphatech.icfpc.game.Value;
1.9
1.10 public class Attack implements ICard
1.11 {
1.12 @Override
1.13 + public String getName() {
1.14 + return "attack";
1.15 + }
1.16 +
1.17 + @Override
1.18 public IValue returnValue(final IValue iobj, Player proponent, Player opponent)
1.19 {
1.20 return new ICard()
1.21 {
1.22 @Override
1.23 + public String getName() {
1.24 + return "";
1.25 + }
1.26 +
1.27 + @Override
1.28 public IValue returnValue(final IValue jobj, Player proponent, Player opponent)
1.29 {
1.30 return new ICard()
1.31 {
1.32 @Override
1.33 + public String getName() {
1.34 + return "";
1.35 + }
1.36 + @Override
1.37 public IValue returnValue(final IValue nobj, Player proponent, Player opponent)
1.38 {
1.39 if(iobj instanceof Value && nobj instanceof Value)
1.40 @@ -39,13 +54,26 @@
1.41 {
1.42 int w = opponent.getSlot(255 - j).getVitality();
1.43
1.44 - if (w > 0)
1.45 + if(Run.getAutoMode())
1.46 {
1.47 - int wdec = (int) Math.floor(9 * n / 10);
1.48 - int resw = w - wdec;
1.49 + if(w > 0)
1.50 + {
1.51 + int wdec = (int) Math.floor(9 * n / 10);
1.52 + int resw = w + wdec;
1.53
1.54 - opponent.getSlot(255 - j).setVitality(resw < 0 ? 0 : w);
1.55 + opponent.getSlot(255 - j).setVitality(resw > 65535 ? 65535 : w);
1.56 + }
1.57 }
1.58 + else
1.59 + {
1.60 + if (w > 0)
1.61 + {
1.62 + int wdec = (int) Math.floor(9 * n / 10);
1.63 + int resw = w - wdec;
1.64 +
1.65 + opponent.getSlot(255 - j).setVitality(resw < 0 ? 0 : w);
1.66 + }
1.67 + }
1.68
1.69 return new I();
1.70 }
2.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Copy.java Sun Jun 19 17:30:18 2011 +0400
2.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Copy.java Sun Jun 19 17:32:15 2011 +0400
2.3 @@ -8,6 +8,11 @@
2.4 public class Copy implements ICard
2.5 {
2.6 @Override
2.7 + public String getName() {
2.8 + return "copy";
2.9 + }
2.10 +
2.11 + @Override
2.12 public IValue returnValue(IValue iobj, Player proponent, Player opponent)
2.13 {
2.14 if (iobj instanceof Value)
3.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Dbl.java Sun Jun 19 17:30:18 2011 +0400
3.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Dbl.java Sun Jun 19 17:32:15 2011 +0400
3.3 @@ -8,6 +8,11 @@
3.4 public class Dbl implements ICard
3.5 {
3.6 @Override
3.7 + public String getName() {
3.8 + return "dbl";
3.9 + }
3.10 +
3.11 + @Override
3.12 public IValue returnValue(IValue nobj, Player proponent, Player opponent)
3.13 {
3.14 if(nobj instanceof Value)
4.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Dec.java Sun Jun 19 17:30:18 2011 +0400
4.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Dec.java Sun Jun 19 17:32:15 2011 +0400
4.3 @@ -3,11 +3,17 @@
4.4 import ru.alphatech.icfpc.game.ICFPCException;
4.5 import ru.alphatech.icfpc.game.IValue;
4.6 import ru.alphatech.icfpc.game.Player;
4.7 +import ru.alphatech.icfpc.game.Run;
4.8 import ru.alphatech.icfpc.game.Value;
4.9
4.10 public class Dec implements ICard
4.11 {
4.12 @Override
4.13 + public String getName() {
4.14 + return "dec";
4.15 + }
4.16 +
4.17 + @Override
4.18 public IValue returnValue(IValue iobj, Player proponent, Player opponent)
4.19 {
4.20 if(iobj instanceof Value)
4.21 @@ -18,9 +24,19 @@
4.22 {
4.23 int v = proponent.getSlot(255 - i).getVitality();
4.24
4.25 - if (v > 0)
4.26 + if(Run.getAutoMode())
4.27 {
4.28 - proponent.getSlot(255 - i).setVitality(v - 1);
4.29 + if(v > 0 && v < 65535)
4.30 + {
4.31 + proponent.getSlot(255 - i).setVitality(v + 1);
4.32 + }
4.33 + }
4.34 + else
4.35 + {
4.36 + if (v > 0)
4.37 + {
4.38 + proponent.getSlot(255 - i).setVitality(v - 1);
4.39 + }
4.40 }
4.41
4.42 return new I();
5.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Get.java Sun Jun 19 17:30:18 2011 +0400
5.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Get.java Sun Jun 19 17:32:15 2011 +0400
5.3 @@ -8,6 +8,11 @@
5.4 public class Get implements ICard
5.5 {
5.6 @Override
5.7 + public String getName() {
5.8 + return "get";
5.9 + }
5.10 +
5.11 + @Override
5.12 public IValue returnValue(IValue iobj, Player proponent, Player opponent)
5.13 {
5.14 if (iobj instanceof Value)
6.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Help.java Sun Jun 19 17:30:18 2011 +0400
6.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Help.java Sun Jun 19 17:32:15 2011 +0400
6.3 @@ -3,21 +3,37 @@
6.4 import ru.alphatech.icfpc.game.ICFPCException;
6.5 import ru.alphatech.icfpc.game.IValue;
6.6 import ru.alphatech.icfpc.game.Player;
6.7 +import ru.alphatech.icfpc.game.Run;
6.8 import ru.alphatech.icfpc.game.Value;
6.9
6.10 public class Help implements ICard
6.11 {
6.12 @Override
6.13 + public String getName() {
6.14 + return "help";
6.15 + }
6.16 +
6.17 + @Override
6.18 public IValue returnValue(final IValue iobj, Player proponent, Player opponent)
6.19 {
6.20 return new ICard()
6.21 {
6.22 @Override
6.23 + public String getName() {
6.24 + return "";
6.25 + }
6.26 +
6.27 + @Override
6.28 public IValue returnValue(final IValue jobj, Player proponent, Player opponent)
6.29 {
6.30 return new ICard()
6.31 {
6.32 @Override
6.33 + public String getName() {
6.34 + return "";
6.35 + }
6.36 +
6.37 + @Override
6.38 public IValue returnValue(final IValue nobj, Player proponent, Player opponent)
6.39 {
6.40 if(iobj instanceof Value && nobj instanceof Value)
6.41 @@ -39,13 +55,26 @@
6.42 {
6.43 int w = proponent.getSlot(j).getVitality();
6.44
6.45 - if(w > 0)
6.46 + if(Run.getAutoMode())
6.47 {
6.48 - int winc = (int) Math.floor(11 * n / 10);
6.49 - int resw = w + winc;
6.50 -
6.51 - proponent.getSlot(j).setVitality(resw > 65535 ? 65535 : resw);
6.52 + if(w > 0)
6.53 + {
6.54 + int winc = (int) Math.floor(11 * n / 10);
6.55 + int resw = w - winc;
6.56 +
6.57 + proponent.getSlot(j).setVitality(resw < 0 ? 0 : resw);
6.58 + }
6.59 }
6.60 + else
6.61 + {
6.62 + if(w > 0)
6.63 + {
6.64 + int winc = (int) Math.floor(11 * n / 10);
6.65 + int resw = w + winc;
6.66 +
6.67 + proponent.getSlot(j).setVitality(resw > 65535 ? 65535 : resw);
6.68 + }
6.69 + }
6.70
6.71 return new I();
6.72 }
7.1 --- a/src/main/java/ru/alphatech/icfpc/cards/I.java Sun Jun 19 17:30:18 2011 +0400
7.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/I.java Sun Jun 19 17:32:15 2011 +0400
7.3 @@ -6,6 +6,11 @@
7.4 public class I implements ICard
7.5 {
7.6 @Override
7.7 + public String getName() {
7.8 + return "I";
7.9 + }
7.10 +
7.11 + @Override
7.12 public IValue returnValue(IValue x, Player proponent, Player opponent)
7.13 {
7.14 return x;
8.1 --- a/src/main/java/ru/alphatech/icfpc/cards/ICard.java Sun Jun 19 17:30:18 2011 +0400
8.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/ICard.java Sun Jun 19 17:32:15 2011 +0400
8.3 @@ -5,5 +5,6 @@
8.4
8.5 public interface ICard extends IValue
8.6 {
8.7 + public String getName();
8.8 public IValue returnValue(final IValue value, Player proponent, Player opponent);
8.9 }
9.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Inc.java Sun Jun 19 17:30:18 2011 +0400
9.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Inc.java Sun Jun 19 17:32:15 2011 +0400
9.3 @@ -3,11 +3,17 @@
9.4 import ru.alphatech.icfpc.game.ICFPCException;
9.5 import ru.alphatech.icfpc.game.IValue;
9.6 import ru.alphatech.icfpc.game.Player;
9.7 +import ru.alphatech.icfpc.game.Run;
9.8 import ru.alphatech.icfpc.game.Value;
9.9
9.10 public class Inc implements ICard
9.11 {
9.12 @Override
9.13 + public String getName() {
9.14 + return "inc";
9.15 + }
9.16 +
9.17 + @Override
9.18 public IValue returnValue(IValue iobj, Player proponent, Player opponent)
9.19 {
9.20 if(iobj instanceof Value)
9.21 @@ -18,9 +24,19 @@
9.22 {
9.23 int v = proponent.getSlot(i).getVitality();
9.24
9.25 - if (v > 0 && v < 65535)
9.26 + if(Run.getAutoMode())
9.27 {
9.28 - proponent.getSlot(i).setVitality(v + 1);
9.29 + if(v > 0)
9.30 + {
9.31 + proponent.getSlot(i).setVitality(v - 1);
9.32 + }
9.33 + }
9.34 + else
9.35 + {
9.36 + if (v > 0 && v < 65535)
9.37 + {
9.38 + proponent.getSlot(i).setVitality(v + 1);
9.39 + }
9.40 }
9.41
9.42 return new I();
10.1 --- a/src/main/java/ru/alphatech/icfpc/cards/K.java Sun Jun 19 17:30:18 2011 +0400
10.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/K.java Sun Jun 19 17:32:15 2011 +0400
10.3 @@ -6,10 +6,20 @@
10.4 public class K implements ICard
10.5 {
10.6 @Override
10.7 + public String getName() {
10.8 + return "K";
10.9 + }
10.10 +
10.11 + @Override
10.12 public IValue returnValue(final IValue x, Player proponent, Player opponent)
10.13 {
10.14 return new ICard()
10.15 {
10.16 + @Override
10.17 + public String getName() {
10.18 + return "";
10.19 + }
10.20 +
10.21 public IValue returnValue(IValue y, Player proponent, Player opponent)
10.22 {
10.23 return y;
11.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Put.java Sun Jun 19 17:30:18 2011 +0400
11.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Put.java Sun Jun 19 17:32:15 2011 +0400
11.3 @@ -6,11 +6,21 @@
11.4 public class Put implements ICard
11.5 {
11.6 @Override
11.7 + public String getName() {
11.8 + return "put";
11.9 + }
11.10 +
11.11 + @Override
11.12 public IValue returnValue(IValue x, Player proponent, Player opponent)
11.13 {
11.14 return new ICard()
11.15 {
11.16 @Override
11.17 + public String getName() {
11.18 + return "";
11.19 + }
11.20 +
11.21 + @Override
11.22 public IValue returnValue(IValue value, Player proponent, Player opponent)
11.23 {
11.24 return new I();
12.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Revive.java Sun Jun 19 17:30:18 2011 +0400
12.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Revive.java Sun Jun 19 17:32:15 2011 +0400
12.3 @@ -8,6 +8,11 @@
12.4 public class Revive implements ICard
12.5 {
12.6 @Override
12.7 + public String getName() {
12.8 + return "revive";
12.9 + }
12.10 +
12.11 + @Override
12.12 public IValue returnValue(IValue iobj, Player proponent, Player opponent)
12.13 {
12.14 if (iobj instanceof Value)
13.1 --- a/src/main/java/ru/alphatech/icfpc/cards/S.java Sun Jun 19 17:30:18 2011 +0400
13.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/S.java Sun Jun 19 17:32:15 2011 +0400
13.3 @@ -6,14 +6,29 @@
13.4 public class S implements ICard
13.5 {
13.6 @Override
13.7 + public String getName() {
13.8 + return "S";
13.9 + }
13.10 +
13.11 + @Override
13.12 public IValue returnValue(final IValue f, Player proponent, Player opponent)
13.13 {
13.14 return new ICard()
13.15 {
13.16 + @Override
13.17 + public String getName() {
13.18 + return "";
13.19 + }
13.20 +
13.21 public IValue returnValue(final IValue g, Player proponent, Player opponent)
13.22 {
13.23 return new ICard()
13.24 {
13.25 + @Override
13.26 + public String getName() {
13.27 + return "";
13.28 + }
13.29 +
13.30 public IValue returnValue(final IValue x, Player proponent, Player opponent)
13.31 {
13.32 IValue h = f.returnValue(x, proponent, opponent);
14.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Succ.java Sun Jun 19 17:30:18 2011 +0400
14.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Succ.java Sun Jun 19 17:32:15 2011 +0400
14.3 @@ -8,6 +8,11 @@
14.4 public class Succ implements ICard
14.5 {
14.6 @Override
14.7 + public String getName() {
14.8 + return "succ";
14.9 + }
14.10 +
14.11 + @Override
14.12 public IValue returnValue(IValue nobj, Player proponent, Player opponent)
14.13 {
14.14 if(nobj instanceof Value)
15.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Zero.java Sun Jun 19 17:30:18 2011 +0400
15.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Zero.java Sun Jun 19 17:32:15 2011 +0400
15.3 @@ -6,6 +6,11 @@
15.4
15.5 public class Zero implements ICard
15.6 {
15.7 + @Override
15.8 + public String getName() {
15.9 + return "zero";
15.10 + }
15.11 +
15.12 public IValue returnValue(IValue value, Player proponent, Player opponent)
15.13 {
15.14 return new Value(0);
16.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Zombie.java Sun Jun 19 17:30:18 2011 +0400
16.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Zombie.java Sun Jun 19 17:32:15 2011 +0400
16.3 @@ -8,11 +8,21 @@
16.4 public class Zombie implements ICard
16.5 {
16.6 @Override
16.7 + public String getName() {
16.8 + return "zombie";
16.9 + }
16.10 +
16.11 + @Override
16.12 public IValue returnValue(final IValue iobj, Player proponent, Player opponent)
16.13 {
16.14 return new ICard()
16.15 {
16.16 @Override
16.17 + public String getName() {
16.18 + return "";
16.19 + }
16.20 +
16.21 + @Override
16.22 public IValue returnValue(final IValue x, Player proponent, Player opponent)
16.23 {
16.24 if (iobj instanceof Value)
17.1 --- a/src/main/java/ru/alphatech/icfpc/game/AbstractPolicy.java Sun Jun 19 17:30:18 2011 +0400
17.2 +++ b/src/main/java/ru/alphatech/icfpc/game/AbstractPolicy.java Sun Jun 19 17:32:15 2011 +0400
17.3 @@ -121,64 +121,6 @@
17.4 return list;
17.5 }
17.6
17.7 - protected ArrayList<Batch> BcombineForFunctWith3ParamsInRegister(ICard function, Slot processingSlot){
17.8 - ArrayList<Batch> retArray = new ArrayList<Batch>();
17.9 -
17.10 - if(!(function instanceof Attack || function instanceof Help)){
17.11 - throw new ICFPCException();
17.12 - }
17.13 -
17.14 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new Put(), processingSlot));
17.15 - retArray.add(new Batch(OperationType.SLOT_TO_CARD, function, processingSlot));
17.16 -
17.17 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
17.18 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
17.19 -
17.20 - retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Get(), processingSlot));
17.21 -
17.22 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
17.23 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
17.24 -
17.25 - retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Zero(), processingSlot));
17.26 -
17.27 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
17.28 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
17.29 -
17.30 - retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Get(), processingSlot));
17.31 -
17.32 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
17.33 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
17.34 -
17.35 - retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Succ(), processingSlot));
17.36 -
17.37 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
17.38 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
17.39 -
17.40 - retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Zero(), processingSlot));
17.41 -
17.42 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
17.43 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
17.44 -
17.45 - retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Get(), processingSlot));
17.46 -
17.47 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
17.48 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
17.49 -
17.50 - retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Succ(), processingSlot));
17.51 -
17.52 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
17.53 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
17.54 -
17.55 - retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Succ(), processingSlot));
17.56 -
17.57 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
17.58 - retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
17.59 -
17.60 - retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Zero(), processingSlot));
17.61 -
17.62 - return retArray;
17.63 - }
17.64 -
17.65 public abstract ArrayList<Batch> getBatches();
17.66
17.67 public static void main(String[] args)
18.1 --- a/src/main/java/ru/alphatech/icfpc/game/Batch.java Sun Jun 19 17:30:18 2011 +0400
18.2 +++ b/src/main/java/ru/alphatech/icfpc/game/Batch.java Sun Jun 19 17:32:15 2011 +0400
18.3 @@ -19,5 +19,25 @@
18.4 this.card = card;
18.5 this.slot = slot;
18.6 }
18.7 +
18.8 + @Override
18.9 + public String toString() {
18.10 + if(operationType == null || card == null || slot == null)
18.11 + throw new ICFPCException();
18.12 + StringBuilder ret = new StringBuilder();
18.13 + switch(operationType){
18.14 + case CARD_TO_SLOT:
18.15 + ret.append("1\n");
18.16 + ret.append(card.getName() + "\n");
18.17 + ret.append(slot.getId() + "\n");
18.18 + break;
18.19 + case SLOT_TO_CARD:
18.20 + ret.append("2\n");
18.21 + ret.append(slot.getId() + "\n");
18.22 + ret.append(card.getName() + "\n");
18.23 + break;
18.24 + }
18.25 + return ret.toString();
18.26 + }
18.27
18.28 }
19.1 --- a/src/main/java/ru/alphatech/icfpc/game/Player.java Sun Jun 19 17:30:18 2011 +0400
19.2 +++ b/src/main/java/ru/alphatech/icfpc/game/Player.java Sun Jun 19 17:32:15 2011 +0400
19.3 @@ -11,7 +11,7 @@
19.4 {
19.5 for(int i = 0; i < 255; i++)
19.6 {
19.7 - slots[i] = new Slot();
19.8 + slots[i] = new Slot(i);
19.9 }
19.10 }
19.11
20.1 --- a/src/main/java/ru/alphatech/icfpc/game/Run.java Sun Jun 19 17:30:18 2011 +0400
20.2 +++ b/src/main/java/ru/alphatech/icfpc/game/Run.java Sun Jun 19 17:32:15 2011 +0400
20.3 @@ -8,22 +8,20 @@
20.4 import java.io.BufferedReader;
20.5 import java.io.IOException;
20.6 import java.io.InputStreamReader;
20.7 -import java.util.LinkedList;
20.8 -import java.util.List;
20.9
20.10 import ru.alphatech.icfpc.game.strategy.IStrategy;
20.11 import ru.alphatech.icfpc.game.strategy.SimplyStrategy;
20.12
20.13 public class Run
20.14 {
20.15 + private static boolean automodeapply = false;
20.16 +
20.17 private static boolean endgame = false;
20.18
20.19 private static Player proponent = new Player();
20.20
20.21 private static Player opponent = new Player();
20.22
20.23 - private static LinkedList<Batch> batches = new LinkedList<Batch>();
20.24 -
20.25 private static int registers[] = new int[4];
20.26
20.27 static {
20.28 @@ -39,14 +37,6 @@
20.29 return proponent.getSlot( registers[registerIdex] );
20.30 }
20.31
20.32 - public static void clearBatcher(){
20.33 - batches.removeAll(batches);
20.34 - }
20.35 -
20.36 - public static void addBatcher(List<Batch> batches){
20.37 - batches.addAll(batches);
20.38 - }
20.39 -
20.40 public static Player getOpponent(){
20.41 return opponent;
20.42 }
20.43 @@ -88,6 +78,11 @@
20.44 strategy.moving(proponent, opponent, System.out);
20.45 }
20.46
20.47 + public static boolean getAutoMode()
20.48 + {
20.49 + return automodeapply;
20.50 + }
20.51 +
20.52 public static void main(String[] args) throws IOException
20.53 {
20.54 String playerNum = args[0];
21.1 --- a/src/main/java/ru/alphatech/icfpc/game/Slot.java Sun Jun 19 17:30:18 2011 +0400
21.2 +++ b/src/main/java/ru/alphatech/icfpc/game/Slot.java Sun Jun 19 17:32:15 2011 +0400
21.3 @@ -9,6 +9,18 @@
21.4
21.5 private IValue _value = new I();
21.6
21.7 + private int id = -1;
21.8 +
21.9 + public int getId() {
21.10 + return id;
21.11 + }
21.12 +
21.13 + public Slot(int id){
21.14 + if(id < 0 || id > 255)
21.15 + throw new ICFPCException();
21.16 + this.id = id;
21.17 + }
21.18 +
21.19 public void setVitality(int vitality)
21.20 {
21.21 _vitality = vitality;
22.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
22.2 +++ b/src/main/java/ru/alphatech/icfpc/game/strategy/OtherStrategy.java Sun Jun 19 17:32:15 2011 +0400
22.3 @@ -0,0 +1,28 @@
22.4 +package ru.alphatech.icfpc.game.strategy;
22.5 +
22.6 +import java.io.PrintStream;
22.7 +import java.util.LinkedList;
22.8 +import java.util.List;
22.9 +import java.util.Queue;
22.10 +
22.11 +import ru.alphatech.icfpc.game.Batch;
22.12 +import ru.alphatech.icfpc.game.Player;
22.13 +
22.14 +public class OtherStrategy implements IStrategy {
22.15 +
22.16 + private static Queue<Batch> batches = new LinkedList<Batch>();
22.17 +
22.18 + public void clearBatcher(){
22.19 + batches.removeAll(batches);
22.20 + }
22.21 +
22.22 + public void addBatcher(List<Batch> batches){
22.23 + this.batches.addAll(batches);
22.24 + }
22.25 +
22.26 + @Override
22.27 + public void moving(Player proponent, Player opponent, PrintStream out) {
22.28 + out.print(batches.poll());
22.29 + }
22.30 +
22.31 +}
23.1 --- a/src/main/java/ru/alphatech/icfpc/game/strategy/SimplyStrategy.java Sun Jun 19 17:30:18 2011 +0400
23.2 +++ b/src/main/java/ru/alphatech/icfpc/game/strategy/SimplyStrategy.java Sun Jun 19 17:32:15 2011 +0400
23.3 @@ -2,7 +2,10 @@
23.4
23.5 import java.io.PrintStream;
23.6
23.7 +import ru.alphatech.icfpc.cards.I;
23.8 +import ru.alphatech.icfpc.game.Batch;
23.9 import ru.alphatech.icfpc.game.Player;
23.10 +import static ru.alphatech.icfpc.game.Batch.OperationType.*;
23.11
23.12 /**
23.13 * @author indvdum
23.14 @@ -13,9 +16,8 @@
23.15
23.16 @Override
23.17 public void moving(Player proponent, Player opponent, PrintStream out) {
23.18 - out.print(1 + "\n");
23.19 - out.print("I" + "\n");
23.20 - out.print(0 + "\n");
23.21 + Batch batch = new Batch(CARD_TO_SLOT, new I(), opponent.getSlot(0));
23.22 + out.print(batch);
23.23 }
23.24
23.25 }
24.1 --- a/src/main/java/ru/alphatech/icfpc/policy/AttackHelpPolicy.java Sun Jun 19 17:30:18 2011 +0400
24.2 +++ b/src/main/java/ru/alphatech/icfpc/policy/AttackHelpPolicy.java Sun Jun 19 17:32:15 2011 +0400
24.3 @@ -67,7 +67,8 @@
24.4 return type == TYPE.ATTACK ? new Attack() : new Help();
24.5 }
24.6
24.7 - protected ArrayList<Batch> BcombineForFunctWith3ParamsInRegister(ICard function, Slot processingSlot){
24.8 + protected ArrayList<Batch> BcombineForFunctWith3ParamsInRegister(ICard function, Slot processingSlot)
24.9 + {
24.10 ArrayList<Batch> retArray = new ArrayList<Batch>();
24.11
24.12 if(!(function instanceof Attack || function instanceof Help)){
25.1 --- a/src/main/java/ru/alphatech/icfpc/policy/CompositionPolicy.java Sun Jun 19 17:30:18 2011 +0400
25.2 +++ b/src/main/java/ru/alphatech/icfpc/policy/CompositionPolicy.java Sun Jun 19 17:32:15 2011 +0400
25.3 @@ -5,19 +5,19 @@
25.4 import ru.alphatech.icfpc.game.AbstractPolicy;
25.5 import ru.alphatech.icfpc.game.Batch;
25.6
25.7 -public class CompositionPolicy extends AbstractPolicy{
25.8 +public abstract class CompositionPolicy extends AbstractPolicy{
25.9
25.10 protected ArrayList<AbstractPolicy> policies = new ArrayList<AbstractPolicy>();
25.11
25.12 - public void addPolicy(AbstractPolicy policy){
25.13 + protected void addPolicy(AbstractPolicy policy){
25.14 policies.add(policy);
25.15 }
25.16
25.17 - public void removePolicy(AbstractPolicy policy){
25.18 + protected void removePolicy(AbstractPolicy policy){
25.19 policies.remove(policy);
25.20 }
25.21
25.22 - public AbstractPolicy getPolicy(int index){
25.23 + protected AbstractPolicy getPolicy(int index){
25.24 return policies.get(index);
25.25 }
25.26
26.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
26.2 +++ b/src/main/java/ru/alphatech/icfpc/policy/OneArgumentCardsPolicy.java Sun Jun 19 17:32:15 2011 +0400
26.3 @@ -0,0 +1,104 @@
26.4 +package ru.alphatech.icfpc.policy;
26.5 +
26.6 +import java.util.ArrayList;
26.7 +
26.8 +import ru.alphatech.icfpc.cards.Copy;
26.9 +import ru.alphatech.icfpc.cards.Dec;
26.10 +import ru.alphatech.icfpc.cards.Get;
26.11 +import ru.alphatech.icfpc.cards.ICard;
26.12 +import ru.alphatech.icfpc.cards.Inc;
26.13 +import ru.alphatech.icfpc.cards.K;
26.14 +import ru.alphatech.icfpc.cards.Put;
26.15 +import ru.alphatech.icfpc.cards.Revive;
26.16 +import ru.alphatech.icfpc.cards.S;
26.17 +import ru.alphatech.icfpc.cards.Zero;
26.18 +import ru.alphatech.icfpc.game.AbstractPolicy;
26.19 +import ru.alphatech.icfpc.game.Batch;
26.20 +import ru.alphatech.icfpc.game.IValue;
26.21 +import ru.alphatech.icfpc.game.Run;
26.22 +import ru.alphatech.icfpc.game.Slot;
26.23 +import ru.alphatech.icfpc.game.Value;
26.24 +import ru.alphatech.icfpc.game.Batch.OperationType;
26.25 +
26.26 +public class OneArgumentCardsPolicy extends AbstractPolicy{
26.27 +
26.28 + public enum TYPE {
26.29 + DEC,
26.30 + INC,
26.31 + COPY,
26.32 + REVIVE
26.33 + }
26.34 +
26.35 + private TYPE type;
26.36 + private int processingSlotIndex = -1;
26.37 + private int registerIndex = -1;
26.38 + private int targetSlotIndex = -1;
26.39 +
26.40 +
26.41 + public OneArgumentCardsPolicy(TYPE type, int processingSlot, int target, int registerIndex) {
26.42 + this.type = type;
26.43 + this.processingSlotIndex = processingSlot;
26.44 + this.targetSlotIndex = target;
26.45 + this.registerIndex = registerIndex;
26.46 + }
26.47 +
26.48 + public ICard getCard(){
26.49 + switch (type) {
26.50 + case DEC:
26.51 + return new Dec();
26.52 + case INC:
26.53 + return new Inc();
26.54 + case COPY:
26.55 + return new Copy();
26.56 + case REVIVE:
26.57 + return new Revive();
26.58 + }
26.59 + return null;
26.60 + }
26.61 +
26.62 + protected boolean isEqualsCard(IValue value){
26.63 + if(value instanceof IValue)
26.64 + return false;
26.65 + if( type == TYPE.DEC && value instanceof Dec)
26.66 + return true;
26.67 + if( type == TYPE.INC && value instanceof Inc)
26.68 + return true;
26.69 + if( type == TYPE.COPY && value instanceof Copy)
26.70 + return true;
26.71 + if( type == TYPE.REVIVE && value instanceof Revive)
26.72 + return true;
26.73 + return false;
26.74 + }
26.75 +
26.76 + @Override
26.77 + public ArrayList<Batch> getBatches() {
26.78 + ArrayList<Batch> retArray = new ArrayList<Batch>();
26.79 +
26.80 + retArray.addAll(numberIntoSlotField(Run.getRegisterByIndex(registerIndex), targetSlotIndex));
26.81 +
26.82 + Slot processingSlot = Run.getProponent().getSlot(processingSlotIndex);
26.83 + IValue slotValue = processingSlot.getValue();
26.84 +
26.85 + if(slotValue instanceof Value){
26.86 + retArray.add(new Batch(OperationType.CARD_TO_SLOT, new Put(), processingSlot));
26.87 + retArray.add(new Batch(OperationType.SLOT_TO_CARD, getCard(), processingSlot));
26.88 + }else{
26.89 + ICard currentCard = (ICard) slotValue;
26.90 + if(!(currentCard instanceof Dec && type == TYPE.DEC) ||
26.91 + !(currentCard instanceof Inc && type == TYPE.INC))
26.92 + {
26.93 + retArray.add(new Batch(OperationType.CARD_TO_SLOT, new Put(), processingSlot));
26.94 + retArray.add(new Batch(OperationType.SLOT_TO_CARD, getCard(), processingSlot));
26.95 + }
26.96 + }
26.97 +
26.98 + retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
26.99 + retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
26.100 +
26.101 + retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Get(), processingSlot));
26.102 + retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Zero(), processingSlot));
26.103 +
26.104 + return retArray;
26.105 + }
26.106 +
26.107 +}
27.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
27.2 +++ b/src/main/java/ru/alphatech/icfpc/policy/ZombiePolicy.java Sun Jun 19 17:32:15 2011 +0400
27.3 @@ -0,0 +1,15 @@
27.4 +package ru.alphatech.icfpc.policy;
27.5 +
27.6 +import java.util.ArrayList;
27.7 +
27.8 +import ru.alphatech.icfpc.game.AbstractPolicy;
27.9 +import ru.alphatech.icfpc.game.Batch;
27.10 +
27.11 +public class ZombiePolicy extends AbstractPolicy {
27.12 +
27.13 + @Override
27.14 + public ArrayList<Batch> getBatches() {
27.15 + return null;
27.16 + }
27.17 +
27.18 +}