A mí el
split() también me gusta más; pero me parece que no alcanza. Por que es cierto lo de las cadenas. No devuelven números sino literales.
Hay una forma muy fácil de arreglarlo, porque si se empieza a trabajar con números javascript supone que los valores siguientes también lo son, aunque vengan de un literal.
(Obviamente, si trabajamos con base10, al caracter "a" no lo va a interpretar jamás como un valor numérico, pero del "0" al "9", sí.)
El (casi) "truco" es poner en la variable
resultadoDados un valor numérico, y lo que le sumemos después con las funciones va a ser entonces interpretado como un número.
Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript">
var resultadoDados = 0;
var dados = prompt("¿Qué dados quieres tirar?");
resultadoDados = tiradaDado(dados);
alert("El resultado es " + resultadoDados);
function aleatorio(a,b) {
return Math.round(Math.random()*(b-a)+a);
}
function tiradaDado(dados) {
var posicion_d = dados.indexOf("d"); alert(posicion_d+" posicion_d")
var numeroDeDados = (dados.substring(0, posicion_d)); alert(numeroDeDados+" numeroDeDados")
var valorDeDados = (dados.substring(posicion_d+1)); alert(valorDeDados+" valorDeDados")
var tiradaDados = aleatorio(1, valorDeDados); alert(tiradaDados+" tiradaDados")
for(i=0; i<numeroDeDados; i++) {
resultadoDados += tiradaDados; alert(resultadoDados+" resultadoDados")
}
return resultadoDados
}
</script>
</html>
De cualquier forma, yo no llego a entender el objetivo del escript, pero supongo que servirá.