Как сделать в консоли символ отскакивающий от стенок. Отскакивание от стенок любого элемента реализуется простым алгоритмом. В момент когда символ достигаеткрая окна, при условии что размеры окна нам известны, то коэффициент смещения меняет полярность. Становится положительным или отрицательным. И объект движится в другую сторону.
Пример №1.
#include <windows.h>
#include <iostream.h>
#include <conio.h>
int main(int argc, char* argv[])
{
int x,y,k1,k2;
randomize();
//textattr(15<<4);
k1=1;
k2=1;
x=y=2;
do
{
if (x<=1 || x>=77) k1 = -k1;
if (y<=1 || y>=25) k2 = -k2;
x+=k1;
y+=k2;
gotoxy(x,y);
cprintf("o");
gotoxy(x,1);
cprintf("-");
gotoxy(1,y);
cprintf("-");
gotoxy(1,1);
cprintf("X=%ld,Y=%ld\r",x,y);
Sleep(40);
clrscr();
}while(kbhit()==0);
}
Пример №2. (Со звуком)
#include <windows.h>
#include <iostream.h>
#include <conio.h>
int main(int argc, char* argv[])
{
int x,y,k1,k2;
randomize();
//textattr(15<<4);
k1=1;
k2=1;
x=y=2;
do
{
if (x<=1 || x>=77) k1 = -k1;
if (y<=1 || y>=25) k2 = -k2;
x+=k1;
y+=k2;
gotoxy(x,y);
cprintf("o");
gotoxy(x,1);
cprintf("-");
gotoxy(1,y);
cprintf("-");
gotoxy(1,1);
cprintf("X=%ld,Y=%ld\r",x,y);
Beep(x*200,1);
Beep(y*200,1);
Sleep(10);
clrscr();
}while(kbhit()==0);
}
Написать комментарий