Fiz diferente, gostaria de saber se essa forma é melhor ou pior que a utilizada na solução. No caso fiz assim para reutilizar o código.
<meta charset="UTF-8" />
<canvas id="tela" width="600" height="400" />
<script>
var tela = document.getElementById("tela");
var c = tela.getContext("2d");
c.fillStyle = "gray";
c.fillRect(0,0,600,400);
var cliqueEsquerdo = function(e) {
atira(e, "blue");
}
var cliqueDireito = function(e) {
atira(e, "red");
e.preventDefault();
}
var atira = function(e, cor) {
var x = e.pageX - tela.offsetLeft;
var y = e.pageY - tela.offsetTop;
c.fillStyle = cor;
c.beginPath();
c.arc(x, y, 10, 0, 2 * 3.14);
c.fill();
console.log("posição do clique: " + x + ", " + y);
}
tela.onclick = cliqueEsquerdo;
tela.oncontextmenu = cliqueDireito;
</script>