Ort: in der Mitte der Milchstraße, in dem großen Loch da ;)
Beiträge: 89
Bedankt: 116
Schiffe versenken in C
Ahoi,
zu aller erst, nein ich suche niemanden der mir das programmiert, ich suche lediglich hilfestellung bzw. berichtigte code-snippets damit das ganze läuft.
Die ganze sprache ist für mich totales neuland, also auch nicht gerade einfach. Abgabetermin des ganzen ist am freitag und ich/wir stecken fest.
Code:
#include <stdio.h>
#include <stdlib.h>
int feld1[11][11],feld2[11][11],anzeige1[11][11],anzeige2[11][11];
int getroffen=1;
int treffer1(int hor, int ver)
{
if(feld2[hor][ver] != 95)
{
anzeige1[hor][ver]= 120;
feld2[hor][ver]= 120;
return 1;
}
else
return 0;
}
int treffer2(int hor, int ver)
{
if(feld1[hor][ver]!= 95)
{
anzeige2[hor][ver]= 120;
feld1[hor][ver]=120;
return 1;
}
else
return 0;
}
void ausgabesp1()
{
int i, j;
for (i = 0; i < 11; i++)
{
printf("\n");
for (j = 0; j < 11; j++)
printf("%c ", feld1[i][j]);
}
printf("\n\n");
}
void ausgabesp2()
{
int i, j;
for (i = 0; i < 11; i++)
{
printf("\n");
for (j = 0; j < 11; j++)
printf("%c ", feld2[i][j]);
}
printf("\n\n");
}
void spiel1()
{
int i, j;
for (i = 0; i < 11; i++)
{
printf("\n");
for (j = 0; j < 11; j++)
printf("%c ", anzeige1[i][j]);
}
printf("\n\n");
}
void spiel2()
{
int i,j;
for(i=0;i<11;i++)
{
printf("\n");
for(j=0;j<11;j++)
printf("%c", anzeige2[i][j]);
}
printf("\n\n");
}
int main()
{
int spieler1[15], spieler2[15];
int auswahl,j,i,k,hor, richtung;
char ver;
printf("Herzlich Willkommen zum Spiel Schiffeversenken\n");
printf("Bitte geben Sie Ihre Auswahl ein:\n");
printf("<1> Neues Spiel starten\n");
printf("<2> Beenden\n");
scanf("%d", &auswahl);
if(auswahl == 2)
{
return 0;
}
if(auswahl < 1 || auswahl > 2)
{
printf("Falsche Eingabe!");
}
printf("Bitte geben Sie ihren Namen ein:\n");
printf("Spieler1:\t");
scanf("%s",&spieler1);
printf("Spieler2:\t");
scanf("%s",&spieler2);
feld1[0][0] = ' '; feld1[0][1] = '0'; feld1[0][2] = '1'; feld1[0][3] = '2'; feld1[0][4] = '3'; feld1[0][5] = '4'; feld1[0][6] = '5'; feld1[0][7] = '6';
feld1[0][8] = '7'; feld1[0][9] = '8'; feld1[0][10] = '9';
feld1[1][0] = 'A'; feld1[2][0] = 'B'; feld1[3][0] = 'C'; feld1[4][0] = 'D'; feld1[5][0] = 'E'; feld1[6][0] = 'F'; feld1[7][0] = 'G'; feld1[8][0] = 'H';
feld1[9][0] = 'I'; feld1[10][0] = 'J';
anzeige1[0][0] = ' '; anzeige1[0][1] = '0'; anzeige1[0][2] = '1'; anzeige1[0][3] = '2'; anzeige1[0][4] = '3'; anzeige1[0][5] = '4'; anzeige1[0][6] = '5';
anzeige1[0][7] = '6';anzeige1[0][8] = '7'; anzeige1[0][9] = '8'; anzeige1[0][10] = '9';
anzeige1[1][0] = 'A'; anzeige1[2][0] = 'B'; anzeige1[3][0] = 'C'; anzeige1[4][0] = 'D'; anzeige1[5][0] = 'E'; anzeige1[6][0] = 'F'; anzeige1[7][0] = 'G';
anzeige1[8][0] = 'H';anzeige1[9][0] = 'I'; anzeige1[10][0] = 'J';
feld2[0][0] = ' '; feld2[0][1] = '0'; feld2[0][2] = '1'; feld2[0][3] = '2'; feld2[0][4] = '3'; feld2[0][5] = '4'; feld2[0][6] = '5'; feld2[0][7] = '6';
feld2[0][8] = '7'; feld2[0][9] = '8'; feld2[0][10] = '9';
feld2[1][0] = 'A'; feld2[2][0] = 'B'; feld2[3][0] = 'C'; feld2[4][0] = 'D'; feld2[5][0] = 'E'; feld2[6][0] = 'F'; feld2[7][0] = 'G'; feld2[8][0] = 'H';
feld2[9][0] = 'I'; feld2[10][0] = 'J';
anzeige2[0][0] = ' '; anzeige2[0][1] = '0'; anzeige2[0][2] = '1'; anzeige2[0][3] = '2'; anzeige2[0][4] = '3'; anzeige2[0][5] = '4'; anzeige2[0][6] = '5';
anzeige2[0][7] = '6';anzeige2[0][8] = '7'; anzeige2[0][9] = '8'; anzeige2[0][10] = '9';
anzeige2[1][0] = 'A'; anzeige2[2][0] = 'B'; anzeige2[3][0] = 'C'; anzeige2[4][0] = 'D'; anzeige2[5][0] = 'E'; anzeige2[6][0] = 'F'; anzeige2[7][0] = 'G';
anzeige2[8][0] = 'H';anzeige2[9][0] = 'I'; anzeige2[10][0] = 'J';
/********************************Anzeige des Spielfeldes für Spieler 1*******************************/
for(j=1;j<11;j++)
{
for(k=1;k<11;k++)
{
feld1[j][k] = 95;
}
}
ausgabesp1();
/**********************************Schiffe einlesen**************************************************/
printf("%s beginnt\n\n",spieler1);
printf("Bitte geben Sie ihre Schiffe ein!\t");
printf("Sie muessen: \n1 4er Schiff \n2 3er Schiffe \n3 2er Schiffe und \n4 1er Schiffe eingeben!\n");
printf("Geben Sie Ihren Startpunkt fuer Ihr 4er Schiff an und \nwaehlen Sie, ob Sie ihr Schiff waagerecht oder senkrecht setzen moechten: \n");
printf("Geben sie <s> fuer senkrecht oder <w> fuer waagerecht ein: \n");
richtung = getch();
if(richtung == 115)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
feld1[ver-95][hor-47] = 120;
feld1[ver-94][hor-47] = 120;
feld1[ver-93][hor-47] = 120;
}
if(richtung == 119)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
feld1[ver-96][hor-46] = 120;
feld1[ver-96][hor-45] = 120;
feld1[ver-96][hor-44] = 120;
}
ausgabesp1();
/************************************** 3er Schiffe ********************************/
printf("Nun geben Sie Ihren Startpunkt fuer Ihr erstes 3er Schiff ein: \n");
printf("Geben sie <s> fuer senkrecht oder <w> fuer waagerecht ein: \n");
richtung = getch();
if(richtung == 115)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
feld1[ver-95][hor-47] = 120;
feld1[ver-94][hor-47] = 120;
}
if(richtung == 119)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
feld1[ver-96][hor-46] = 120;
feld1[ver-96][hor-45] = 120;
}
ausgabesp1();
printf("Nun geben Sie Ihren Startpunkt fuer Ihr zweites 3er Schiff ein: \n");
printf("Geben sie <s> fuer senkrecht oder <w> fuer waagerecht ein: \n");
richtung = getch();
if(richtung == 115)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
feld1[ver-95][hor-47] = 120;
feld1[ver-94][hor-47] = 120;
}
if(richtung == 119)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
feld1[ver-96][hor-46] = 120;
feld1[ver-96][hor-45] = 120;
}
ausgabesp1();
/************************************ 2er Schiffe **********************************/
printf("Geben Sie Ihren Startpunkt fuer Ihr erstes 2er Schiff ein: \n");
printf("Geben sie <s> fuer senkrecht oder <w> fuer waagerecht ein: \n");
richtung = getch();
if(richtung == 115)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
feld1[ver-95][hor-47] = 120;
}
if(richtung == 119)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
feld1[ver-96][hor-46] = 120;
}
ausgabesp1();
printf("Nun geben Sie Ihren Startpunkt fuer das 2. 2er Schiff ein: \n");
printf("Geben sie <s> fuer senkrecht oder <w> fuer waagerecht ein: \n");
richtung = getch();
if(richtung == 115)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
feld1[ver-95][hor-47] = 120;
}
if(richtung == 119)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
feld1[ver-96][hor-46] = 120;
}
ausgabesp1();
printf("Nun geben Sie Ihren Startpunkt fuer Ihr letztes 2er Schiff ein: \n");
printf("Geben sie <s> fuer senkrecht oder <w> fuer waagerecht ein: \n");
richtung = getch();
if(richtung == 115)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
feld1[ver-95][hor-47] = 120;
}
if(richtung == 119)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
feld1[ver-96][hor-46] = 120;
}
ausgabesp1();
/******************************* 1er Schiffe **********************************/
printf("Nun geben Sie Ihre vier 1er Schiffe ein: \n");
printf("Geben Sie den horizontalen Punkt ein (0-9) :\n");
hor = getch();
printf("Geben Sie den vertikalen Punkt ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
ausgabesp1();
printf("Geben Sie den horizontalen Punkt ein (0-9) :\n");
hor = getch();
printf("Geben Sie den vertikalen Punkt ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
ausgabesp1();
printf("Geben Sie den horizontalen Punkt ein (0-9) :\n");
hor = getch();
printf("Geben Sie den vertikalen Punkt ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
ausgabesp1();
printf("Geben Sie den horizontalen Punkt ein (0-9) :\n");
hor = getch();
printf("Geben Sie den vertikalen Punkt ein (a-j) : \n");
ver = getch();
feld1[ver-96][hor-47] = 120;
ausgabesp1();
printf("Sie haben nun alle Schiffe eingegeben!\n");
system("cls");
printf("%s, du bist dran!", spieler2);
/********************************Anzeige des Spielfeldes für Spieler 2*******************************/
for(j=1;j<11;j++)
{
for(k=1;k<11;k++)
{
feld2[j][k] = 95;
}
}
ausgabesp2();
/**********************************Schiffe einlesen**************************************************/
printf("Bitte geben Sie ihre Schiffe ein!\t");
printf("Sie muessen: \n1 4er Schiff \n2 3er Schiffe \n3 2er Schiffe und \n4 1er Schiffe eingeben!\n");
printf("Geben Sie Ihren Startpunkt fuer Ihr 4er Schiff an und \nwaehlen Sie, ob Sie ihr Schiff waagerecht oder senkrecht setzen moechten: \n");
printf("Geben sie <s> fuer senkrecht oder <w> fuer waagerecht ein: \n");
richtung = getch();
if(richtung == 115)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
feld2[ver-95][hor-47] = 120;
feld2[ver-94][hor-47] = 120;
feld2[ver-93][hor-47] = 120;
}
if(richtung == 119)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
feld2[ver-96][hor-46] = 120;
feld2[ver-96][hor-45] = 120;
feld2[ver-96][hor-44] = 120;
}
ausgabesp2();
/************************************** 3er Schiffe ********************************/
printf("Nun geben Sie Ihren Startpunkt fuer Ihr erstes 3er Schiff ein: \n");
printf("Geben sie <s> fuer senkrecht oder <w> fuer waagerecht ein: \n");
richtung = getch();
if(richtung == 115)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
feld2[ver-95][hor-47] = 120;
feld2[ver-94][hor-47] = 120;
}
if(richtung == 119)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
feld2[ver-96][hor-46] = 120;
feld2[ver-96][hor-45] = 120;
}
ausgabesp2();
printf("Nun geben Sie Ihren Startpunkt fuer Ihr zweites 3er Schiff ein: \n");
printf("Geben sie <s> fuer senkrecht oder <w> fuer waagerecht ein: \n");
richtung = getch();
if(richtung == 115)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
feld2[ver-95][hor-47] = 120;
feld2[ver-94][hor-47] = 120;
}
if(richtung == 119)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
feld2[ver-96][hor-46] = 120;
feld2[ver-96][hor-45] = 120;
}
ausgabesp2();
/************************************ 2er Schiffe **********************************/
printf("Geben Sie Ihren Startpunkt fuer Ihr erstes 2er Schiff ein: \n");
printf("Geben sie <s> fuer senkrecht oder <w> fuer waagerecht ein: \n");
richtung = getch();
if(richtung == 115)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
feld2[ver-95][hor-47] = 120;
}
if(richtung == 119)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
feld2[ver-96][hor-46] = 120;
}
ausgabesp2();
printf("Nun geben Sie Ihren Startpunkt fuer das 2. 2er Schiff ein: \n");
printf("Geben sie <s> fuer senkrecht oder <w> fuer waagerecht ein: \n");
richtung = getch();
if(richtung == 115)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
feld2[ver-95][hor-47] = 120;
}
if(richtung == 119)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
feld2[ver-96][hor-46] = 120;
}
ausgabesp2();
printf("Nun geben Sie Ihren Startpunkt fuer Ihr letztes 2er Schiff ein: \n");
printf("Geben sie <s> fuer senkrecht oder <w> fuer waagerecht ein: \n");
richtung = getch();
if(richtung == 115)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
feld2[ver-95][hor-47] = 120;
}
if(richtung == 119)
{
printf("Geben Sie die horizontale Starposition ein (0-9) :\n");
hor = getch();
printf("Geben Sie die vertikale Startposition ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
feld2[ver-96][hor-46] = 120;
}
ausgabesp2();
/******************************* 1er Schiffe **********************************/
printf("Nun geben Sie Ihre vier 1er Schiffe ein: \n");
printf("Geben Sie den horizontalen Punkt ein (0-9) :\n");
hor = getch();
printf("Geben Sie den vertikalen Punkt ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
ausgabesp2();
printf("Geben Sie den horizontalen Punkt ein (0-9) :\n");
hor = getch();
printf("Geben Sie den vertikalen Punkt ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
ausgabesp2();
printf("Geben Sie den horizontalen Punkt ein (0-9) :\n");
hor = getch();
printf("Geben Sie den vertikalen Punkt ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
ausgabesp2();
printf("Geben Sie den horizontalen Punkt ein (0-9) :\n");
hor = getch();
printf("Geben Sie den vertikalen Punkt ein (a-j) : \n");
ver = getch();
feld2[ver-96][hor-47] = 120;
ausgabesp2();
printf("Sie haben nun alle Schiffe eingegeben!\n");
system("cls");
printf("\tDas Spiel beginnt!\n\n");
/*********************************** anzeige1 mit ?? füllen **********************/
for(j=1;j<11;j++)
{
for(k=1;k<11;k++)
{
anzeige1[j][k] = '?';
}
}
/*printf("Geben Sie den horizontalen Punkt ein (0-9) :\n");
hor = getch();
printf("Geben Sie den vertikalen Punkt ein (a-j) : \n");
ver = getch();*/
/* do
{*/
spiel1();
printf("Geben Sie den horizontalen Punkt ein (0-9) :\n");
hor = getch();
printf("Geben Sie den vertikalen Punkt ein (a-j) : \n");
ver = getch();
getroffen = treffer1(hor-48, ver-95);
if(getroffen == 1)
{
printf("Treffer! Sie sind noch einmal an der Reihe");
}
else
{
printf("Wasser!");
}
/*} while(getroffen == 1);*/
/*do
{*/
spiel1();
printf("Geben Sie den horizontalen Punkt ein (0-9) :\n");
hor = getch();
printf("Geben Sie den vertikalen Punkt ein (a-j) : \n");
ver = getch();
getroffen = treffer1(hor-48, ver-95);
if(getroffen == 1)
printf("Treffer! Sie sind noch einmal an der Reihe");
//} while(getroffen == 1);
return 0;
}
Das ist, was wir soweit haben. Es hapert momentan an den schüssen. Wird ein Schiff getroffen, sollte ein 'x' angezeigt werden, bei wasser einfach ein '-'.
Hier einmal die aufgabenstellung vom prof.
PROZEDURALE PROGRAMMIERUNG
LABORPROJEKT „SCHIFFE VERSENKEN“
(3. NOVEMBER BIS 2. DEZEMBER 2011)
DAS SPIEL „SCHIFFE VERSENKEN“
Das Spiel „Schiffe versenken“ wird wie folgt gespielt. Jeder Spieler hat ein eigenes Rasterfeld der
Größe 10x10, auf dem er 10 Schiffe positioniert:
• 1 Schiff der Länge 4
• 2 Schiffe der Länge 3
• 3 Schiffe der Länge 2
• 4 Schiffe der Länge 1
Die Schiffe müssen waagerecht oder senkrecht positioniert sein und dürfen einander nicht waagerecht
oder senkrecht berühren (wohl aber diagonal).
0123456789 0123456789 0123456789
A -x-----xxx A x----xx--- A xxxx------
B x--------- B -x-------x B --x------x
C x-----x--- C --x--x---- C --x-------
D x-----x--- D ---x---x-- D --x-----xx
E x--------- E -------x-- E ----------
F ---------- F x------x-- F ----x-----
G ---------- G ---x------ G ----x----x
H --xxx---x- H --x------- H xx--xxx---
I --------x- I -x-----x-- I --------x-
J -x-x-x---- J ---x---x-- J -----x----
(gültig) (ungültig: Diagonal) (ungültig: Berührung)
Wenn beide Spieler ihre Schiffe positioniert haben, beginnt das eigentliche Spiel. Jeder Spieler
darf im Wechsel auf ein Feld des Gegners „schießen“, von dem er vermutet, dass dort ein Schiff
versteckt ist (z.B. „A8“). Trifft er, so erhält er „Treffer!“ als Antwort. Ist durch den Treffer das
letzte unbeschädigte Feld eines Schiffes getroffen worden, lautet die Antwort „Versenkt!“. Verfehlt
er dagegen, so ist die Antwort „Wasser!“. Ein Spieler ist immer so lange dran, bis er sein Ziel
verfehlt, danach ist sein Gegner dran.
Sieger ist, wer zuerst alle Schiffe des Gegners versenkt hat.
AUFGABENSTELLUNG
Ziel des Projektes ist es, ein virtuelles Spielbrett für das Spiel „Schiffe versenken“ zu schreiben.
Das Programm muss mindestens die folgenden Funktionen unterstützen:
1. Beide Spieler können ihre Schiffe auf ihrem eigenen Spielfeld positionieren. Dazu muss
eine geeignete Benutzersteuerung geschrieben werden. Der Spieler sieht während der
Positionierungsphase sein aktuelles Spielbrett mit allen bereits positionierten Schiffen.
In der Basisversion ist jeder Spieler selbst dafür verantwortlich, dass er seine Schiffe
korrekt setzt.
2. Das eigentliche Spiel soll nach den obigen Regeln abgewickelt werden. Das Programm
ruft einen Spieler auf, liest seinen Schuss ein und sagt ihm, ob er getroffen hat oder nicht.
Es zeigt auch für beide Spieler den Wissensstand an, den sie über das Brett des Gegners
haben. Ein Screenshot könnte z.B. wie folgt aussehen:
Brett Spieler A Brett Spieler B
0123456789 0123456789
A ?????-???- A ??-???????
B ??????-??? B ?-????????
C --?X??-??? C ????XX??-?
D ???X?????? D ???-??????
E ???X?????- E ??X?????-?
F ???X?????? F ??X???????
G X????????- G ??X???????
H ??-??????? H ??????????
I ????xx???? I ?--????x??
J ?-???-???? J ????-?????
Beachte, dass hier vier Symbole verwendet wurden: ‘X‘ für ein versenktes Schiff, ‘x‘ für
ein getroffenes, aber noch nicht versenktes Schiff, ‘-‘ für ein Wasser-Feld und ‘?‘ für ein
Feld, über das man noch nichts weiß. Sie dürfen aber gerne ihre eigenen, vielleicht besser
lesbaren Symbole verwenden. So kann es helfen, das Fragezeichen durch einen Punkt
zu ersetzen, Abstände zwischen den Zeichen einzufügen o.ä.
3. Das Programm soll selbständig merken, wann ein Spieler gewonnen hat, und ihm zum
Sieg gratulieren.
OPTIONALE ELEMENTE
WICHTIG: Die folgenden Zusatzfunktionen des Programmes sind nicht erforderlich, um den
Kurs zu bestehen, sondern dienen lediglich als Herausforderung für diejenigen Studierenden, die
aus dem Projekt gerne ein voll funktionsfähiges Programm machen wollen!
Wenn Sie möchten, können Sie das Programm durch die folgenden Optionen komfortabler machen:
1. Sie können bei allen Eingaben dafür sorgen, dass keine ungültigen Eingaben (z.B. diagonale
Schiffe oder Schiffe, die einander berühren, oder Schüsse auf nicht existierende Felder)
vorkommen können.
2. Sie können bei der Anzeige des Zwischenstandes diejenigen Felder, von denen der Spieler
bereits wissen kann, dass dort kein Schiff sein kann, als Wasser-Felder markieren. Im
obigen Screenshot wäre das beispielsweise Feld C2 auf dem Brett von Spieler A, weil ein
Schiff, das dort liegen würde, an ein bereits bekanntes Schiff stoßen würde, was nicht erlaubt
ist.
3. Die Königsdisziplin ist es natürlich, das Programm so umzuschreiben, dass ein Spieler
auch direkt gegen den Computer spielen kann. Dazu benötigen Sie den Zufallszahlengenerator
von C; schlagen Sie hierzu die Verwendung des Befehls rand() nach. Dieser Teil
ist für einen Anfängerkurs in Programmierung allerdings sehr anspruchsvoll und wird
nur für Studierende empfohlen, die bereits Programmiererfahrung besitzen. Stellen Sie
in jedem Fall sicher, dass Ihre Pflichtabgabe voll funktionsfähig ist, bevor Sie sich hieran
versuchen.
Beachten Sie, dass es sehr sinnvoll ist, diese Optionen in der angegebenen Reihenfolge zu implementieren,
d.h. ohne Option 1 macht es keinen Sinn, Option 2 zu implementieren usw.
eventuell hat ja jemand lust zu helfen
Achso, falls jemand sich dazu entschliessen sollte ein komplett neues programm zu schreiben können wir auch gerne über eine Belohnung alá OCH Account reden