akhmetovlz@118
|
1 |
package ru.alphatech.icfpc.game.strategy;
|
akhmetovlz@118
|
2 |
|
akhmetovlz@118
|
3 |
import java.util.ArrayList;
|
akhmetovlz@118
|
4 |
import java.util.LinkedList;
|
akhmetovlz@118
|
5 |
|
akhmetovlz@132
|
6 |
import ru.alphatech.icfpc.cards.I;
|
akhmetovlz@118
|
7 |
import ru.alphatech.icfpc.game.Batch;
|
akhmetovlz@118
|
8 |
import ru.alphatech.icfpc.game.ICFPCException;
|
akhmetovlz@118
|
9 |
import ru.alphatech.icfpc.game.Player;
|
akhmetovlz@132
|
10 |
import ru.alphatech.icfpc.game.Run;
|
akhmetovlz@132
|
11 |
import ru.alphatech.icfpc.game.Batch.OperationType;
|
akhmetovlz@121
|
12 |
import ru.alphatech.icfpc.policy.AttackHelpDelayPolicy;
|
akhmetovlz@118
|
13 |
import ru.alphatech.icfpc.policy.AttackHelpPolicy;
|
akhmetovlz@118
|
14 |
import ru.alphatech.icfpc.policy.CallExpressionPolicy;
|
akhmetovlz@121
|
15 |
import ru.alphatech.icfpc.policy.SetSlotValuePolicy;
|
akhmetovlz@118
|
16 |
import ru.alphatech.icfpc.policy.AttackHelpPolicy.TYPE;
|
akhmetovlz@118
|
17 |
|
akhmetovlz@118
|
18 |
public class LenarStrategy implements IStrategy{
|
akhmetovlz@118
|
19 |
|
akhmetovlz@118
|
20 |
protected ArrayList<Batch> firstVitalityBoost(){
|
akhmetovlz@118
|
21 |
ArrayList<Batch> rtArr = new ArrayList<Batch>();
|
akhmetovlz@118
|
22 |
|
akhmetovlz@118
|
23 |
// rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 8, 4, 6530, true).getBatches());
|
akhmetovlz@121
|
24 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 16, 4, 6530).getBatches());
|
akhmetovlz@121
|
25 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 32, 4, 6530).getBatches());
|
akhmetovlz@121
|
26 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 64, 4, 6530).getBatches());
|
akhmetovlz@121
|
27 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 128, 4, 6530).getBatches());
|
akhmetovlz@118
|
28 |
|
akhmetovlz@121
|
29 |
rtArr.addAll(new SetSlotValuePolicy(3, 36000).getBatches());
|
akhmetovlz@121
|
30 |
rtArr.addAll(new AttackHelpDelayPolicy(TYPE.HELP, 8, 4, 4, 3).getBatches());
|
akhmetovlz@120
|
31 |
|
akhmetovlz@120
|
32 |
for(int i=0; i<16; ++i){
|
akhmetovlz@120
|
33 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@120
|
34 |
}
|
akhmetovlz@118
|
35 |
// 4.v = 65535
|
akhmetovlz@118
|
36 |
|
akhmetovlz@121
|
37 |
// rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 8, 4, 4, 50000, false, 3).getBatches());
|
akhmetovlz@121
|
38 |
rtArr.addAll(new SetSlotValuePolicy(3, 50000).getBatches());
|
akhmetovlz@120
|
39 |
|
akhmetovlz@121
|
40 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 4, 16, 5000).getBatches());
|
akhmetovlz@120
|
41 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@120
|
42 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@120
|
43 |
|
akhmetovlz@121
|
44 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 4, 32, 5000).getBatches());
|
akhmetovlz@120
|
45 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@120
|
46 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@120
|
47 |
|
akhmetovlz@121
|
48 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 4, 64, 5000).getBatches());
|
akhmetovlz@120
|
49 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@120
|
50 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@120
|
51 |
|
akhmetovlz@121
|
52 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 5, 4, 128, 5000).getBatches());
|
akhmetovlz@120
|
53 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@120
|
54 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@120
|
55 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@120
|
56 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@120
|
57 |
|
akhmetovlz@121
|
58 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 4, 0, 50000).getBatches());
|
akhmetovlz@121
|
59 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 0, 4, 50000).getBatches());
|
akhmetovlz@120
|
60 |
|
akhmetovlz@121
|
61 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 4, 1, 50000).getBatches());
|
akhmetovlz@121
|
62 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 1, 4, 50000).getBatches());
|
akhmetovlz@120
|
63 |
|
akhmetovlz@121
|
64 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 4, 2, 50000).getBatches());
|
akhmetovlz@121
|
65 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 2, 4, 50000).getBatches());
|
akhmetovlz@120
|
66 |
|
akhmetovlz@121
|
67 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 4, 3, 50000).getBatches());
|
akhmetovlz@121
|
68 |
rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 3, 4, 50000).getBatches());
|
akhmetovlz@118
|
69 |
|
akhmetovlz@118
|
70 |
return rtArr;
|
akhmetovlz@118
|
71 |
}
|
akhmetovlz@118
|
72 |
|
akhmetovlz@132
|
73 |
LinkedList<Batch> batches = new LinkedList<Batch>();
|
akhmetovlz@132
|
74 |
|
akhmetovlz@132
|
75 |
ArrayList<Batch> attackBatches(int targetSlot){
|
akhmetovlz@132
|
76 |
|
akhmetovlz@132
|
77 |
ArrayList<Batch> rtArr = new ArrayList<Batch>();
|
akhmetovlz@132
|
78 |
|
akhmetovlz@132
|
79 |
rtArr.addAll(new AttackHelpPolicy(TYPE.ATTACK, 7, 4, 255-i, 5000).getBatches());
|
akhmetovlz@132
|
80 |
|
akhmetovlz@132
|
81 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
82 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
83 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
84 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
85 |
|
akhmetovlz@132
|
86 |
rtArr.addAll(new AttackHelpPolicy(TYPE.ATTACK, 7, 4, 255 - i, 5000)
|
akhmetovlz@132
|
87 |
.getBatches());
|
akhmetovlz@132
|
88 |
|
akhmetovlz@132
|
89 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
90 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
91 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
92 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
93 |
|
akhmetovlz@132
|
94 |
rtArr.addAll(new AttackHelpPolicy(TYPE.ATTACK, 7, 4, 255 - i, 5000)
|
akhmetovlz@132
|
95 |
.getBatches());
|
akhmetovlz@132
|
96 |
|
akhmetovlz@132
|
97 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
98 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
99 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
100 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
101 |
|
akhmetovlz@132
|
102 |
rtArr.addAll(new AttackHelpPolicy(TYPE.ATTACK, 7, 4, 255 - i, 5000)
|
akhmetovlz@132
|
103 |
.getBatches());
|
akhmetovlz@132
|
104 |
|
akhmetovlz@132
|
105 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
106 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
107 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
108 |
rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
|
akhmetovlz@132
|
109 |
|
akhmetovlz@136
|
110 |
|
akhmetovlz@136
|
111 |
|
akhmetovlz@132
|
112 |
return rtArr;
|
akhmetovlz@132
|
113 |
}
|
akhmetovlz@118
|
114 |
|
akhmetovlz@118
|
115 |
public LenarStrategy() {
|
akhmetovlz@132
|
116 |
batches.addAll(firstVitalityBoost());
|
akhmetovlz@132
|
117 |
batches.addAll(attackBatches(0));
|
akhmetovlz@132
|
118 |
}
|
akhmetovlz@118
|
119 |
|
akhmetovlz@132
|
120 |
int i=0;
|
akhmetovlz@118
|
121 |
|
akhmetovlz@118
|
122 |
@Override
|
akhmetovlz@118
|
123 |
public Batch move(Player proponent, Player opponent) {
|
akhmetovlz@118
|
124 |
Batch batch = batches.poll();
|
akhmetovlz@118
|
125 |
if(batch != null)
|
akhmetovlz@118
|
126 |
return batch;
|
akhmetovlz@132
|
127 |
else{
|
akhmetovlz@132
|
128 |
if( i > 255)
|
akhmetovlz@132
|
129 |
return new Batch(OperationType.CARD_TO_SLOT, new I(), proponent.getSlot(0));
|
akhmetovlz@132
|
130 |
|
akhmetovlz@132
|
131 |
batches.addAll( attackBatches(i) );
|
akhmetovlz@132
|
132 |
++i;
|
akhmetovlz@132
|
133 |
return batches.poll();
|
akhmetovlz@132
|
134 |
}
|
akhmetovlz@118
|
135 |
}
|
akhmetovlz@118
|
136 |
|
akhmetovlz@118
|
137 |
}
|