- #1
pajak
- 4
- 0
my friend had send to me a coding simulation of bugs life
but this program only can running in TC++ 3.0 or higher
how to modified it able to run in Codeblocks or Devc++...anyone can help me
program:
but this program only can running in TC++ 3.0 or higher
how to modified it able to run in Codeblocks or Devc++...anyone can help me
program:
Code:
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int a[20][20],p=0,q=0;
void step(int g,int h,int i,int &u,int &v);
class org
{
public :
int x,y,life;
};
class bug:public org
{
public:
void birth(int e,int f)
{
x=e;
y=f;
life=0;
a[e][f]=2;
p++;
}
void move();
void breed();
void death()
{
a[x][y]=0;
}
}bugs[400];
void bug::move()
{
int k=0,t1,t2,i;
life++;
for(i=0;i<4;i++)
{
step(x,y,i,t1,t2);
if(a[t1][t2]==0)
k++;
}
if(k>0)
{
if(k!=1)
k=(rand()%k+1);
for(i=0;i<4,k>0;i++)
{
step(x,y,i,t1,t2);
if(a[t1][t2]==0)
k--;
}
a[x][y]=0;
a[t1][t2]=2;
x=t1;
y=t2;
if(life>=3)
{
this->breed();
life=0;
}
}
}
void bug::breed()
{
int i,k=0,t1,t2;
for(i=0;i<4;i++)
{
step(x,y,i,t1,t2);
if(a[t1][t2]==0)
k++;
}
if(k!=1)
k=(rand()%k+1);
for(i=0;i<4,k>0;i++)
{
step(x,y,i,t1,t2);
if(a[t1][t2]==0)
k--;
}
bugs[p].birth(t1,t2);
}
class dood:public org
{
public:
int steps;
void birth(int e,int f)
{
x=e;
y=f;
life=3;
steps=0;
a[e][f]=1;
q++;
}
void move();
void breed();
void death()
{
a[x][y]=0;
}
}doodle[400];
void shiftb();
void shiftd();
void dood::move()
{
int k=0,t1,t2;
steps ++;
for(int i=0;i<4;i++)
{
step(x,y,i,t1,t2);
if(a[t1][t2]==2)
k++;
}
if(k==0)
life--;
else
{
if(k!=1)
k=(rand()%k+1);
for(i=0;i<4,k>0;i++)
{
step(x,y,i,t1,t2);
if(a[t1][t2]==2)
k--;
}
life=3;
for(int j=0;j<p;j++)
{
if((bugs[j].x==t1)&&(bugs[j].y==t2))
{ bugs[j].death();
shiftb();
}
}
a[this->x][this->y]=0;
a[t1][t2]=1;
this->x=t1;
this->y=t2;
}
if(steps>=8)
this->breed();
if(life<=0)
this->death();
}
void dood::breed()
{
int i,k=0,t1,t2;
for(i=0;i<4;i++)
{
step(x,y,i,t1,t2);
if(a[t1][t2]==0)
k++;
}
if(k>0)
{
if(k!=1)
k=(rand()%k+1);
for(i=0;i<4,k>0;i++)
{
step(x,y,i,t1,t2);
if(a[t1][t2]==0)
k--;
}
doodle[q].birth(t1,t2);
}
}
void display()
{
int i,j;
char c;
clrscr();
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
{
if(a[i][j]==0)
c='-';
if(a[i][j]==1)
c='x';
if(a[i][j]==2)
c='o';
cout<<c<<" ";
}
cout<<"\n";
}
}
void step(int g,int h,int i,int &u,int &v)
{
u=g;
v=h;
if(i==0)
u--;
if(i==1)
v++;
if(i==2)
u++;
if(i==3)
v--;
if(u<0||v<0||u>19||v>19)
{
u=g;
v=h;
}
}
void shiftb()
{ int j,k;
if(p!=1)
for( j=0;j<p;)
{
if(a[bugs[j].x][bugs[j].y]==0)
{
p--;
for(int k=j;k<p;k++)
bugs[k]=bugs[k+1];
}
else
j++;
}
if(p==1)
if(a[bugs[0].x][bugs[0].y]==0)
p--;
}
void shiftd()
{ int j,k;
if(q!=1)
for( j=0;j<q;)
{
if(a[doodle[j].x][doodle[j].y]==0)
{
q--;
for(int k=j;k<q;k++)
doodle[k]=doodle[k+1];
}
else
j++;
}
if(q==1)
if(a[doodle[0].x][doodle[0].y]==0)
q--;
}
void main()
{
clrscr();
int m,n,i,j,s,t;
char ch='y';
cout<<"enter how many doodles & bugs do u wany?"<<endl;
cin>>s>>t;
for(i=0;i<20;i++)
for(j=0;j<20;j++)
a[i][j]=0;
randomize();
for(i=0;i<s;i++)
{
do {
m=rand()%20;
n=rand()%20;
}while(a[m][n]!=0);
doodle[i].birth(m,n);
}
for(i=0;i<t;i++)
{
do{
m=rand()%20;
n=rand()%20;
}while(a[m][n]!=0);
bugs[i].birth(m,n);
}
display ();
ch=getch();
while(ch=='y'||ch=='Y')
{
for(i=0;i<q;i++)
doodle[i].move();
shiftd();
for(i=0;i<p;i++)
bugs[i].move();
display();
cout<<"do u want to go to next time step press y for yes";
ch=getche();
}
}