Движущийся объект, переопределяющий фон в Turbo C

Я кодирую в Turbo C. Я нарисовал баскетбольную площадку и хочу переместить круг на площадке, и когда я это делаю, она перезаписывает и уничтожает площадку. Как я могу перемещать круг на корте и по-прежнему видеть корт, не теряя его?

#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>

void Init()
{
int gd=DETECT , gm , ErrorCode;
initgraph(&gd , &gm , "c:\\TURBOC3\\BGI");
ErrorCode=graphresult();
if(ErrorCode != grOk) {
printf("Graph Error: %s" , grapherrormsg(ErrorCode));
getch();
exit(1);
}
}

void main()
{
int i;
Init();

rectangle(1,1,460,478); // drowing base lines
rectangle(2,2,459,477); // drowing base lines
line(3,239,458,239); // drowing half court line
line(3,238,458,238); // drowing half court line
circle(227,238,35); // drowing midile circle
circle(227,238,34); // drowing midile circle
circle(227,9,5); // drowing rim 1
circle(227,470,5); // drowing rim 2
line(205,476,249,476); // drowing basket board 1
line(205,475,249,475); // drowing basket board 1
line(205,3,249,3); // drowing basket 2
line(205,4,249,4); // drowing basket 2
rectangle(180,1,275,70); // drowing paint 1

rectangle(180,408,275,477); // drowing paint 2

line(177,10,180,10); // drowing paint line B1
line(177,20,180,20); // drowing paint line B1
line(177,30,180,30); // drowing paint line B1
line(177,40,180,40); // drowing paint line B1
line(177,50,180,50); // drowing paint line B1
line(275,10,278,10); // drowing paint line B1
line(275,20,278,20); // drowing paint line B1
line(275,30,278,30); // drowing paint line B1
line(275,40,278,40); // drowing paint line B1
line(275,50,278,50); // drowing paint line B1

line(177,430,180,430); // drowing paint line B2
line(177,440,180,440); // drowing paint line B2
line(177,450,180,450); // drowing paint line B2
line(177,460,180,460); // drowing paint line B2
line(177,470,180,470); // drowing paint line B2
line(275,430,278,430); // drowing paint line B2
line(275,440,278,440); // drowing paint line B2
line(275,450,278,450); // drowing paint line B2
line(275,460,278,460); // drowing paint line B2
line(275,470,278,470); // drowing paint line B2

arc(227,70,180,360,48); // drowing arc B1
arc(227,1,180,360,140); // drowing 3 point line B1
arc(227,410,0,180,48); // drowing arc B2
arc(227,477,0,180,140); // drowing 3 point line B2
line(500,1,500,500); // drowing chares for fans
line(535,1,535,530); // drowing chares for fans
line(570,1,570,560); // drowing chares for fans
line(605,1,605,590); // drowing chares for fans

for(i=0; i<500; i+=12) // for loop drowing fans
{
circle(515 , 5+i , 2);
line(507,5+i,513,5+i);
line(510,4+i,513,1+i);
line(510,4+i,513,9+i);
line(506,4+i,504,1+i);
line(506,4+i,504,9+i);
circle(550 , 5+i , 2);
line(542,5+i,548,5+i);
line(545,4+i,548,1+i);
line(545,4+i,548,9+i);
line(541,4+i,539,1+i);
line(541,4+i,539,9+i);
circle(585 , 5+i , 2);
line(577,5+i,583,5+i);
line(580,4+i,583,1+i);
line(580,4+i,583,9+i);
line(576,4+i,574,1+i);
line(576,4+i,574,9+i);
circle(620 , 5+i , 2);
line(612,5+i,618,5+i);
line(615,4+i,618,1+i);
line(615,4+i,618,9+i);
line(611,4+i,609,1+i);
line(611,4+i,609,9+i);
}

 for(i=0; i<250; i++)
 {
    setcolor(WHITE);
    circle(50+i,50,10);
    delay(10);
    setcolor(BLACK);
    circle(50+i,50,10);
    }   

getch();
closegraph();
}

person shiran    schedule 21.04.2016    source источник


Ответы (1)


В системе, которую вы используете, нет спрайтов или других независимых объектов, движущихся над фоном, поэтому вам приходится перерисовывать всю сцену в каждом кадре.

person Some programmer dude    schedule 21.04.2016