/* Beispiel: Mehrdimensionale Arrays
Filename: main.cpp
Author: Lahmer
Title: Schiffe versenken
Description: Es soll eine vereinfachte Variation von Schiffe versenken erstellt werden.
Last Change: 19.01.2018
*/
//Header-Dateien
#include <iostream>
//Namespace
using namespace std;
//Globale Variablen
#define SPALTEN 5
#define ZEILEN 5
#define SCHIFFLAENGE 3
//Funktionsprototyp
void initializeArray(char feld[ZEILEN][SPALTEN]); //Rückgabewert void, Übergabe per Zeiger
void printArray(char feld[ZEILEN][SPALTEN]); //Rückgabewert void, Übergabe per Zeiger
int check(char feld[ZEILEN][SPALTEN], char schiff[ZEILEN][SPALTEN], int zeile, int spalte); //Rückgabewert int, Übergabe per Zeiger, per Zeiger, per Wert & per Wert
//Hauptprogramm
int main(int argc, char** argv) {
//Lokale Variablendeklaration
//Mehrdimensionales Character-Feld für die Anzeige
char feld[ZEILEN][SPALTEN];
//Mehrdimensionales Character-Feld für das Schiff
char schiff[ZEILEN][SPALTEN];
int zeile=0, spalte=0, treffer=0;
//Feld für das Spielfeld mit Werten initialisieren
initializeArray(feld);
//Feld für das Schiff mit Werten initialisieren
initializeArray(schiff);
//Schiff verstecken
schiff[1][2]='X';
schiff[1][3]='X';
schiff[1][4]='X';
printArray(feld);
//Do-While Schleife solange nicht das ganze Schiff versenkt ist
do {
cout << endl << "Geben Sie die Zeilennummer ein:";
cin >> zeile;
cout << endl << "Geben Sie die Spaltennummer ein:";
cin >> spalte;
//Die Treffer mitzählen, um zu wissen wann das Schiff versenkt ist
treffer=treffer+check(feld,schiff,zeile,spalte);
//Spielfeld ausgeben
printArray(feld);
}while(treffer<SCHIFFLAENGE);
cout << endl << endl << "!!!!!!!!!!! HERZLICHEN GLUECKWUNSCH SIE HABEN DAS SCHIFF VERSENKT !!!!!!!!!!!!!!!";
return 0;
}
//Alle Feldelemente mit # initialisieren
void initializeArray(char feld[ZEILEN][SPALTEN]) {
for (int i=0; i<ZEILEN;i++)
{
for (int j=0; j<SPALTEN;j++)
{
feld[i][j]='#';
}
}
}
//Spielfeld ausgeben
void printArray(char feld[ZEILEN][SPALTEN]) {
cout << endl << endl << "-------------------------------------------------------------------";
cout << endl << "Spielfeld: " << endl;
cout << " ";
for (int i=0; i<ZEILEN;i++)
{
cout << i << " ";
}
cout << endl;
for (int i=0; i<ZEILEN;i++)
{
cout << i << " ";
for (int j=0; j<SPALTEN;j++)
{
cout << feld[i][j] << " ";
}
cout << endl;
}
cout << "-------------------------------------------------------------------" << endl << endl;
}
//Prüfen, ob ein Schiff getroffen wurde
int check(char feld[ZEILEN][SPALTEN], char schiff[ZEILEN][SPALTEN], int zeile, int spalte) {
if(schiff[zeile][spalte]=='X')
{
cout << endl << "!!!! TREFFER !!!!!" << endl;
feld[zeile][spalte]='X';
return 1;
}
else {
cout << endl << "!!!! KEIN TREFFER !!!!!" << endl;
feld[zeile][spalte]='-';
return 0;
}
return 0;
}