//===========================================================================
// Name        : 
// Author      :
// Version     :
// Copyright   : 
// Description : So eine Art Schiffe versenken (in C - nicht C++)
//============================================================================

#include <stdio.h>
#include <stdbool.h>
#include <sys/ndrclock.h>
#include <sys/file.h>
#include <sys/path.h>
#include <time.h>
#include <stdlib.h>
#include <stdint.h>
#include "../../nkc_common/nkc/nkc.h"


const int X=9;					                    // Zwei Konstanten deklarieren für Feldgröße
const int Y=9;                                      // (Die Werte können nicht geändert werden)
int x=0;                                            //
int y=0;                                            // ... alles Deklarationen 
int xin=0;                                          // ...  WICHTIG! sonst nehmen die Variablen irgendwas an
int yin=0;                                          //


int SpielfeldundEingabe()                           // 1. Funktion: Für Spielfeldaufbau und Eingabe
{        
setbuf(stdout,NULL);                                // deaktiviert den Aus- u. Eingabepuffer (NULL)  
setbuf(stdin,NULL);                                 // alles wird auch ohne Zeilenumbruch ausgegeben
                                                    // sonst ginge es erst bei Zeilenumbruch weiter
int x=0;
int y=0;
char SpielFeld[X][Y];                               // 2-dimensionales Array wird deklariert mit den Werten
    for (x=0; x<X; x++)                             // die oben die integers bei der Dekl. enthalten 9x9
    {
        for (y=0; y<Y; y++)                         // beide For-Schleifen - außen und innen - füllen das Array
        {                                           // mit Punkten
            SpielFeld[x][y]='.';                    // übrigens: Eingaben in '' - Anführungszeichen
        }
    }
bool Schleifenende=false;                           // boolsche Variable Schleifenende für Ausstieg aus der Funktion
int xin=0;                                          // ... muss noch realisiert werden
int yin=0;
    do                                              // do-while - Schleife vermutlich für den Programmabbruch
    {                                               // 
	gp_clearscreen();								// NKC-Grundprogramm Bildschirm löschen 
                                                    // Beginn der Ausgabe des Spielfeldes
	printf("    A  B  C  D  E  F  G  H  I\n\r");    // Gebe "A B C D E F ....." aus (\n ist Zeilenumbruch)
                                                    // (\r ist Wagenrücklauf) 
    	for (int y=0; y<Y; y++)		                // Wieder ne For-Schleife
    	{
            for (int x=0; x<X; x++)
            {                
                if (x==0)
                   {                                // nur am Anfang der Zeile die Zeilen-Nr. ausgeben
                    printf (" \%1d",y+1);            
                    }                    
    			printf("  \%c",SpielFeld[x][y]);    // SpielFeld [x][y]; war "%c"
                                                    // Das 2D-Array ausgeben (... beim 1.Mal mit lauter Punkten '.'
                                                    // bei printf("   "): %d=zahlen; %c=characters
    		}
    		printf("\n\r");		                    // Zeilenumbruch und wagenrücklauf   		
    	}		
        printf("Eingabe Spalte/Zeile (Programm-Abbruch mit 0): \n\r");		// Zeilenumbruch
        scanf("%d", &xin);                          						// scanf bei Eingabe von dezimal-Zahlen Typ %d -> Variable mit &
        scanf("%d", &yin);                          						// Variable mit vorangestelltem & sonst wird nicht eingelesen 
        printf("\n");                               						// also wie dazu-addiert
        if (xin==0 || yin==0)
        {			
			Schleifenende = true;											// Hier wird mit Schleifenende "true" --> Spielabbruch						
		}
		else
		{			
		        if (xin>0 && xin<=9 && yin>0 && yin<=9)     // valide Werte? ### Hier muss ich verändern !!!  y<9 ###
				{                                           // Es muss auch noch die Eingabe in der Form char-int gemacht werden
					SpielFeld[xin-1][yin-1]='x';            // ... dann trage in das 2D-Array an der entsprechenden Stelle
															// jeweils -1, weil das array bei Null anfängt zu zählen
				}                                           // ein Kreuz ein.
				else
				{
				Schleifenende = true;                       // bei nicht-validen Eingaben wird die Eingabe wiederholt!
				}                                           // die ganze do-while Schleife wird fortlaufend durchlaufen		
		}
    }
    while (!Schleifenende);                         // Wenn irgendwo noch definiert wird, dass Schleifende = true
    return 0;
}                                                   // --> Ausstieg aus der Funktion 

int main(int argc, char **argp, char **envp)		// zu was sind diese Optionen drin???
{                                                   // main = Hauptprogramm - dient hier nur als Aufruf von
//    gp_clearscreen();                               // Grundprogramm NKC -> Bildschirm löschen
    SpielfeldundEingabe();                          // 
                                                    // es werden noch weitere Funkionen dazu kommen
    return 0;                                       // 'return 0' für eine saubere Beendigung des Programms 
}                                                   // Meldung an das OS "ich bin fertig und es verlief alles gut"



