JSFiddle - React, Tailwind, and code Playground

by XarX

HTML

<div id="console-log"></div>

CSS

.console-line
{
    font-family: monospace;
    margin: 2px;
    color: #ddd;
}
body {
  background-color: #333;
}

JavaScript

var consoleLine = "<p class=\"console-line\"></p>";
 
console = {
    log: function (text) {
        $("#console-log").append($(consoleLine).html(text));
    }
};

const orc = {
	type: "Big Orc",
	attack: 200,
  defense: 100,
  stealth: 1,
};

const goblin = {
	type: "Goblin",
	attack: 90,
  defense: 10,
  stealth: 1,
};

const crystal = {
	type: "Crystal",
	attack: 150,
  defense: 90,
  stealth: 80,
};

const shadowgoblin = {
	type: "Shadowgoblin",
	attack: 125,
  defense: 30,
  stealth: 90,
};

const human = {
	type: "Human",
	attack: 125,
  defense: 50,
  stealth: 1,
};
const humanDef = {
	type: "HumanDef",
	attack: 125,
  defense: 60,
  stealth: 1,
};
const humanAtt = {
	type: "HumanAtt",
	attack: 135,
  defense: 50,
  stealth: 1,
};
const humanCitadel = {
	type: "HumanCitadel",
	attack: 140,
  defense: 80,
  stealth: 1,
};

var runs = 100;
var wins = [0,0];
var types = ["",""];
var remainingVictors = [0,0];

var logThis = false;
var logThisDetail = false;

for (var run=0; run<runs; run++) {
	var unit = [];
  var amount = [10,10];
	// Army 1
  unit[0] = Object.create(humanCitadel);
  amount[0] = 2800;
  types[0] = unit[0].type;
  // Army 2
  unit[1] = Object.create(goblin);
  amount[1] = 10000;
  types[1] = unit[1].type;
  var round = 0;
  var emergencyExit = 100;
  if (logThis) {
  	console.log("Battle begins..");
    console.log("Army 1: " + amount[0] + " soldiers.");
    console.log("Army 2: " + amount[1] + " soldiers.");
    console.log(".");
  }
  while (amount[0] > 0 && amount[1] > 0 && emergencyExit > 0) {
  	emergencyExit--;
    if (logThis) console.log(".Round " + round);
  	var hits = [0,0];
    for (var army=0;army<2;army++) {
    	if (logThis) console.log("..Army " + (army+1) + " attacks:")
    	for (var attack=0; attack < Math.min(Math.max(amount[army]*0.05, 100), amount[army]); attack++) {
    	//for (var attack=0; attack < amount[army]; attack++) {
    		var strike = Math.floor(Math.random()*unit[army].attack+1);
        if (strike >...