Problem s grafiki?
11 отговора
449 прегледа
Problem s grafiki?
Imam da pravq na Borland C++ programa s1s slednoto uslovie:da se napravi bubole4ka(po izbor),koqto da se dviji xaoti4no i da reku6ira v stenite na ekrana.Problem1t mi e v tova,4e ne spira do kraq na ekrana.Izpolzvam funkciqta getmaxx i getmaxy.Molq pomognete mi!Mnogo e spe6no!
Имаш дебъгер
Слагаш си едно условие и спираш програмата там където според теб трябва да спре...
И гледаш какво ти връщат getmax функциите.
И гледаш какво ти връщат getmax функциите.
Re: Имаш дебъгер
uslovieto koeto s1m slojila e while((p+10)<=getmaxx())||((p+10)<=getmaxy())) i ne 6te da spre!Kak da go promenq?
Re: скица на решението
void drawbug(int x,int y)
{
//...
//викаш функция/ции рисуващи насекомо
}
int getscreenwidth()
{
//викаш функция връщаща ширината на екрана в пиксели
return 640;
}
int getscreenheight()
{
//викаш функция връщаща височината на екрана в пиксели
return 480;
}
int rand(int min,int max)
{
//викаш функция връщаща произволна стойност в границите включително
//...
}
void main()
{
int _key = 0;
int _x = 0,_y = 0;
int _prevx = 0,_prevy = 0;
//влизаш в безкраен цикъл
for(;;)
{
//чакаш за натиснат клавиш
while(!_kbhit())
{
//запазваш предните стойности на насекомото
_prevx = _x;
_prevy = _y;
//търсиш нови
_x += rand(0,1) ? -1 : +1;
_y += rand(0,1) ? -1 : +1;
//ако новите не те задоволяват...взимаш старите
if(_x < 0 || _x > getscreenwidth())
_x = _prevx;
if(_y < 0 || _y > getscreenheight())
_y = _prevy;
//рисуваш насекомото
drawbug(_x, _y);
}
//четеш клавиша
_key = _getch();
//ако е esc излизаш от безкрайния цикъл и програмата завършва
if(_key == '\033')//esc
break;
}
}
{
//...
//викаш функция/ции рисуващи насекомо
}
int getscreenwidth()
{
//викаш функция връщаща ширината на екрана в пиксели
return 640;
}
int getscreenheight()
{
//викаш функция връщаща височината на екрана в пиксели
return 480;
}
int rand(int min,int max)
{
//викаш функция връщаща произволна стойност в границите включително
//...
}
void main()
{
int _key = 0;
int _x = 0,_y = 0;
int _prevx = 0,_prevy = 0;
//влизаш в безкраен цикъл
for(;;)
{
//чакаш за натиснат клавиш
while(!_kbhit())
{
//запазваш предните стойности на насекомото
_prevx = _x;
_prevy = _y;
//търсиш нови
_x += rand(0,1) ? -1 : +1;
_y += rand(0,1) ? -1 : +1;
//ако новите не те задоволяват...взимаш старите
if(_x < 0 || _x > getscreenwidth())
_x = _prevx;
if(_y < 0 || _y > getscreenheight())
_y = _prevy;
//рисуваш насекомото
drawbug(_x, _y);
}
//четеш клавиша
_key = _getch();
//ако е esc излизаш от безкрайния цикъл и програмата завършва
if(_key == '\033')//esc
break;
}
}
Re: ако намериш кода полезен
Mnogo s1m ti blagodarna!Naistina namiram koda za polezen.O6te
vedn1j blagodarq!!!!!!!
vedn1j blagodarq!!!!!!!
Re: Имаш дебъгер
while(1)
{
if((p+10)<=getmaxx())
break;
if((p+10)<=getmaxy())
break;
....
}
{
if((p+10)<=getmaxx())
break;
if((p+10)<=getmaxy())
break;
....
}
Re: скица на решението
Така буболечката няма да се движе, а сащо ще се телепортира в различни точки от екрана.