PDA

View Full Version : نوشتن محافظ صفحه نمایش در کنسول



metijoon
یک شنبه 14 خرداد 1391, 22:02 عصر
با سلام یه پروژه دارم به این شرح:
محافظ صفحه نمایش: در این برنامه چند شکل هندسی با رنگ ها و طرح های مختلف بصورت تصادفی بر روی صفحه نمایش حرکت می کنند . این اجسام شناور باید به محظ برخورد با لبه های صفحه و یا به همدیگر به عقب برگردند . حرکت این اجسام باید بصورت کاملا تصادفی باشد . این برنامه باید همانند برنامه های دیگر محافظ صفحه نمایش به صفحه کلید حساس بوده و به محض فشرده شدن یک کلید به پایان برسد.
من سورس ++C مشابهی رو پیدا کردم ولی الان میخوام تو سی شارپ بصورت شی گرا بنویسم. لطفا رهنمایی کنید.
کد ++C:

#include <graphics.h>
#include <conio.h>
#include<dos.h>
class ball
{
int r;
public:
int x,y,i,j;
ball()
{
i=1;j=1;
}
void getx(int m)
{
x=m;
}
void gety(int n)
{
y=n;
}
int color(int a) //color ball
{
return r=a;
}
void removeball();
void move();
void drawball();
};
void ball::removeball()
{
for(int l=1;l<=20;l++)
{
setcolor(0);
circle(x,y,l);
}
}
void ball::move()
{
if(x>609) i=-1;
if(x<21) i=1;
if(y>459) j=-1;
if(y<31) j=1;
x+=i*5;
y+=j*5;
}
void ball::drawball()
{
for(int k=1;k<=20;k++)
{
setcolor(r);
circle(x,y,k);
}
}
/*MAIN*/
void main()
{
int gdriver = DETECT, gmode;
initgraph(&gdriver,&gmode,"c:\\tc\\bgi"); /*INITIALIZE GRAPHICS*/
ball ob,ob1,ob2,ob3;
ob.getx(20);
ob.gety(30);
ob1.getx(450);
ob1.gety(350);
ob2.getx(200);
ob2.gety(53);
ob3.getx(130);
ob3.gety(150);
while(!kbhit())/*WHILE NO KEY IS PRESSED*/
{
ob.removeball();ob.move();ob.color(10);ob.drawball (); delay (10);
if((ob.x-ob1.x<31 && ob.x-ob1.x>-31)&&(ob.y-ob1.y<31 && ob.y-ob1.y>-31))
{ ob.i*=-1;ob.j*=-1;ob1.i*=-1;ob1.j*=-1;}
if((ob.x-ob2.x<31 && ob.x-ob2.x>-31)&&(ob.y-ob2.y<31 && ob.y-ob2.y>-31))
{ ob.i*=-1;ob.j*=-1;ob2.i*=-1;ob2.j*=-1;}
if((ob.x-ob3.x<31 && ob.x-ob3.x>-31)&&(ob.y-ob3.y<31 && ob.y-ob3.y>-31))
{ ob.i*=-1;ob.j*=-1;ob3.i*=-1;ob3.j*=-1;}
ob1.removeball();ob1.move();ob1.color(3);ob1.drawb all();
ob2.removeball();ob2.move();ob2.color(6);ob2.drawb all(); delay (5);
if((ob1.x-ob2.x<31 && ob1.x-ob2.x>-31)&&(ob1.y-ob2.y<31 && ob1.y-ob2.y>-31))
{ ob1.i*=-1;ob1.j*=-1;ob2.i*=-1;ob2.j*=-1;}
if((ob1.x-ob3.x<31 && ob1.x-ob3.x>-31)&&(ob1.y-ob3.y<31 && ob1.y-ob3.y>-31))
{ ob1.i*=-1;ob1.j*=-1;ob3.i*=-1;ob3.j*=-1;}
ob3.removeball();ob3.move();ob3.color(9);ob3.drawb all();
if((ob2.x-ob3.x<31 && ob2.x-ob3.x>-31)&&(ob2.y-ob3.y<31 && ob2.y-ob3.y>-31))
{ ob2.i*=-1;ob2.j*=-1;ob3.i*=-1;ob3.j*=-1;}
}
closegraph();/*EXIT FROM GRAPHICS MODE*/
}

Beginner2013
دوشنبه 15 خرداد 1391, 10:16 صبح
سلام
راستش من از تنبلی کدتونو نخوندم،اما به نظرم در انجمن C++‎ مطرح کنید بهتر باشه،چون اونقدری که C++‎ کارها C#‎ بلدن،C#‎ کارها C++‎ بلد نیستن.

metijoon
دوشنبه 15 خرداد 1391, 16:42 عصر
اگه یه نفر راهنمایی کنه که خیلی ممنون میشم

metijoon
چهارشنبه 17 خرداد 1391, 00:06 صبح
جالب بود . یعنی یه نفر اطلاعاتش بیشتر از من نبود که جواب بده