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)
     1 package ru.alphatech.icfpc.game.strategy;
     2 
     3 import java.util.ArrayList;
     4 import java.util.LinkedList;
     5 
     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;
    17 
    18 public class LenarStrategy implements IStrategy{
    19 
    20 	protected ArrayList<Batch> firstVitalityBoost(){
    21 		ArrayList<Batch> rtArr = new ArrayList<Batch>();
    22 		
    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());
    28 		
    29 		rtArr.addAll(new SetSlotValuePolicy(3, 36000).getBatches());
    30 		rtArr.addAll(new AttackHelpDelayPolicy(TYPE.HELP, 8, 4, 4, 3).getBatches());
    31 		
    32 		for(int i=0; i<16; ++i){
    33 			rtArr.addAll(new CallExpressionPolicy(6, 8, 0, true).getBatches());
    34 		}
    35 		// 4.v = 65535
    36 		
    37 //		rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 8, 4, 4, 50000, false, 3).getBatches());
    38 		rtArr.addAll(new SetSlotValuePolicy(3, 50000).getBatches());
    39 		
    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());
    43 		
    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());
    47 		
    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());
    51 		
    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());
    57 		
    58 		rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 4, 0, 50000).getBatches());
    59 		rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 0, 4, 50000).getBatches());
    60 		
    61 		rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 4, 1, 50000).getBatches());
    62 		rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 1, 4, 50000).getBatches());
    63 		
    64 		rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 4, 2, 50000).getBatches());
    65 		rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 2, 4, 50000).getBatches());
    66 		
    67 		rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 4, 3, 50000).getBatches());
    68 		rtArr.addAll(new AttackHelpPolicy(TYPE.HELP, 9, 3, 4, 50000).getBatches());
    69 		
    70 		return rtArr;
    71 	}
    72 	
    73 	LinkedList<Batch> batches = new LinkedList<Batch>();
    74 	
    75 	ArrayList<Batch> attackBatches(int targetSlot){
    76 		
    77 		ArrayList<Batch> rtArr = new ArrayList<Batch>();
    78 		
    79 		rtArr.addAll(new AttackHelpPolicy(TYPE.ATTACK, 7, 4, 255-i, 5000).getBatches());
    80 		
    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());
    85 
    86 		rtArr.addAll(new AttackHelpPolicy(TYPE.ATTACK, 7, 4, 255 - i, 5000)
    87 				.getBatches());
    88 
    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());
    93 
    94 		rtArr.addAll(new AttackHelpPolicy(TYPE.ATTACK, 7, 4, 255 - i, 5000)
    95 				.getBatches());
    96 
    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());
   101 
   102 		rtArr.addAll(new AttackHelpPolicy(TYPE.ATTACK, 7, 4, 255 - i, 5000)
   103 				.getBatches());
   104 
   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());
   109 		
   110 		
   111 		
   112 		return rtArr;
   113 	}
   114 	
   115 	public LenarStrategy() {
   116 		batches.addAll(firstVitalityBoost());
   117 		batches.addAll(attackBatches(0));
   118 	}
   119 	
   120 	int i=0;
   121 	
   122 	@Override
   123 	public Batch move(Player proponent, Player opponent) {
   124 		Batch batch = batches.poll();
   125 		if(batch != null)
   126 			return batch;
   127 		else{
   128 			if( i > 255)
   129 				return new Batch(OperationType.CARD_TO_SLOT, new I(), proponent.getSlot(0));
   130 			
   131 			batches.addAll( attackBatches(i) );
   132 			++i;
   133 			return batches.poll();
   134 		}
   135 	}
   136 
   137 }