Code:
//jt foster
//2
//BATTLESHIP
//(expect some neat ascii art when Im further along)
#include <iostream.h>
#include <string.h>
#include <windows.h>
#include <stdlib.h> //for rand
#include <stdio.h> //for printf
#include <time.h> //for time
void showplayerscreen();
void shipplace();
void computerplace();
void computerchoice(int size1, int left1, int up1, int char11);
void compscreen();
void placechoice(int size, int left, int up, int char1);
char shipname[10], compname[10];
int x,intcolumn, introw,intup,intleft,compcolumn, comprow,compup,compleft;
char playerboard [10][10]=
{
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
};
char hiddencomp [10][10]=
{
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
};
char showncomp [10][10]=
{
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
{46,46,46,46,46,46,46,46,46,46},
};
/*
this is just random random number stuff
srand(time(NULL));
printf("A random number from 0 to 99: %d", rand() % 100);
return 0;
int rand_mid(int low, int high)
{
return low+rand()%(high-low+1);
}
*/
main()
{
HANDLE hStdout;
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
cout<<"Loading"<<endl;
Sleep(1000);
system("CLS");
cout<<"Loading."<<endl;
Sleep(1000);
system("CLS");
cout<<"Loading.."<<endl;
Sleep(1000);
system("CLS");
cout<<"Loading..."<<endl;
Sleep(1000);
system("CLS");
//this neat loading screen ©2001 JTech Enterprises.
SetConsoleTextAttribute(hStdout, FOREGROUND_BLUE|BACKGROUND_RED);
cout<<"Welcome to BATTLESHIP..."<<endl;
SetConsoleTextAttribute(hStdout, FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
// showplayerscreen();
// compscreen();
// shipplace();
computerplace();
compscreen();
return 0;
}
void compscreen()
{
comprow=0;
compcolumn=0;
cout << "" << endl;
cout << " Computer's Board (debug)" << endl;
cout << "======================" << endl;
cout << " |0|1|2|3|4|5|6|7|8|9|" ;
cout<<'\n';
cout << comprow << "|";
do
{
if(comprow == 9 && compcolumn == 10)
{break;}
if(compcolumn > 9 && comprow < 9)
{
cout << "|"<< endl;
comprow = comprow + 1;
cout << (comprow) << "|";
compcolumn = 0;
}
if(comprow < 10)
{
if(compcolumn < 9)
{
cout << hiddencomp[comprow] [compcolumn] << " ";
}
if(compcolumn > 8)
{
cout << hiddencomp[comprow] [compcolumn];
}
}
compcolumn = compcolumn + 1;
}
while(comprow < 10);
comprow = 0;
compcolumn = 0;
cout << "|" << endl;
cout << "======================" << endl;
cout << "" << endl;
}
void computerplace()
{
srand(time(NULL));
for (x=5;x>=2;x--)
{
switch(x)
{
case 5:
strcpy(compname,"Carrier");
break;
case 4:
strcpy(compname,"Battleship");
break;
case 3:
strcpy(compname,"Kruiser");
break;
case 2:
strcpy(compname,"Destroyer");
break;
}
do
{
compleft=rand()%(10);
compup=rand()%(10);
}
while((hiddencomp[compleft][compup]!=46));
hiddencomp[compleft][compup]=int(compname[0]);
computerchoice(x,compleft,compup, (int(compname[0])));
}
do
{
compleft=rand()%(10);
compup=rand()%(10);
}
while((hiddencomp[compleft][compup]!=46));
hiddencomp[compleft][compup]=83;
computerchoice(3,compleft,compup, 83);
}
void computerchoice(int size1, int left1, int up1, int char11)
{
srand(time(NULL));
int choice,loop;
choice=1+rand()%(4);
switch (choice)
{
case 1:
for(loop=1;loop<size1;loop++)
{
if(hiddencomp[left1-loop][up1]!=46 || int(left1-(size1-1))<(0))
{
hiddencomp[left1][up1]=46;
x=x+1;
break;
}
if(int(left1-(size1-1)) >= (0) && x==size1)
{
for(loop=1;loop<size1;loop++)
{hiddencomp[left1-loop][up1]=char11;}
compscreen();
}
}
break;
case 2:
for(loop=1;loop<size1;loop++)
{
if(hiddencomp[left1+loop][up1]!=46 || int(left1-(size1-1))>(9))
{
hiddencomp[left1][up1]=46;
x=x+1;
break;
}
if(int(left1-(size1-1)) <= (9) && x==size1)
{
for(loop=1;loop<size1;loop++)
{hiddencomp[left1+loop][up1]=char11;}
compscreen();
}
}
break;
case 3:
for(loop=1;loop<size1;loop++)
{
if(hiddencomp[left1-loop][up1]!=46 || int(left1-(size1-1))>(9))
{
hiddencomp[left1][up1]=46;
x=x+1;
break;
}
if(int(up1+(size1-1)) <= (9) && x==size1)
{
for(loop=1;loop<size1;loop++)
{hiddencomp[left1][up1+ loop]=char11;}
compscreen();
}
}
break;
case 4:
for(loop=1;loop<size1;loop++)
{
if(hiddencomp[left1-loop][up1]!=46 || int(up1-(size1-1))<(0))
{
hiddencomp[left1][up1]=46;
x=x+1;
break;
}
if(int(up1-(size1-1)) >= (0) && x==size1)
{
for(loop=1;loop<size1;loop++)
{hiddencomp[left1][up1-loop]=char11;}
compscreen();
}
}
break;
}
}
void showplayerscreen()
{
introw=0;
intcolumn=0;
cout << "" << endl;
cout << " Player's Board" << endl;
cout << "======================" << endl;
cout << " |0|1|2|3|4|5|6|7|8|9|" ;
cout<<'\n';
cout << introw << "|";
do
{
if(introw == 9 && intcolumn == 10)
{break;}
if(intcolumn > 9 && introw < 9)
{
cout << "|"<< endl;
introw = introw + 1;
cout << (introw) << "|";
intcolumn = 0;
}
if(introw < 10)
{
if(intcolumn < 9)
{
cout << playerboard[introw] [intcolumn] << " ";
}
if(intcolumn > 8)
{
cout << playerboard[introw] [intcolumn]<<flush;
}
}
intcolumn = intcolumn + 1;
}
while(introw < 10);
introw = 0;
intcolumn = 0;
cout << "|" << endl;
cout << "======================" << endl;
cout << "" << endl;
}
void placechoice(int size,int left,int up,int char1)
{
int choice,loop;
cout<<"Do you want your ship to face: "<< '\n' << "1. UP 2.DOWN 3.RIGHT 4.LEFT"<<'\n';
cin>>choice;
switch (choice)
{
case 1:
for(loop=1;loop<size;loop++)
{
if(playerboard[left-loop][up]!=46 || int(left-(size-1))<(0))
{
playerboard[left][up]=46;
cout<<"Don't place ships illegally..."<<endl;
x=x+1;
break;
}
if(int(left-(size-1)) >= (0) && x==size)
{
for(loop=1;loop<size;loop++)
{playerboard[left-loop][up]=char1;}
showplayerscreen();
}
}
break;
case 2:
for(loop=1;loop<size;loop++)
{
if(playerboard[left+loop][up]!=46 || int(left-(size-1))>(9))
{
playerboard[left][up]=46;
cout<<"Don't place ships illegally..."<<endl;
x=x+1;
break;
}
if(int(left-(size-1)) <= (9) && x==size)
{
for(loop=1;loop<size;loop++)
{playerboard[left+loop][up]=char1;}
showplayerscreen();
}
}
break;
case 3:
for(loop=1;loop<size;loop++)
{
if(playerboard[left-loop][up]!=46 || int(left-(size-1))>(9))
{
playerboard[left][up]=46;
cout<<"Don't place ships illegally..."<<endl;
x=x+1;
break;
}
if(int(up+(size-1)) <= (9) && x==size)
{
for(loop=1;loop<size;loop++)
{playerboard[left][up+ loop]=char1;}
showplayerscreen();
}
}
break;
case 4:
for(loop=1;loop<size;loop++)
{
if(playerboard[left-loop][up]!=46 || int(up-(size-1))<(0))
{
playerboard[left][up]=46;
cout<<"Don't place ships illegally..."<<endl;
x=x+1;
break;
}
if(int(up-(size-1)) >= (0) && x==size)
{
for(loop=1;loop<size;loop++)
{playerboard[left][up-loop]=char1;}
showplayerscreen();
}
}
break;
}
}
void shipplace()
{
for (x=5;x>=2;x--)
{
switch(x)
{
case 5:
strcpy(shipname,"Carrier");
break;
case 4:
strcpy(shipname,"Battleship");
break;
case 3:
strcpy(shipname,"Kruiser");
break;
case 2:
strcpy(shipname,"Destroyer");
break;
}
do
{
cout<<"Plot one end of the "<<shipname<<"."<<'\n';
cout<<"Please put the left side coordinate, then the top..."<< '\n';
cin>>intleft;
cin>>intup;
}
while(intleft<0||intleft>9||intup<0||intup>9||(playerboard[intleft][intup]!=46));
playerboard[intleft][intup]=int(shipname[0]);
showplayerscreen();
placechoice(x,intleft,intup, (int(shipname[0])));
}
do
{
cout<<"Plot one end of the Submarine."<<'\n';
cout<<"Please put the left side coordinate, then the top..."<< '\n';
cin>>intleft;
cin>>intup;
}
while(intleft<0||intleft>9||intup<0||intup>9||(playerboard[intleft][intup]!=46));
playerboard[intleft][intup]=83;
showplayerscreen();
placechoice(3,intleft,intup, 83);
}
Now the calls for the majority of this code (specifically the user placement) are commented out so I dont have to deal with them when debugging the cpu placement...