
|
This is the first descent code I wrote when I began to make programs, it was in C++
Is about an algorithm to arrangle ships in a classic battleship game, first funcion is to check if a ship can be placed at x;y second is for placing the ship and 3th was for placing all the ships. I was so amazed that the code worked that I felt a joy I only felt few times since then.
How about you
bool TGame::Free(int x,int y,int size,int pos,int board )
{
int ship[7];
int side1[7];
int side2[7];
bool answer=true;
if(aBoard[board]->GetInfo(x,y)!=0)
{
return answer=false;
}
if (pos==1)
{
for(int i=0;i<size+2;i++)
{ship[i]=aBoard[board]->GetInfo(x-1+i,y);
side1[i]=aBoard[board]->GetInfo(x-1+i,y-1);
side2[i]=aBoard[board]->GetInfo(x-1+i,y+1);
}
}
else
{ for(int i=0;i<size+2;i++)
{ship[i]=aBoard[board]->GetInfo(x,y-1+i);
side1[i]=aBoard[board]->GetInfo(x-1,y-1+i);
side2[i]=aBoard[board]->GetInfo(x+1,y-1+i);
}
}
if (x==0 && pos==1)
{ship[0]=0;
side1[0]=0;
side2[0]=0;
}
for (int i=0;i<size+2;i++)
{if (ship[i]!= 0)answer=false;
if (side1[i]!= 0)answer=false;
if (side2[i]!= 0)answer=false;
}
return answer;
}
void TGame:: RandomShip(int size,int type,int board,int ship)
{
int pos=random(2);
randomize();
int x,y;
bool answer=false; ;
if (pos==1)
{
while (answer==false)
{
x=random(11)-size;
while(x<0)
{x=random(11)-size;
}
y=random(15);
answer=Free(x,y,size,pos,board);
}
for(int i=0;i<size;i++)
{aBoard[board]->SetInfo(x+i,y,type);
}
}
else
{
while (answer==false)
{
x=random(10);
y=random(16)-size;
while(y<0)
{y=random(16)-size;
}
answer=Free(x,y,size,pos,board);
}
for(int i=0;i<size;i++)
{aBoard[board]->SetInfo(x,y+i,type);
}
}
if(board==0)
{
int ax=Transform(x);
int ay=Transform(y);
aPosXY[ship].x=ax;
aPosXY[ship].y=ay;
aPosXY[ship].pos=pos;
}
}
void TGame::RandomAllocation(int board)
{
RandomShip(5,6,board,0);
RandomShip(4,5,board,1);
RandomShip(3,4,board,2);
RandomShip(3,3,board,3);
RandomShip(2,2,board,4);
RandomShip(2,1,board,5);
}
|
|
|
|