Red de conocimiento informático - Consumibles informáticos - ¿Problema con la imagen de la tortuga? Algoritmo, código fuente del programa.

¿Problema con la imagen de la tortuga? Algoritmo, código fuente del programa.

El siguiente programa puede hacer que la tortuga gire en cualquier ángulo. Lo usé para dibujar una estrella de cinco puntas y mi nombre.

El input para dibujar una estrella de cinco puntas es:

5,4

4,90

5,19

4,180

2

5,38

3,144

5,38

3,144

5,38

3.144

5,38

3.144

5,38

1

6

9

La entrada para dibujar mi nombre es:

1

5,10

4,90

5,19

2

4.180

5,18

4,180

5,9

4,90

5,10

3,90

5,8

3.180

5,16

3.180

5,8

4,90

5,10

3,90

5,9

3.180

5, 18

1

5,2

4,90

5,20

2

3,135

5,4

1

3,45

5,4

2

3.135

5,4

1

4.135

5,16

2

4,165

5,10

3,180

5,10

1

3.165

5,20

3,90

5,10

3.135

5,1

2

5,6

3.180

5,3

3,45

5,9

3.180

5,5

3,90

5,3

3.180

5,8

3,90

5,6

3.180

5,12

3.180

5,10

1

4,90

5,3

2

4,90

5,8

3,90

5,9

3,90

5,8

3,90

5,9

6

9

El código fuente es el siguiente:

#include

#include

#include

#include

const int left_bound = -19;

const int right_bound = 20;

const int up_bound = -19;

const int down_bound = 20;

bool sea[abajo_ascendente - ascendente + 1][derecha - izquierda + 1] ;

bool pen_down;

fila flotante, col;

drow flotante = -1, dcol = 0;

drow flotante = -1, dcol = 0;

drow flotante = -1, dcol = 0;

p>

void print_sea()

{

for (int i = up_bound; i <= down_bound; i++)

{

for (int j = left_bound; j <= right_bound; j++)

{

printf("%c ", ((sea[i-up_bound][j- left_bound])?'*':' '));

}

printf("\n");

}

}

void up_pen()

{

pen_down = 0;

}

void down_pen( )

{

pen_down = 1;

if (pen_down && up_bound - 0.4 <= fila && fila <= down_bound + 0.4 && left_bound - 0.4 <= col && col <= límite_derecha + 0.4)

{

mar[(int)(fila - límite_arriba + 0.5)][(int)(col - límite_izquierda + 0.5)] = verdadero;

}

}

void turn_left(int deg)

{

float pi = 3.1415926 ;

float alpha = deg*pi/180;

float drow_new = -sin(alpha)*dcol + cos(alpha)*drow;

float dcol_new = sin(alpha)*drow + cos(alpha)*dcol;

drow = drow_new;

dcol = dcol_new;

}

void turn_right(int deg)

{

turn_left(-deg);

}

void forward_n(int n )

{

for (int i = 0; i < n; i++)

{

fila += drow;

col += dcol;

if (pen_down && up_bound - 0.4 <= fila && fila <= down_bound + 0.4 && left_b

ound - 0.4 <= col && col <= límite_derecha + 0.4)

{

mar[(int)(fila - límite_arriba + 0.5)][(int)(col - límite_izquierda + 0,5)] = verdadero;

}

}

}

int main()

{

for (;;)

{

int cmd = 9;

scanf(" %d", &cmd);

cambiar (cmd)

{

caso 1:

up_pen();

romper;

p>

caso 2:

down_pen();

descanso;

caso 3:

cmd = 90;

scanf(", %d", &cmd);

turn_right(cmd);

romper;

caso 4:

cmd = 90;

scanf(", %d", &cmd);

turn_left(cmd);

break;

caso 5:

cmd = 0;

scanf(", %d", &cmd);

forward_n (cmd);

descanso;

caso 6:

print_sea();

descanso;

caso 9:

devuelve 0;

predeterminado:

devuelve 1;

}

}

devuelve 0;

}