private WorldsGenerator(World world, int width) { var meleeLookupRadius = width / 10; var horsemanLookupRadius = width / 6; var archerLookupRadius = width / 2; var meleeFightStrategy = new MeleeFightStrategy(world); var fireStrategy = new FireStrategy(world); IStrategy up = new DefaultMoveStrategy(1, 0, world); IStrategy down = new DefaultMoveStrategy(-1, 0, world); _meleeStrategiesUp = new StrategySet(meleeFightStrategy, new MoveToEnemyStrategy(world, meleeLookupRadius), up); _meleeStrategiesDown = new StrategySet(meleeFightStrategy, new MoveToEnemyStrategy(world, meleeLookupRadius), down); IStrategy horseUp = new HorseMoveStrategy(1, 0, world); IStrategy horseDown = new HorseMoveStrategy(-1, 0, world); _strategiesHorseUp = new StrategySet(meleeFightStrategy, new MoveToEnemyStrategy(world, horsemanLookupRadius), horseUp); _strategiesHorseDown = new StrategySet(meleeFightStrategy, new MoveToEnemyStrategy(world, horsemanLookupRadius), horseDown); _archerStrategiesUp = new StrategySet(fireStrategy, meleeFightStrategy, new MoveToEnemyStrategy(world, archerLookupRadius), up); _archerStrategiesDown = new StrategySet(fireStrategy, meleeFightStrategy, new MoveToEnemyStrategy(world, archerLookupRadius), down); _world = world; }
/// <returns>a dictionary indicating for each node whether a winning strategy exists for even</returns> public Dictionary<Vertex, bool> Solve(LiftingStrategy liftStrat) { liftStrat.Initialize(this.pg); var rho = new StrategySet(); foreach (var v in pg.V) rho[v] = new DTuple(d); // calculate fixpoint var workBatch = liftStrat.GetBatch(); while (workBatch != null && workBatch.Count() > 0) { // lifting strategy determines which order in which to lift vertices foreach (var v in workBatch) { // repeatedly lift vertex v DTuple old; int numIteration = 0; do { if (numIteration++ > 0) liftStrat.Progress(); // tell strategy we made progress old = rho[v]; Lift(v, rho); } while (rho[v] > old); } // continue with next batch workBatch = liftStrat.GetBatch(); } var ret = new Dictionary<Vertex, bool>(); foreach (var entry in rho) ret[entry.Key] = entry.Value != MTop; return ret; }
public DTuple Prog(StrategySet rho, Vertex v, Vertex w) { var rho_w = rho[w]; var ret = new DTuple(rho_w.Count); if (v.PriorityEven) { // return the least m >= (up to p(v)) rho // easily constructed by copying values up to p(v) and padding with 0 if (rho_w.IsTop) ret = MTop; else for (int i = 0; i < v.Priority; i++) ret[i] = rho_w[i]; } else { // return the least m > (up to p(v)) rho[w] // constructed by taking the first elem before p(v) that can be incremented, MTop otherwise for (int i = v.Priority; i >= 0; i--) { if (rho_w[i] < MMaxEven[i]) { ret[i] = rho_w[i] + 1; // leave stuff in front same as rho_w for (int j = 0; j < i; j++) ret[j] = rho_w[j]; // and set remainder to 0 for (int j = i + 1; j < d; j++) ret[j] = 0; break; } else if (i == 0) // nothing could be incremented ret = MTop; else // copy this val, try to incr. next ret[i] = rho_w[i]; } } return ret; }
protected UnitBase(Team team, StrategySet strategies, int y, int x) { Team = team; _strategies = strategies; Y = y; X = x; Health = MaxHealth; }
protected void Button30_Click(object sender, EventArgs e) { StrategySet set = new StrategySet(); IGradeStrategy strategy = StrategyFactory.GetGradeStrategy(this.DropDownList1.SelectedValue); strategy.Value = this.DropDownList2.SelectedValue; this.Label4.Text = strategy.BuildQuery(); CustomerGrade cg = new CustomerGrade(); cg.CompanyID = 2; cg.GradeLevel = UserLevel.D; cg.GradeLimit = strategy.BuildQuery(); CustomerGradeManager.Create(cg); }
public HorseMan(Team team, StrategySet strategies, int y, int x) : base(team, strategies, y, x) { }
protected void Button31_Click(object sender, EventArgs e) { StrategySet set = new StrategySet(); set.ReFill(@"RegionID = BeiJING AND IndustryID = JSJ AND BrandID = 'AMD' "); }
private void prepStrategyCards(StrategySet set, StrategyCard[] replacements) { //Prepare set prepStrategyCards (set); foreach (StrategyCard replacementCard in replacements) { strategyCards[replacementCard.Initiative] = replacementCard; } }
private void prepStrategyCards(StrategySet set) { foreach (StrategyCard strategyCard in strats.Values){ if (strategyCard.Set == set) { strategyCards[strategyCard.Initiative] = strategyCard; } } if (strategyCards.Values.Count < 8) { //Set is incomplete (Fall of the Empire). Fill in with original strategy cards foreach (StrategyCard strategyCard in strats.Values){ if (strategyCard.Set == StrategySet.Vanilla && !strategyCards.ContainsKey (strategyCard.Initiative)) { strategyCards[strategyCard.Initiative] = strategyCard; } } } strategyCardsDebug = new StrategyCard[8]; }
public SwordsMan(Team team, StrategySet strategies, int y, int x) : base(team, strategies, y, x) { }
private void Lift(Vertex v, StrategySet rho) { var ps = v.Adj.Select(w => Prog(rho, v, w)).OrderBy(d => d); rho[v] = v.OwnerEven ? ps.First() : ps.Last(); }
public string StrategySetToString(StrategySet strategySet) { return strategySetTo [strategySet]; }
public Archer(Team team, StrategySet strategies, int y, int x) : base(team, strategies, y, x) { }