Gráficos de tartaruga. A linguagem Logo, que é particularmente popular entre os usuários de computadores pessoais, tornou famoso o conceito de gráficos de tartaruga. Imagine uma tartaruga mecânica que caminhe pela sala sob o controle de um programa em C. A tartaruga segura uma caneta em uma de duas posições, para cima ou para baixo. Quando a caneta está para baixo, a tartaruga traça as formas enquanto se movimenta; quando a caneta está para cima, a tartaruga se movimenta livremente, sem escrever nada. Neste problema, você simulará a operação da tartaruga e também criará um bloco de rascunho computadorizado. Use um array de 50 por 50 floor que seja inicializado em zeros. Leia comandos de um array em que eles estejam contidos. Registre a posição atual da tartaruga o tempo todo, e se a caneta está para cima ou para baixo. Suponha que a tartaruga sempre comece na posição 0,0 do piso com sua caneta para cima. O conjunto de comandos da tartaruga que seu programa deverá processar aparece na Figura 6.24. Suponha que a tartaruga esteja em algum ponto próximo do centro do piso. O ‘programa’ a seguir desenharia e imprimiria um quadrado de 12 por 12:

2

5.12

3

5.12

3

5.12

3

5.12

1

6

9

Enquanto a tartaruga se mover com a caneta para baixo, defina os elementos apropriados do array floor como 1. Quando o comando 6 (imprimir) for dado, onde houver um 1 no array, mostre um asterisco ou algum outro caractere à sua escolha. Sempre que houver um zero,

mostre um espaço em branco. Escreva um programa que implemente as capacidades dos gráficos de tartaruga discutidas aqui. Escreva vários programas de gráficos de tartaruga para desenhar formas interessantes. Acrescente outros comandos para aumentar o poder de sua linguagem de gráficos de tartaruga.

Passo 1

Beleza pessoal, hoje iremos resolver essa questão extensa de C então é bom todos estarem bem atentos e com o seu compilador aberto. Vamos nessa!!!

O nosso código terá a seguinte ideia:

Primeiramente, faremos um array floor de 50\text{-by-}5050-by-50. Em seguida, solicitaremos a entrada do usuário, dependendo do comando executaremos a função apropriada.

Para pen down e pen up, manteremos uma única variável global penStatus.

Quando a escolha do usuário for 11, chamaremos penUp, que definirá penStatus como 1. Quando a escolha do usuário for 22, chamaremos penDown, que definirá penStatus como 00.

Passo 2

Para virar à esquerda e à direita, usaremos a variável de direção. A variável de direção terá 44 valores. Os valores são 0, 1, 2, 30,1,2,3. Cada um deles representará uma direção.

Os valores e suas direções: 00 - cima, 11 - direita, 22 - baixo, 33 - esquerda.

Representado visualmente:

Observe que ao adicionar um na direção ele vira para a direita e ao subtrair um a direção vira para a esquerda.

Quando a escolha do usuário for 33, chamaremos turnRight, que adicionará um à direção. Mas, e se o valor da direção for 33 e adicionarmos um a ele? direção não pode ter um valor de 44, pois não há outra direção além de cima, baixo, esquerda e direita na qual a tartaruga possa se mover.

Se a direção for 33, que representa a tartaruga indo para a esquerda, se ela virar para a direita, para que lado ela deve ir? Bem, deve subir. Portanto, ao adicionar um à direção, precisamos também usar direction  %   4direction % 4 para redefinir o valor de volta para 00 se chegarmos a 44.

O código relacionado:

Passo 3

Da mesma forma, ao virar à esquerda, subtrairemos um, mas quando a direção for 00, ele se tornará -1−1. Então, o que devemos fazer quando a direção se torna -1−1? Bem, se estamos subindo (o valor da direção é 00) e viramos à esquerda, devemos ir à esquerda, que é representada por 33. Então, quando a direção se torna -1−1, precisamos redefini-la para 33.

O código relacionado:

Passo 5

5 de 9

Agora, quando o usuário se move, a entrada é por exemplo: 5,125,12. Não precisamos do ',' então usamos getchar() para removê-lo do buffer de entrada.

Em seguida, verificamos o valor para o número de movimentos.

Ao mover para evitar o uso de muitas instruções if, usaremos 22 arrays e 22 variáveis:

A primeira matriz upOrDown representa quantos espaços vamos mover para cima ou para baixo para o valor atual da variável de direção.

As variáveis ​​xPos e yPos representam as coordenadas xx e yy da tartaruga na grade.

Por exemplo, se a direção for 00, isso significa que a tartaruga precisa subir. Vamos acessar upOrDown[0][0], que será -1−1. Então, adicionaremos -1−1 à variável yPos e a tartaruga subirá.

Se a direção for 11, a tartaruga precisa se mover para a direita. Vamos acessar upOrDown[1][1] que será 00. Assim, a tartaruga não irá se mover para cima ou para baixo.

Se a direção for 22, a tartaruga precisa se mover para baixo. Vamos acessar upOrDown[2][2] que será 11. Então, adicionaremos 11 à variável yPos e a tartaruga se moverá para baixo.

Se a direção for 33, a tartaruga precisa se mover para a esquerda. Vamos acessar upOrDown[3][3] que será 00. Assim, a tartaruga não irá se mover para cima ou para baixo.

A segunda matriz leftOrRight representa quantos espaços vamos mover para a esquerda ou direita para o valor atual da variável de direção.

direção 00, subindo, leftOrRight[0] = 0[0]=0, sem movimento para esquerda ou direita.

direção 11, indo para a direita, leftOrRight[1] = 1[1]=1, mova para a direita.

direção 22, descendo, leftOrRight[2] = 0[2]=0, sem movimento para esquerda ou direita.

direção 33, indo para a esquerda, leftOrRight[3] = -1[3]=−1, mova para a esquerda.

Passo 4

Temos a função move:

Finalmente, se a escolha do usuário for 66, imprimimos o array, que é uma questão simples. Se o valor do elemento atual for 11, imprima um '*', caso contrário, imprima ' '.

A função de impressão:

FINALMENTE O NOSSO CODIGO COMPLETO É:

Resposta

Vê o desenvolvimento!!!