using System.Collections.Generic;
public static void Main()
int[,] tabuleiro = new int[4,4];
Jogo jogo = new Jogo(tabuleiro);
Console.WriteLine("Digite a posição da peça que você quer mover");
Console.Write("Linha: ");
int linha = int.Parse(Console.ReadLine());
Console.Write("Coluna: ");
int coluna = int.Parse(Console.ReadLine());
Console.WriteLine("Digite a posição final da peça");
Console.Write("Linha: ");
int linha1 = int.Parse(Console.ReadLine());
Console.Write("Coluna: ");
int coluna1 = int.Parse(Console.ReadLine());
Posicao pos = new Posicao(linha, coluna);
Posicao pos1 = new Posicao(linha1, coluna1);
public int[,] tab = new int[4,4];
public Jogo(int[,] tabuleiro){
List<int> numeros = new List<int>{1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15};
Random gerador = new Random();
int num = gerador.Next(1, numeros.Count);
for(int j =0; j< 4; j++){
numeros.Remove(numeros[num]);
num = gerador.Next(numeros.Count);
for(int j =0; j< 4; j++){
Console.Write(tab[i,j] + " ");
void AtualizarTabuleiro(){
for(int j =0; j< 4; j++){
Console.Write(tab[i,j] + " ");
public void Jogada(Posicao pos, Posicao pos1){
if(PodeJogar(pos, pos1)){
tab[pos.X, pos.Y] = tab[pos1.X, pos1.Y];
tab[pos1.X, pos1.Y] = tab[pos.X, pos.Y];
}else {Console.WriteLine("Posições inválidas");}
public bool PodeJogar(Posicao pos, Posicao pos1){
if(tab[pos1.X, pos1.Y] == 0 && tab[pos1.X, pos1.Y] != 0 && tab[pos1.X - 1, pos1.Y] == tab[pos.X, pos.Y]
|| tab[pos1.X + 1, pos1.Y] == tab[pos.X, pos.Y]
|| tab[pos1.X, pos1.Y-1] == tab[pos.X, pos.Y]
|| tab[pos1.X, pos1.Y+1] == tab[pos.X, pos.Y]){
public Posicao(int x, int y){