Ir para conteúdo
Fórum Script Brasil
  • 0

Jogo da Forca com Imagem dica


nilww

Pergunta

Brothers,

Encontrei este jogo da forca, mas ele parece incompleto, pois o bonequinho enforcado não funciona de acordo com os erros cometidos.

Outra coisa é que eu queria sempre mostrar uma imagem (como dica) de acordo com a palavra selecionada.

Como sou iniciante em javascript, gostaria de uma ajuda para incluir estas duas soluções nesse código:

<script>
Array.prototype.random = function() {
/*Retorna um valor randômico de um array*/
return this[Math.floor((Math.random()*this.length))];
}
Array.prototype.chrArrayToString = function(sep) {
var a = new String();
var len = this.length;
for (var i = 0; i < len; i++) {
a += this
if (i+1<len) a += sep;
}
return a;
}
Array.prototype.search = function(s,q){
/*Multi-dimensional array search in javascript*/
var len = this.length;
if (q) {
s=s.toString();
for(var i=0; i<len; i++){
if(this.constructor == Array) if(this.search(s,q)) return true;
if(this.toString().indexOf(s) != -1) return true;
}
}
else {
for(var i=0; i<len; i++){
if(this.constructor == Array) if(this.search(s,q)) return true;
if(this===s) return true;
}
}
return false;
}
String.prototype.replaceAt=function() {
var rlen=(arguments[2]==null?1:arguments[2]);
return this.substring(0,arguments[0])+arguments[1]+this.substring(arguments[0]+rlen);
}
String.prototype.formatCurrency = function© {
var t = this; if(c == undefined) c = 2;
var p, d = (t=t.split("."))[1].substr(0, c);
for(p = (t=t[0]).length; (p-=3) > 1;) {
t = t.substr(0,p) + "." + t.substr(p);
}
return t+","+d+Array(c+1-d.length).join(0);
}
String.prototype.tiraacento = function (word){
var palavra = this.toLowerCase();
palavra = palavra.replace(/[áàâãª]/g,'a');
palavra = palavra.replace(/[ÁÀÂÃ]/g,"A");
palavra = palavra.replace(/[éèê]/g,"e");
palavra = palavra.replace(/[ÉÈÊ]/g,"E");
palavra = palavra.replace(/[íìî]/g,"i");
palavra = palavra.replace(/[óòôõº]/g,"o");
palavra = palavra.replace(/[ÓÒÔÕ]/g,"O");
palavra = palavra.replace(/[úùû]/g,"u");
palavra = palavra.replace(/[ÚÙÛ]/g,"U");
return palavra;
}
/* Construtor da classe */
function forca() {}
function executa(e){
/* Correção para eventos quebrados da Microsoft */
if(typeof(e)=='undefined')var e=window.event;
source=e.target?e.target:e.srcElement;
/* Correção para o bug do Konqueror/Safari */
if(source.nodeType==3)source=source.parentNode ;
/* Obtém a letra digitada */
var letra=source.value.tiraacento();
/* validação de entrada */
var validentry=/[A-Za-zÀ-ú]/
source.value="";
if(!validentry.test(letra)) return false
/* Se a letra ainda não está na lista de tentativas, adicione-a */
if(!this.letrastentadas.search(letra)) {
this.letrastentadas.push(letra);
this.tries.innerHTML = "Letras tentadas: " + this.letrastentadas.chrArrayToString(',');
}
if (this.palavraminuscula.indexOf(letra) != -1){
/* Achei a letra na palavra ! */
this.mostraletras(letra);
}else{
this.divmessages.innerHTML = 'A palavra não contém a letra ' + letra;
this.verificaerros(letra);
}
}
function verificaerros(letra){
/* se tem 0 erros ou a letra ainda não está na lista de letras erradas */
if (this.errors ==0 || !this.erradasletras.search(letra)){
this.erradasletras.push(letra);
this.erros++;
}
this.diverros.innerHTML = this.erros + ' erro(s)';
/* número máximo de error artingido, reiniciar o jogo ? */
if (this.erros>5){
this.divmessages.innerHTML = 'Fim de jogo!<br /> A palavra era ' + this.palavraselecionada;
var denovo = confirm("Quer jogar de novo?");
if (denovo==true) this.init();
}
}
function mostraletras(caractere){
/* em board], temos um array do tamanho da palavra oculta.
Se não foi achado ainda, board[caractere] =0
Após achar, board[caractere] =1
Depois de achado e exibido, board[caractere] =2
*/
for (var x=this.t-1; x>=0;x--){
if (this.palavraminuscula.charAt(x) == caractere) this.board[x]=1;
}
this.mostrapalavra();
}
function mostrapalavra(){
for (var x=0; x<this.t;x++){
if (this.board[x] & 1){
var ch = this.selecionadaarray[x];
this.wordoculta=this.wordoculta.replaceAt(x, ch);
this.board[x] = 2;
}
}
this.telaoculta.innerHTML = this.wordoculta;
if (this.wordoculta==this.palavraselecionada){
this.telaoculta.innerHTML = "Parabéns, você acertou! A palavra é: " + this.palavraselecionada;
var denovo = confirm("Quer jogar de novo?");
if (denovo==true) this.init()
}
}
function iniciar(){
this.erros=0;
this.wordoculta=new String;
this.erradasletras=new Array;
this.letrastentadas=new Array;
this.board=new Array;
this.selecionadaarray=new Array;
var palavras = new Array('Walter', 'Aline', 'Cecília', 'Rodrigo', 'Cidades', 'Coração', 'Freud', 'Jônatas',
'Rafael', 'Aprígio', 'javascript','venkman','mozilla','php','manga','mosquito', 'Nina', 'Lewis','Einstein');
this.size = document.getElementById('tamanho');
this.divmessages = document.getElementById('messages');
this.diverros=document.getElementById('erros');
this.telaoculta=document.getElementById('palavraoculta');
this.tries=document.getElementById('tentativas');
this.palavraselecionada = palavras.random();
this.palavraminuscula = this.palavraselecionada.tiraacento();
this.t=this.palavraselecionada.length;
this.wordoculta=this.palavraminuscula.replace(/[A-Za-zÀ-ú]/g,'_');
for (var z=0;z<this.t;z++){
this.board[z]=0;
this.selecionadaarray[z] = this.palavraselecionada.charAt(z);
}
this.telaoculta.innerHTML = this.wordoculta;
this.divmessages.innerHTML = 'Novo jogo iniciado';
this.diverros.innerHTML = 'Nenhum erro até o momento';
this.size.innerHTML = 'A palavra tem ' + this.t + ' letras';
this.tries.innerHTML = "Letras tentadas:";
}
forca.prototype.executa=executa
forca.prototype.verificaerros=verificaerros
forca.prototype.mostraletras=mostraletras
forca.prototype.mostrapalavra=mostrapalavra
forca.prototype.init=iniciar
function executaforca(e){
fo.executa(e);
}
function reinicio(){
document.getElementById('entrada').focus();
fo.init();
}
window.onload = init
function init(){
document.getElementById('entrada').focus();
fo = new forca();
fo.init();
var inputentry=document.getElementById('entrada');
inputentry.onkeyup=executaforca;
var novo=document.getElementById('new');
novo.onclick=reinicio
}
</script>
<style>
input.hid{ display:none; }
body{ background-color:#fff; font-family:Verdana,Arial,Helvetica; color:blue; font-weight:bold;}
#palavraoculta{ letter-spacing:5px; }
input.entry{ border:1px solid #666666; background-color: #ffffff; }
</style>
<head>
<title>Forca</title>
</head>
<center>
<br><br><br>
<body>
<div id="tamanho"></div>
<div id="erros"></div>
<div id="palavraoculta"></div>
<br />
<form>
<input id="hid" class="hid"></input>
<input id="entrada" type="text" class="entry" size="1" maxlength="1"></input>
<div id="messages"></div>
<div id="tentativas"></div><br />
<input type="button" value="Tentar Outra Palavra" id="new"></input>
</form>
<pre>
____
| |
| O
| /|\
| / \
|
</pre>
</body>
</center>
</html>
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...