Probability enemy territory captured in X turns I am playing Warlight online (something like Risk), and my goal is to create a bot which plays against other bots.
n=100 attacking troops will on average kill 60 (p=0.6) troops each turn, 
n=100 defending troops will on average kill 70 (p=0.7) troops each turn.
They attack exactly at the same time.
Binomial distribution such that variance=n*p*(1-p)

My question is the following: imagine we have 40 troops and the enemy has 25 troops. I am interested in the case that I continuously attack. What would be the chance that I have won by turn X (e.g. X=5)?
For turn = 1, it is simply the cumulative sum from at least 25 kills: 
$$\sum_{i=25}^{40} {40 \choose i} * 0.6^i * (1-0.6)^{(40-i)} = 0.440$$ 
I have played around with the binomial distribution, but I find it difficult to calculate because of this "in X turns"; it seems it really explodes the amount of calculations needed (by lack of a smart trick).
Can this be done analytically or am I best off just to simulate this (which I assume will be much slower)?
EDIT: Perhaps it can simply be done by using the 60% and 70%?
 A: I use this to simulate, perhaps it might give more insight and perhaps someone might come with an analytical solution. 


*

*When defender has equal to attacker, the defender "wins"

*When the attacker didn't destroy defender by turn X, the attacker "loses"

*When defender reaches 0 troops, attacker "wins"


Here, N1 is the defender troops, N2 is attacker troops.
simulateBattle <-function(N1, N2, nsim=10000, max_turn=100,verbose=F) {  
  result <- 1:nsim
  turn <- 1:nsim
  for (i in 1:nsim) {
    t <- 1
    n1 <- N1; n2 <- N2
    if (verbose) { print(paste("turn", t, "n1", n1, "n2", n2)) }
    while (n1 < n2 && n1 > 0 && t < max_turn) { 
      temp_n1 <- n1
      n1 <- n1 - rbinom(1, n2 - 1, p=0.6)  # attack with n2 - 1
      n2 <- n2 - rbinom(1, temp_n1 , p=0.7) # defend with all
      t <- t + 1
      if (verbose) { print(paste("turn", t, "n1", n1, "n2", n2)) }
    }
    turn[i] <- t
    result[i] <- n1 <= 0
  } 
  cat(paste("P(attacker_wins): ", mean(result)))
}

Results: 
# Only first turn:
simulateBattle(25, 40, max_turn=2) 
[1] 0.36301

# Up until 2 turns:
simulateBattle(25, 40, max_turn=3)
[1] 0.9983

# Up until 3 turns:
simulateBattle(25, 40, max_turn=4)
[1] 0.99999

