Ο πίνακας που υποτιθέμενα είναι ο ναρκαλιευτής "εκτυπώνεται" στο τερματικό 3 φόρες αφού με αφήσει να δώσω την επόμενη εντολή. Επιπλέον όταν προσπαθώ να του δώσω συντεταγμένες, μου ζητάει να δώσω δύο φορές την χ μεταβλητή την οποία δεύτερη, την μετράει ως ψ πρωτού εμφανιστεί το μήνυμα που έχω προσδιορίσει, για να δωθεί η μεταβλητή ψ.
Το επόμενο βήμα είναι να αρχίσω να χτυπάω την οθόνη στο κεφάλι μου

- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
void initGrid(int gridStatus[10][10],int playerStatus[10][10])
{
int numMines,i,j,k,l,x,y,count;
k=0;
l=0;
numMines=0;
srand((int)time(NULL));
numMines=rand()%50;
//Dimiourgia Pinakwn
for(i=0;i<10;i++){
for(j=0;j<10;j++){
gridStatus[i][j]=0;
}
}
for(i=0;i<10;i++){
for(j=0;j<10;j++){
playerStatus[i][j]=0;
}
}
//Prosthesi Narkwn
while(numMines!=0){
x=rand()%10;
y=rand()%10;
if(gridStatus[x][y]==0){
gridStatus[x][y]=-1;
numMines--;
if(numMines==0){
break;
}
}
}
//Elegxos gia narkes stin mesi
for(i=1;i<=8;i++){
for(j=1;j<=8;j++){
if (gridStatus[i][j]!=-1){
count=0;
for(k=i-1;k<=i+1;k++){
for(l=j-1;l<=j+1;l++){
if(gridStatus[k][l]==-1){
count++;
}
}
}
gridStatus[i][j]=count;
}
}
}
for(j=1;j<=8;j++){
if (gridStatus[0][j]!=-1){
count=0;
for(k=0;k<=1;k++){
for(l=j-1;l<=j+1;l++){
if(gridStatus[k][l]==-1){
count++;
}
}
}
gridStatus[0][j]=count;
}
}
for(j=1;j<=8;j++){
if (gridStatus[9][j]!=-1){
count=0;
for(k=8;k<=9;k++){
for(l=j-1;l<=j+1;l++){
if(gridStatus[k][l]==-1){
count++;
}
}
}
gridStatus[9][j]=count;
}
}
//Elegxos narkis stis gwnies tou pinaka gridStatus
if (gridStatus[0][0]!=-1){
count=0;
for(k=0;k<=1;k++){
for(l=0;l<=1;l++){
if(gridStatus[k][l]==-1){
count++;
}
}
}
gridStatus[0][0]=count;
}
if (gridStatus[9][9]!=-1){
count=0;
for(k=8;k<=9;k++){
for(l=8;l<=9;l++){
if(gridStatus[k][l]==-1){
count++;
}
}
}
gridStatus[9][9]=count;
}
if (gridStatus[0][9]!=-1){
count=0;
for(k=0;k<=1;k++){
for(l=8;l<=9;l++){
if(gridStatus[k][l]==-1){
count++;
}
}
}
gridStatus[0][9]=count;
}
if (gridStatus[9][0]!=-1){
count=0;
for(k=8;k<=9;k++){
for(l=0;l<=1;l++){
if(gridStatus[k][l]==-1){
count++;
}
}
}
gridStatus[9][0]=count;
}
//Grammes elegxos gia narkes
for(j=1;j<=8;j++){
if (gridStatus[0][j]!=-1){
count=0;
for(k=0;k<=1;k++){
for(l=j-1;l<=j+1;l++){
if(gridStatus[k][l]==-1){
count++;
}
}
}
gridStatus[0][j]=count;
}
}
for(j=1;j<=8;j++){
if (gridStatus[9][j]!=-1){
count=0;
for(k=8;k<=9;k++){
for(l=j-1;l<=j+1;l++){
if(gridStatus[k][l]==-1){
count++;
}
}
}
gridStatus[9][j]=count;
}
}
//Plagies styles elegxos gia narkes
for(i=1;i<=8;i++){
if (gridStatus[i][0]!=-1){
count=0;
for(k=i-1;k<=i+1;k++){
for(l=0;l<=1;l++){
if(gridStatus[k][l]==-1){
count++;
}
}
}
gridStatus[i][0]=count;
}
}
for(i=1;i<=8;i++){
if (gridStatus[i][9]!=-1){
count=0;
for(k=i-1;k<=i+1;k++){
for(l=8;l<=9;l++){
if(gridStatus[k][l]==-1){
count++;
}
}
}
gridStatus[i][9]=count;
}
}
}
//*****************************************************************************************************
void printGrid(int gridStatus[10][10],int playerStatus[10][10])
{
int i,j,countMark,countOpen,countMines;
countMark=0;
countOpen=0;
countMines=0;
printf(" 0 1 2 3 4 5 6 7 8 9 \n");
for(i=0;i<=9;i++){
printf("%d ",i);
for(j=0;j<=9;j++){
printf("|");
if(playerStatus[i][j]==0)
printf(" ");
if(playerStatus[i][j]==1){
printf("X");
countMark++;
}
if(playerStatus[i][j]==2){
printf("%d", gridStatus[i][j]);
countOpen++;
}
if(playerStatus[i][j]==-1)
printf("@");
}
printf("| \n");
}
for(i=0;i<=9;i++) {
for(j=0;j<=9;j++){
if(gridStatus[i][j]==-1)
countMines++;
}
}
printf("[Mines] Total: %d , ", countMines);
printf("Opened: %d , ", countOpen);
printf("Marked: %d , \n", countMark);
printf(" f/F : Flag , o/O : Open , q/Q : Quit \n");
}
//*****************************************************************************************************
int flagCell(int x,int y,int playerStatus[10][10],int gridStatus[10][10])
{
int playerFlag,currentFlag,i,j;
playerFlag=0;
currentFlag=0;
for(i=0;i<10;i++){
for(j=0;j<10;j++){
if(playerStatus[i][j]==1)
currentFlag++;
if(gridStatus[i][j]==-1)
playerFlag++;
}
}
if(playerStatus[x][y]==0){
playerStatus[x][y]=1;
return(1);
}
if(playerStatus[x][y]==1){
playerStatus[x][y]=0;
return(-1);
}
if((x<0)||(x>9)||(y<0)||(y>9)||(playerStatus[x][y]==2)||(currentFlag==playerFlag)){
return(0);
}
}
//*****************************************************************************************************
int openCell(int x,int y,int playerStatus[10][10],int gridStatus[10][10])
{
if(gridStatus[x][y]!=-1){
playerStatus[x][y]=2;
return(1);
}
if(gridStatus[x][y]==-1){
playerStatus[x][y]=-1;
return(-1);
}
if((x<0)||(x>9)||(y<0)||(y>9)||(playerStatus[x][y]==1)||(playerStatus[x][y]==2)) {
return(0);
}
}
//*****************************************************************************************************
main()
{
int playerStatus[10][10],gridStatus[10][10],x,y,apotOpen,apotMark,count,i,j,numMines;
char answer;
numMines=0;
count=0;
apotOpen=0;
apotMark=0;
initGrid(gridStatus,playerStatus);
printGrid(gridStatus,playerStatus);
while(1){
printf("Ti thelete na kanete? \n");
scanf("%c", &answer);
if(answer=='o' || answer=='O'){
printf("Dwste syntetagmenes tou koutiou pou thelete na anoiksete \n");
printf("Dwste syntetagmeni x \n");
scanf("%d \n", &x);
printf("Dwste syntetagmeni y \n");
scanf("%d \n", &y);
apotOpen=openCell(x,y,playerStatus,gridStatus);
if(apotOpen==0)
printf("Lathos energeia \n");
if(apotOpen==1)
printf("To koutaki anoixthike epityxws! \n");
if(apotOpen==-1){
printf("Lypame, molis anatinaxtikes! Game Over! \n");
printGrid(gridStatus,playerStatus);
break;
}
}
if(answer=='f' || answer=='F'){
printf("Dwste syntetagmenes tou koutiou pou thelete na markarete h na ksemarkarete \n");
printf("Dwste syntetagmeni x \n");
scanf("%d \n", &x);
printf("Dwste syntetagmeni y \n");
scanf("%d \n", &y);
apotMark=flagCell(x,y,playerStatus,gridStatus);
if(apotMark==0)
printf("Den egine kamia energeia \n");
if(apotMark==1)
printf("To koutaki markaristike epityxws! \n");
if(apotMark==-1)
printf("To koutaki ksemarkaristike epityxws! \n");
}
if(answer=='q' || answer=='Q'){
printf("Too hard for you...? Farewell. \n");
break;
}
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if(playerStatus[i][j]==0 || playerStatus[i][j]==1)
count++;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if(gridStatus[i][j]==-1)
numMines++;
if(count==numMines){
printf("\n\n\tSygxaritiria.Kerdisate!\n");
break;
}
printGrid(gridStatus,playerStatus);
}
}