#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<ctype.h>
#include<ctype.h>
#define AIR "[CCCCC=>"
#define DES "[DDD=>"
#define SUB "[SS=>"
#define FRI "[F>"
#define SEED time(NULL)
void replace(char [], char []);
void play_battleship(void);
void update_data(char[],char[],int *,int *,int *,char[]);
void draw_game(char[],char[],int,int,int);
void init_game(char[],char[]);
void load_ships(char[],char[]);
void draw_board(char[]);
int check_move(char[]);
int main(){
printf("\n C Battleship...\n");
play_battleship();
return 0;
}
void play_battleship(void){
char board[390],mask[390],ships[8];
int maway=0,mleft=50,score=0;
init_game(board,mask);
draw_game(board,mask,maway,mleft,score);
}
void init_game(char board[],char mask[]){
int i,t,randomP;
for(t=0;t<390;t++){
board[t]='~';
}
load_ships(board,AIR);
load_ships(board,DES);
load_ships(board,SUB);
load_ships(board,FRI);
draw_board(board);
}
void draw_board(char board[]){
char alpha;
int t,yn,ya,x;
printf(" ");
for(alpha='A';alpha<='Z';alpha++){
printf("%c",alpha);
}
printf("\n");
for(yn=1;yn<=15;yn++){
if(yn>=10){
for(ya=65;ya<=70;ya++){
printf("%c|",ya);
for(x=0;x<26;x++)
printf("%c",board[x+yn*26]);
printf("|\n");
}
break;
}else{
printf("%d|",yn);
for(x=0;x<26;x++)
printf("%c",board[x+yn*26]);
printf("|\n");
}
}
}
void load_ships(char board[],char ships[]){
int position_x,position_y,place,i;
srand(SEED);
position_x=rand()%25;
position_y=rand()%14;
place=(position_y*26)+position_x;
replace(&board[place],ships);
}
void draw_game(char board[],char mask[],int maway,int mleft,int score){
char ya,alpha,input[3],check;
int t,x,yn;
printf(" ");
for(alpha='A';alpha<='Z';alpha++){
printf("%c",alpha);
}
printf("\n");
for(yn=1;yn<=15;yn++){
if(yn>=10){
for(ya=65;ya<=70;ya++){
printf("%c|",ya);
for(x=0;x<26;x++)
printf("%c",board[x+yn*26]);
printf("|\n");
}
break;
}else{
printf("%d|",yn);
for(x=0;x<26;x++)
printf("%c",board[x+yn*26]);
printf("|\n");
}
}
printf("\n Missiles Away: %02d Missiles Left: %02d\n",maway,mleft);
printf(" Current Score: %03d Last Move: \n",score);
printf(" Enter Target Coordinates--> ");
scanf("%2s",input);
check_move(input);
}
int check_move(char coord[]){
coord[0] = toupper(coord[0]);
coord[1] = toupper(coord[1]);
if( ( ( (coord[0] >= '1') && (coord[0] <= '9') || (coord[0] >= 'A') && (coord[0] <= 'F') ) &&
( (coord[1] >= 'A') && (coord[1] <= 'Z') ) ) ) {
printf("Valid move\n");
return 1;
}else{
printf("Invalid move\n");
return 0;
}
}
void replace(char to[],char from[]){
int i=0;
while(from[i]!='\0'){
to[i]=from[i++];
}
}