>> ZAMYLA CHAN: Vamos ter divertir com quinze.
Quinze é o primeiro jogo que você obtenha para implementar e é interativo.
Agora, não se preocupe.
Você não tem que escrever o tudo mesmo.
Verifique o código de distribuição, porque um muito da estrutura do jogo já está
configurado para você.
Ele aceita e analisa uma linha de comando argumento do usuário e cria uma
placa com base nessa entrada.
Ele verifica se o jogo está ganho e sai uma vez que o usuário do ganhou o jogo.
E para ganhar o jogo, ele fica entrada do usuário e
chama a função Move.
>> Então, nós vamos estar implementando quatro funções para o jogo de quinze anos,
init, desenhar, mover, e ganhou.
Primeiro, vamos resolver o init.
No init, para inicializar, representamos a placa em um array de inteiros 2D.
E esta é uma variável global chamada placa com dimensões MAX e MAX,
as dimensões máximas do conselho.
Agora, a dimensão real do conselho é dada pelo utilizador, representada em
o número inteiro d, o que poderia ser inferior a MAX.
Mas, em C, você não pode redimensionar matrizes, então você está preso com
essa dimensão máxima.
>> Seu trabalho em init é preencher os valores do conselho
com o valor correcto.
Agora, temos visto matrizes 1D, mas como matrizes 2D funciona?
Há um índice da linha, zerar indexados, como sempre, e depois também de
a coluna.
E você vai preencher sua grade em em descendente valores, assim como este.
Grade, 0, 0, linha 0, coluna 0, 8 é, grade 0, 1 a 7.
Isto é para um exemplo onde d, pouco d, é 3.
>> Agora, o conselho em Quinze devem também conter uma telha em branco, se você já
jogado com o jogo físico.
Mas, o conselho é um array de inteiros, de modo todos os valores têm de ser números inteiros.
Portanto, cabe a você decidir um inteiro valor para representar um azulejo branco.
Para inicializar sua placa, você pode usar estruturas de loop para conter a
estado inicial da placa, onde bordo i j representa o elemento em
i linha e coluna j.
Eles começam em ordem decrescente e, lembrar que, se o número de peças
é estranho, então você vai ter que trocar a localização de 2 e de 1.
Portanto, há, temos a nossa placa inicializado.
>> Agora, que temos a nossa inicializado placa, é hora de desenhá-la.
Sorteio irá imprimir o estado actual da placa, mas você precisa ter certeza de
para imprimir azulejos na mesma ordem que você tenha inicializado eles.
E você também precisa formatar seus números corretamente.
Porque nós pode ter um dígito e dois dígitos, então você quer
imprimir um espaço em branco antes todos os números de um dígito.
Você usa isso usando o espaço reservado -.
>> Mas lembre-se o nosso espaço em branco.
Nós não queremos imprimir o número real que temos escolhido para representar
que o espaço em branco na placa, mas também não quer imprimir nada.
Então o que você pode fazer é definir um símbolo ou caracteres para representar o
azulejo branco.
Nos exemplos anteriores, eu escolhi um sublinhado, e então você apenas imprimir
que sempre que você chegar ao branco espaço em sua função de empate.
>> Então desenhar terá aninhados para loops.
Algo parecido com isto.
Para cada linha, em seguida, para cada valor de a linha, você está indo para imprimir o
valor neste espaço.
Depois de impresso todos os valores na linha, então você
pode imprimir uma nova linha.
Lembre-se que a ordem para o seu sorteio função deve ecoar ou espelhar a ordem
na sua função inicializado.
>> Agora que você inicializar a bordo e que você tenha desenhado isso, é hora de deixar
o usuário editá-lo e fazer os seus movimentos.
Assim, em função Fifteen.c, o programa leva a entrada do usuário e
em seguida, chama a função de movimento, passando o número da telha que o
usuário deseja mover.
Agora, tome cuidado.
Este é o número real da telha e não a sua posição real.
Então, você precisa procurar a telha de posição de saber onde ele está.
>> Agora, você só deve permitir que o usuário para fazer um movimento, se é legal.
Um lance legal é qualquer peça que é adjacente ao azulejo branco.
Isso significa que, acima e abaixo, para a esquerda e para a direita.
Então, você vai precisar saber onde o azulejo branco é tão bem.
Agora, para cada movimento que você está procurando a telha de usuários, mas é provavelmente
não melhor para procurar o azulejo branco cada vez, porque você está fazendo isso
cada vez que o usuário deseja mover.
Então, em vez disso, é melhor se lembrar de onde o azulejo branco está usando algum
bem nomeado variáveis.
Então, quando você permitir que o usuário faça a sua movimentos, eles estão bem no seu
maneira de ganhar o jogo dos Quinze.
>> Para ganhar o jogo dos Quinze, as telhas tem que estar em uma ordem específica, e
a função ganhou verifica se o jogo está ganho.
Ele retorna True se o jogo está ganho e as telhas são na ordem correta,
e False caso contrário.
Então, para ganhar o jogo de quinze anos, telhas tem que ser por ordem crescente, com o
azulejo branco no canto inferior direito.
Assim como você verificar se o usuário mudou-se a placa no direito
orientação?
>> Bem, você vai interagir sobre a placa e verificar os valores para se certificar de que
eles estão no lugar certo.
Para fazer isso, você pode usar nested loops, tal como fez
no sorteio e no init.
Há um par de maneiras de verificar e validar se o conselho é
correta e uma vencedora formação, no entanto.
Se você vai da esquerda para a direita, começando a partir da linha de cima para baixo, em seguida, cada
número deve ser maior que o anterior.
Tenha cuidado com o que você tem valor escolheu para o seu azulejo branco embora.
>> Ou você pode usar uma variável de contador para assegurar que cada valor é no lugar, caso
você venha com algum tipo de fórmula para representar isso.
Então divirta-se experimentando com a matemática.
Uma vez que você chegar a uma maneira, o retorno É verdade, uma vez que o usuário ganhou o jogo.
Mas se algum valor estiver incorreto, o retorno False, o usuário tem que continuar se movendo
porque não ganhou o jogo.
Depois de implementar esta verificação e, junto com initialize, desenhar e mover-se,
você já terminou o jogo dos Quinze.
Parabéns e se divertir jogando.
Meu nome é Zamyla e este é CS50.