Yes. That's it....
Subin Sebastian
College Of Engineering, Munnar
+91-944-6475-826
"Support Free Software"
--- On Tue, 10/27/09, Shino Jacob <[email protected]> wrote:
From: Shino Jacob <[email protected]>
Subject: [fsug-tvm] Re: Man In Rain...
To: [email protected]
Date: Tuesday, October 27, 2009, 3:22 PM
>>Subin
This was a good example of OOP(Object oriented programming).Although not
completely following OO paradigm.
you should have attached the source rather than typing every thing here.
--~--~---------~--~----~------------~-------~--~----~
"Freedom is the only law".
"Freedom Unplugged"
http://www.ilug-tvm.org
You received this message because you are subscribed to the Google
Groups "ilug-tvm" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For details visit the website: www.ilug-tvm.org or the google group page:
http://groups.google.com/group/ilug-tvm?hl=en
-~----------~----~----~----~------~----~------~--~---
#include<iostream.h>
#include<graphics.h>
#include<conio.h>
#include<dos.h>
#include<stdlib.h>
//Subroutine for generating oscillating values between 0 and 3
int sineGen(int cntr)
{
int k=cntr%7;
switch(k)
{
case 0:
case 6:
return 0;
case 1:
case 5:
return 1;
case 2:
case 4:
return 2;
case 3:
return 3;
}
}
//A cartition coordinate
struct Mpoints
{
int x;
int y;
};
//Draws and manages the man
class Man
{
Mpoints p[14];
int a,b;
int step0[14][2];
int step1[14][2];
int step2[14][2];
int step3[14][2];
int stepcntr;
public:
Man(int da,int db)
{
a=da; b=db;
step0[0][0]=0; step0[0][1]=0;
step0[1][0]=0; step0[1][1]=15;
step0[2][0]=0; step0[2][1]=30;
step0[3][0]=-15; step0[3][1]=55;
step0[4][0]=15; step0[4][1]=80;
step0[5][0]=-15; step0[5][1]=55;
step0[6][0]=15; step0[6][1]=80;
step0[7][0]=0; step0[7][1]=80;
step0[8][0]=15; step0[8][1]=115;
step0[9][0]=15; step0[9][1]=115;
step0[10][0]=-15; step0[10][1]=150;
step0[11][0]=-15; step0[11][1]=150;
step0[12][0]=0; step0[12][1]=150;
step0[13][0]=0; step0[13][1]=150;
step1[0][0]=0; step1[0][1]=0;
step1[1][0]=0; step1[1][1]=15;
step1[2][0]=0; step1[2][1]=30;
step1[3][0]=-10; step1[3][1]=57;
step1[4][0]=17; step1[4][1]=73;
step1[5][0]=-20; step1[5][1]=53;
step1[6][0]=10; step1[6][1]=76;
step1[7][0]=0; step1[7][1]=80;
step1[8][0]=10; step1[8][1]=115;
step1[9][0]=25; step1[9][1]=110;
step1[10][0]=-25; step1[10][1]=145;
step1[11][0]=-5; step1[11][1]=145;
step1[12][0]=-10; step1[12][1]=150;
step1[13][0]=10; step1[13][1]=148;
step2[0][0]=0; step2[0][1]=0;
step2[1][0]=0; step2[1][1]=15;
step2[2][0]=0; step2[2][1]=30;
step2[3][0]=5; step2[3][1]=55;
step2[4][0]=30; step2[4][1]=60;
step2[5][0]=-30; step2[5][1]=50;
step2[6][0]=-10; step2[6][1]=70;
step2[7][0]=0; step2[7][1]=80;
step2[8][0]=-2; step2[8][1]=115;
step2[9][0]=25; step2[9][1]=110;
step2[10][0]=-35; step2[10][1]=135;
step2[11][0]=-5; step2[11][1]=145;
step2[12][0]=-25; step2[12][1]=145;
step2[13][0]=10; step2[13][1]=148;
step3[0][0]=0; step3[0][1]=0;
step3[1][0]=0; step3[1][1]=15;
step3[2][0]=0; step3[2][1]=30;
step3[3][0]=10; step3[3][1]=55;
step3[4][0]=40; step3[4][1]=40;
step3[5][0]=-36; step3[5][1]=35;
step3[6][0]=-30; step3[6][1]=67;
step3[7][0]=0; step3[7][1]=80;
step3[8][0]=-10; step3[8][1]=110;
step3[9][0]=35; step3[9][1]=105;
step3[10][0]=-45; step3[10][1]=125;
step3[11][0]=15; step3[11][1]=135;
step3[12][0]=-38; step3[12][1]=135;
step3[13][0]=25; step3[13][1]=140;
stepcntr=1;
}
forMan(int at,int push)
{
if(a>=640)
a=-100;
else
a+=push;
int i=0;
switch(at)
{
case 0:
for(i=0;i<14;i++)
{
p[i].x=a+step0[i][0];
p[i].y=b+step0[i][1];
}
break;
case 1:
for(i=0;i<14;i++)
{
p[i].x=a+step1[i][0];
p[i].y=b+step1[i][1];
}
break;
case 2:
for(i=0;i<14;i++)
{
p[i].x=a+step2[i][0];
p[i].y=b+step2[i][1];
}
break;
case 3:
for(i=0;i<14;i++)
{
p[i].x=a+step3[i][0];
p[i].y=b+step3[i][1];
}
break;
default:break;
}
}
drawMan()
{
setcolor(15);
circle(p[0].x,p[0].y,15);
line(p[1].x,p[1].y,p[2].x,p[2].y);
line(p[2].x,p[2].y,p[3].x,p[3].y);
line(p[2].x,p[2].y,p[5].x,p[5].y);
line(p[2].x,p[2].y,p[7].x,p[7].y);
line(p[3].x,p[3].y,p[4].x,p[4].y);
line(p[5].x,p[5].y,p[6].x,p[6].y);
line(p[7].x,p[7].y,p[8].x,p[8].y);
line(p[7].x,p[7].y,p[9].x,p[9].y);
line(p[8].x,p[8].y,p[10].x,p[10].y);
line(p[9].x,p[9].y,p[11].x,p[11].y);
line(p[10].x,p[10].y,p[12].x,p[12].y);
line(p[11].x,p[11].y,p[13].x,p[13].y);
return 0;
}
eraseMan()
{
setcolor(0);
circle(p[0].x,p[0].y,15);
line(p[1].x,p[1].y,p[2].x,p[2].y);
line(p[2].x,p[2].y,p[3].x,p[3].y);
line(p[2].x,p[2].y,p[5].x,p[5].y);
line(p[2].x,p[2].y,p[7].x,p[7].y);
line(p[3].x,p[3].y,p[4].x,p[4].y);
line(p[5].x,p[5].y,p[6].x,p[6].y);
line(p[7].x,p[7].y,p[8].x,p[8].y);
line(p[7].x,p[7].y,p[9].x,p[9].y);
line(p[8].x,p[8].y,p[10].x,p[10].y);
line(p[9].x,p[9].y,p[11].x,p[11].y);
line(p[10].x,p[10].y,p[12].x,p[12].y);
line(p[11].x,p[11].y,p[13].x,p[13].y);
return 0;
}
};
//Draws and manages a RainDrop...!
class RainDrop
{
int x,y;
public:
RainDrop()
{
x=random(639);y=random(30);
}
drawDrop()
{
setcolor(15);
putpixel(x,y,15);
putpixel(x+1,y-1,7);
putpixel(x+2,y-2,8);
return 0;
}
eraseDrop()
{
putpixel(x,y,getbkcolor());
putpixel(x+1,y-1,getbkcolor());
putpixel(x+2,y-2,getbkcolor());
return 0;
}
stepDrop(int step)
{
eraseDrop();
if(x<=0) x=random(639);
else x-=step;
if(y>=400) y=0;
else y+=step;
drawDrop();
return 0;
}
};
//Add one more class that can draw & manage an umbrella...
int main()
{
int a=DETECT,b;
initgraph(&a,&b,"..\\bgi");
RainDrop Rain[1024];
Man M(-300,300);
int i=0,k=0;
getch();
do
{
Rain[i++].stepDrop(random(i%64));
i=i>=1023?0:i+1;
if(i%1000==0)
{
M.forMan(sineGen(k++),10);
M.drawMan();
for(int tt=0;tt<1000;tt++)
{ Rain[i++].stepDrop(random(i%64));
i=i>=1023?0:i+1;
}
M.eraseMan();
}
}
while(!kbhit());
return 0;
}
//TODO
//Do anything that seems to be good.
//Make a SDL diff of the program