Wargame Tank Simulation
Python 3, 465
Saved 8 bytes thanks to wnnmaw.
Saved 34 bytes thanks to DSM.
Expects tanks as lists as follows, [Rate of Fire, Accuracy, Armor, Attack]
from random import*
def f(r,b):
 r+=10,1;b+=10,1
 for x in range(200):
  if r[4]&lt;1:return&quot;Blue&quot;
  if b[4]&lt;1:return&quot;Red&quot;
  if x%int(r[0]*2)&lt;1:
   if random()&gt;=(r[1]*r[5]):b[4]-=(r[3]-b[2])//2;b[5]-=(b[5]!=0.25)/4
   else:b[5]+=(b[5]&lt;1)/4
   print('r,%f,%d,%f,%d,%f'%(x/2,*r[4:],*b[4:]))
  if x%int(b[0]*2)&lt;1:
   if random()&gt;=(b[1]*b[5]):r[4]-=(b[3]-r[2])//2;r[5]-=(r[5]!=0.25)/4
   else:r[5]+=(r[5]&lt;1)/4
   print('b,%f,%d,%f,%d,%f'%(x/2,*r[4:],*b[4:]))
 return&quot;Draw&quot;

Prints the output as Attacker,TimeOfShot,RedHealth,RedMorale,BlueHealth,BlueMorale. Morale is represented as a float.