JSFiddle - React, Tailwind, and code Playground
HTML
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<body>
<h3 id="talking_box">!Cuando quieras!</h3>
</body>
</html>
CSS
*
{
margin: 0; /*Resetea los márgenes de todos los elementos en la página*/
}
body
{
background-color: #AA7639;
color:#884900;
font-size: 46px;
text-align: center;
-webkit-user-select: none; /*Para que no se pueda seleccionar el texto interior de las fichas*/
user-select: none;
}
#game_board
{
background-color: #884900;
border-radius: 5px;
margin: 20px auto;
position: relative;
}
#piece_container
{
background-color: #AA7639;
font-size: 0;
height: 96%; /*El alto del div interior que conforma el tablero para dar la sensación de un borde grueso*/
left: 2%;
position: absolute;
top:2%;
width: 96%; /*El ancho del div interior que conforma el tablero para dar la sensación de un borde grueso*/
}
#talking_box
{
background-color: #FFF3E6;
border: 5px solid #884900;
border-radius: 5px;
color: #FF8901;
height:auto;
margin: 10px auto;
padding-bottom: 5px;
width: 500px;
}
.game_piece
{
background-color: #FFF3E6;
border: 2px groove #737679;
box-sizing: border-box; /*Propiedad que hace que los bordes cuenten en el tamaño total de cada ficha*/
display: inline-block;
height: 25%; /*Ancho de la ficha: la cuarta parte del tablero */
position: absolute;
width: 25%;
}
.number_container
{
color: #FF8901;
cursor: default;
font-size: 50px;
height: 50%;
left: 50%;
margin: -25% 0 0-25%;
position: absolute;
text-align: center;
top: 50%;
width: 50%;
}
JavaScript
//Función hecha para desorganizar un vector de cualquier tamaño
function Random(array)
{
var length = array.length; //Se obtiene el tamaño del vector
var aux; //Variable auxiliar que permite el intercambio entre valores internos del vector
var randomPos; //variable que guarda el número aleatorio generado
// Se recorre todo el vector
for(var i=0;i<length;i++)
{
aux = array[i]; //Se almacena el valor del vector en la posición actual i
randomPos = Math.floor(Math.random() * length); //Se genera un número aleatorio entre 0 y el tamaño - 1
array[i] = array[randomPos]; //Se coloca el valor del vector en la posición random como valor del vector en la posición actual
array[randomPos] = aux; //Se coloca el valor del vector en la posición actual como valor del vector en la posición random
}
return array; //Se devuelve un vector con orden diferente al inicial
}
var Piece = function(value,rigthPosX,rigthPosY,posX,posY)
{
this.value = value; //Valor numérico de la ficha
this.isRigthPosition = false; //Variable que indica si la ficha se encuentra en la posición correcta
this.posX = posX; //Variable que indica la fila actual en la que se encuentra la ficha (tablero 4x4)
this.posY = posY; //Variable que indica la columna actual en la que se encuentra la ficha (tablero 4x4)
this.rigthPosX = rigthPosX; //Variable que indica la fila en la que debería esta la ficha para estar en la posición correcta
this.rigthPosY = rigthPosY; //Variable que indica la columna en la que debería esta la ficha para estar en la posición correcta
}
var Game = function()
{
this.isWrongCount = 0; //Cuenta el número de fichas que se encuentran actualmente en la posición incorrecta
this.piecesArray = new Array(); //Vector que contiene las 15 fichas y el espacio (simulado como otra ficha)
//Este método permite hacer las configuraciones iniciales del juego. Ejemplo: repartir las fichas aleatoriamente.
this.initializeGame = function()
{
var randomArray = new Array(); //Variable...