Иллюстрированный самоучитель по С++ для начинающих

Решения (задачи 220-229)

Задача 229.

// Плывущий корабль
#include <graphics.h> Iinclude <stdlib.h> #include <stdio.h> #include <conio.h> #include <dos.h>
tdefine dx 5 // шаг сетки по X #define dy 5 // шаг сетки по Y
void ship(int x, int y, int color) // x, у – координаты
// базовой точки
setcolor(color); // корпус moveto(x,y); lineto(x,y-2*dy); lineto(x+10*dx,y-2*dy);
lineto(x+ll*dx,y-3*dy); lineto(x+17*dx,y-3*dy);
eto(x+14*dx,y);
lineto(x,у);
// надстройка
raoveto(x+3*dx,y-2*dy);
lineto(x+4*dx,y-3*dy);
lineto(x+4*dx,y-4*dy);
lineto(x+13*dx,y-4*dy);
lineto(x+13*dx,y-3*dy);
line(x+5*dx,y-3*dy,x+9*dx,y-3*dy);
// капитанский мостик
rectangle(x+8*dx,y-4*dy,x+ll*dx,y-5*dy);
// труба
rectangle(x+7*dx,y-4*dy,x+8*dx,y-7*dy);
// иллюминаторы
circle(x+12*dx,y-2*dy,dx/2);
circle(x+14*dx,y-2*dy,dx/2);
// мачта
line(x+10*dx,y-5*dy,x+10*dx, y-10*dy);
// оснастка
moveto(x+17*dx,y-3*dy);
lineto(x+10*dx,y-10*dy);
lineto(x,y-2*dy);
#define PATHTODRIVER "с: WborlandcWbgiW" void main(void)
int x,y; // координаты корабля (базовой точки)
int maxx; // коорд. крайней правой точки экрана
int gdriver = DETECT; // драйвер
int gmode; // режим
int errorcode; // код ошибки
initgraph(Sgdriver, Sgmode, PATHTODRIVER); errorcode = graphresult();
if (errorcode!= grOk) // ошибка инициализации
// графического режи 199
printf("Ошибка: %d\n", errorcode);
puts("Для завершения программы нажмите Enter''
getch();
return;
maxx = getmaxx();
x = -10; // корабль выплывает из-за правой
// границы экрана у = 100;
while (х < maxx) {
ship(x,у, GREEN); // нарисовать корабль
delay(20);
ship(х,у,BLACK); // стереть корабль
х += 5; }
setcolor(GREEN);
outtextxy(10.10,"Рейс завершен!");
outtextxy(10.24,"Нажмите Enter");
getch(); closegraph(); // выход из графического режима
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.