1 package ru.alphatech.icfpc.game.strategy;
3 import java.util.ArrayList;
4 import java.util.LinkedList;
6 import ru.alphatech.icfpc.cards.I;
7 import ru.alphatech.icfpc.game.Batch;
8 import ru.alphatech.icfpc.game.ICFPCException;
9 import ru.alphatech.icfpc.game.Player;
10 import ru.alphatech.icfpc.game.Run;
11 import ru.alphatech.icfpc.game.Batch.OperationType;
12 import ru.alphatech.icfpc.policy.AttackHelpDelayPolicy;
13 import ru.alphatech.icfpc.policy.AttackHelpPolicy;
14 import ru.alphatech.icfpc.policy.CallExpressionPolicy;
15 import ru.alphatech.icfpc.policy.SetSlotValuePolicy;
16 import ru.alphatech.icfpc.policy.AttackHelpPolicy.TYPE;
18 public class LenarStrategy implements IStrategy{
20 protected ArrayList<Batch> firstVitalityBoost(){
21 ArrayList<Batch> rtArr = new ArrayList<Batch>();
23 // rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 8, 4, 6530, true).getBatches());
24 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 16, 4, 6530).getBatches());
25 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 32, 4, 6530).getBatches());
26 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 64, 4, 6530).getBatches());
27 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 128, 4, 6530).getBatches());
29 rtArr.addAll(new SetSlotValuePolicy(3, 36000).getBatches());
30 rtArr.addAll(new AttackHelpDelayPolicy(TYPE.HELP, 8, 4, 4, 3).getBatches());
32 for(int i=0; i<16; ++i){
33 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
37 // rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 8, 4, 4, 50000, false, 3).getBatches());
38 rtArr.addAll(new SetSlotValuePolicy(3, 50000).getBatches());
40 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 4, 16, 5000).getBatches());
41 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
42 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
44 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 4, 32, 5000).getBatches());
45 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
46 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
48 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 4, 64, 5000).getBatches());
49 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
50 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
52 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 4, 128, 5000).getBatches());
53 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
54 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
55 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
56 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
58 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 4, 0, 50000).getBatches());
59 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 0, 4, 50000).getBatches());
61 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 4, 1, 50000).getBatches());
62 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 1, 4, 50000).getBatches());
64 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 4, 2, 50000).getBatches());
65 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 2, 4, 50000).getBatches());
67 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 4, 3, 50000).getBatches());
68 rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 3, 4, 50000).getBatches());
73 LinkedList<Batch> batches = new LinkedList<Batch>();
75 ArrayList<Batch> attackBatches(int targetSlot){
77 ArrayList<Batch> rtArr = new ArrayList<Batch>();
79 rtArr.addAll(new AttackHelpPolicy(TYPE.ATTACK, 7, 4, 255-i, 5000).getBatches());
81 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
82 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
83 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
84 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
86 rtArr.addAll(new AttackHelpPolicy(TYPE.ATTACK, 7, 4, 255 - i, 5000)
89 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
90 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
91 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
92 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
94 rtArr.addAll(new AttackHelpPolicy(TYPE.ATTACK, 7, 4, 255 - i, 5000)
97 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
98 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
99 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
100 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
102 rtArr.addAll(new AttackHelpPolicy(TYPE.ATTACK, 7, 4, 255 - i, 5000)
105 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
106 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
107 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
108 rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
115 public LenarStrategy() {
116 batches.addAll(firstVitalityBoost());
117 batches.addAll(attackBatches(0));
123 public Batch move(Player proponent, Player opponent) {
124 Batch batch = batches.poll();
129 return new Batch(OperationType.CARD_TO_SLOT, new I(), proponent.getSlot(0));
131 batches.addAll( attackBatches(i) );
133 return batches.poll();