Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Convertire codice da jQuery in Javascript puro

    Buongiorno a tutti!

    Sono uno studente di ingegneria, ho implementato una mezza scacchiera per la dama in jQuery. Ora che sono quasi a fine progetto e gli esami incombono vengo a scoprire che il progetto deve essere presentato in javascript puro che io non conosco a pieno. Qualcuno è in grado di darmi una mano per convertire il codice che ho buttato giù fino ad ora?

    Logica di generazione della scacchiera e delle pedine (già convertita in Javascript e trascritta per completezza)
    codice:
    	var Turno=1;
    	
    	
    	function creaScacchiera() { 
    	var row=1;
    	for (i=0;i<32;i++){
    	   var newdiv = document.createElement('div');
    	   newdiv.innerHTML += i;
    	   newdiv.setAttribute('id', i);   
    	   newdiv.setAttribute("class","casella");
    	   newdiv.className += " "+'row'+row;
    		if (i%4==3) {++row;}
    
    		if (i%8==0)
    		{
    			   newdiv.className += " capo";
    		}
    				if (i%8==7)
    		{
    			   newdiv.className += " capo_dx";
    		}
    
    		if (i<12)
    		{
    			   newdiv.className += " occupato";
       			   newdiv.innerHTML +='<div class="pedina bianchi" id="p'+i+'" onClick="cliccaPedina()"></div>'
    
    		}
    		else if (i>19)
    		{
    			   newdiv.className += " occupato";
    			   newdiv.innerHTML +='<div class="pedina neri" id="p'+i+'"></div>'
    		}
    		var schacchiera = document.getElementById('container');
    	   schacchiera.appendChild(newdiv);
       }
    }
    
    creaScacchiera();
    	/*
    for (i=0;i<32;i++){
    	$('#container').append('<div class="casella" id="'+i+'">'+i+'</div>');
    		if (i%8==0)
    	{
    		$('#'+i+'').addClass('capo');
    	}
    	if (i<12)
    	{
    		$('#'+i+'').append('<div class="pedina bianchi" id="p'+i+'"></div>').addClass('occupato');
    	}
    	else if (i>19)
    	{
    		$('#'+i+'').append('<div class="pedina neri" id="p'+i+'"></div>').addClass('occupato');
    	}
    }
    	*/
    Pedina mangiabile o non mangiabile.
    codice:
    function checkMangiabile(elemento,pedina)
    	{
    			var idc = Number($('#'+elemento+'').attr('id'));  // idc = id della casella potenzialmente mangiabiel.
    			var riga = ($('#'+elemento+'').attr('class')).substr(11,1);
    			var capo = ($('#'+elemento+'').attr('class')).substr(13,4);
    			var mangiante = Number($('#p'+pedina+'').parent().attr('id')); // Id casella della pedina mangiante
    
    	if (pedina <12) //OVVERO BIANCA
    	{
    
    		if($('#'+elemento+' > div').hasClass('neri'))
    		{
    
    				if (Number(riga)%2==1) // Se riga dispari
    					{
    						{
    							$('#'+(idc+(idc-mangiante-1))+'').not('.occupato').addClass('possible');	
    						}
    
    					}
    				else // se pari
    					{
    							$('#'+(idc+(idc-mangiante+1))+'').not('.occupato').addClass('possible');	
    					}
    		}
    	}
    	else //OVVERO NERA
    	{
    		if($('#'+elemento+' > div').hasClass('bianchi'))
    		{
    				if (Number(riga)%2==1)
    					{
    						{
    							$('#'+(idc+(idc-mangiante+1))+'').not('.occupato').addClass('possible');	
    						}
    
    					}
    				else
    					{
    							$('#'+(idc+(idc-mangiante-1))+'').not('.occupato').addClass('possible');	
    					}
    		}
    	}
    	//Bisogna Verificare se nei dintorni vi sono pedine avversarie mangiabili, a quel punto bisogna marcare la tabella di destinazione come 'possibile';
    	}
    	
    
    	function nuovoTurno()
    	{
        document.getElementById('info').innerHTML = "Turno n° "+ ++Turno;
    	}
    Logica di riconoscimento della pedina selezionata ed illuminazione delle destinazioni possibili.
    codice:
    	$(".pedina").click(function () {
    		$(".casella").removeClass('clicked');
    	//	$(".casella").removeClass('mangiabile'); superflua
    		$(this).parent().addClass('clicked');
    		var idc = Number($(this).parent().attr('id')); // Idc = id della casella. Casting esplicito a valore numerico (per avitare erronea concatenazione 14+4 = 144)
    		$(".casella").removeClass('possible');
    		var pedina = ($(this).attr('id')).substring(1); // Prendo id pedina.
    		var riga = ($(this).parent().attr('class')).substr(11,1);
    		var capo = ($(this).parent().attr('class')).substr(13,4);
    		if (pedina<12)
    		{
    			if(Turno%2==1)
    			{
    				if (Number(riga)%2==1)
    					{
    					if (capo=="capo") // Se sono ad un estremo
    						{
    							$('#'+(idc+4)+'').not('.occupato').addClass('possible'); // Metto occupato se l'id della casella +4 è non occupato.
    							if ($('#'+(idc+4)+'').hasClass('occupato'))
    							{
    							checkMangiabile((idc+4),pedina);
    							}
    						}
    					else
    						{
    							$('#'+(idc+4)+', #'+(idc+3)+'').not('.occupato').addClass('possible');
    							if($('#'+(idc+4)+'').hasClass('occupato'))
    							{
    								checkMangiabile((idc+4),pedina);
    							}
    							if($('#'+(idc+3)+'').hasClass('occupato'))
    							{
    								checkMangiabile((idc+3),pedina);
    							}
    						}
    					}
    				else // Riga pari
    					{
    					if (capo=="capo")
    						{
    							$('#'+(idc+4)+'').not('.occupato').addClass('possible');
    							if ($('#'+(idc+4)+'').hasClass('occupato'))
    							{
    							checkMangiabile((idc+4),pedina);
    							}
    
    						}
    					else{
    
    						$('#'+(idc+5)+', #'+(idc+4)+'').not('.occupato').addClass('possible');
    						if($('#'+(idc+5)+'').hasClass('occupato'))
    						{
    							checkMangiabile((idc+5),pedina);
    						}
    						if($('#'+(idc+4)+'').hasClass('occupato'))
    						{
    							checkMangiabile((idc+4),pedina);
    						}
    						}
    					}
    			}
    		}
    		if (pedina>19)
    		{
    			if(Turno%2==0)
    			{
    
    
    				if (Number(riga)%2==0)
    					{
    					if (capo=="capo")
    						{
    							$('#'+(idc-4)+'').not('.occupato').addClass('possible');
    							if ($('#'+(idc-4)+'').hasClass('occupato'))
    							{
    							checkMangiabile((idc-4),pedina);
    							}
    
    						}
    					else
    						{
    							$('#'+(idc-4)+', #'+(idc-3)+'').not('.occupato').addClass('possible');
    							if($('#'+(idc-4)+'').hasClass('occupato'))
    							{
    								checkMangiabile((idc-4),pedina);
    							}
    							if($('#'+(idc-3)+'').hasClass('occupato'))
    							{
    								checkMangiabile((idc-3),pedina);
    							}
    
    						}
    					}
    				else
    					{
    					if (capo=="capo")
    						{
    							$('#'+(idc-4)+'').not('.occupato').addClass('possible');
    							if ($('#'+(idc-4)+'').hasClass('occupato'))
    							{
    							checkMangiabile((idc-4),pedina);
    							}
    
    						}
    					else{
    						$('#'+(idc-5)+', #'+(idc-4)+'').not('.occupato').addClass('possible');
    						if($('#'+(idc-5)+'').hasClass('occupato'))
    						{
    							checkMangiabile((idc-5),pedina);
    						}
    						if($('#'+(idc-4)+'').hasClass('occupato'))
    						{
    							checkMangiabile((idc-4),pedina);
    						}
    						}
    						
    					}
    			}
    		}
        });
    Logica di spostamento delle pedine:
    codice:
    	$(".possible").live("click",function () {
    		$('.casella').removeClass('possible');
    		$('.casella').removeClass('mangiabile');
    		$('.clicked div').appendTo(this); // Sposta la pedina da un div all'altro.
    		$('.clicked').removeClass('occupato');
    		$('.clicked').removeClass('clicked');
    		$(this).addClass('occupato');
    		nuovoTurno();
    			if(Turno%2==1)
    			{
    				document.getElementById('info_game').innerHTML = "Tocca al Bianco";
    			}
    			else
    			{
    				document.getElementById('info_game').innerHTML = "Tocca al Nero";
    			}
        });
    Grazie in anticipo.
    Mattia

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Se ti aspetti che qualcuno ti converta tutto lo script in js, aspetti invano, dubito che qualcuno abbia il tempo e la voglia di sistemare tutto il codice(e cmq una parte te l'avevo già convertita tempo fa). Cerca di sistemare da solo il codice che non hai ancora convertito, posta qui solo le porzioni in cui ti trovi in difficoltà o chiedi spiegazioni sulle singole istruzioni che non riesci a capire/convertire.

    p.s. la parte che dici di aver già convertito in realtà contiene ancora istruzioni jquery.

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    E non mi sembra proprio il caso aprire nuove discussioni... prosegui nell'altra
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.