src/main/java/ru/alphatech/icfpc/game/strategy/LenarStrategy.java
author akhmetovlz
Mon, 20 Jun 2011 03:31:36 +0400
changeset 136 55efa3c48d4d
parent 135 a6e17b7f4506
permissions -rw-r--r--
(no commit message)
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
}