Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // C++ Schiffe Versenken.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
- //
- #include "stdafx.h"
- #include <conio.h>
- #include <iostream>
- #include <locale.h>
- #include <time.h>
- #include <windows.h>
- #include <vector>
- #include <shlobj.h>
- #include <fstream>
- using namespace std;
- #define SCHWARZ 0x0000
- #define DUNKELBLAU 0x0001
- #define DUNKELGRÜN 0x0002
- #define DUNKELTÜRKIS 0x0003
- #define DUNKELROT 0x0004
- #define LILA 0x0005
- #define GOLD 0x0006
- #define GRAU 0x0007
- #define DUNKELGRAU 0x0008
- #define BLAU 0x0009
- #define GRÜN 0x000a
- #define TÜRKIS 0x000b
- #define ROT 0x000c
- #define PINK 0x000d
- #define GELB 0x000e
- #define WEIß 0x000f
- bool CheatMode = false, Speichern = false;
- int Schiffe[4][2], SchiffeKI[4][2], Schüsse[136][2], SchüsseKI[136][2], Treffer[4][2], TrefferKI[4][2], SchiffeKInichtgetroffen[4][2], SchiffeKIgetroffen[4][2];
- int counter, Spalten = 17, Zeilen = 8;
- TCHAR appdata[MAX_PATH];
- vector<int> Koordinatenverarbeitung() {
- vector<int> Rückgabewert;
- Rückgabewert.push_back(1);
- Rückgabewert.push_back(2);
- return Rückgabewert;
- }
- struct Pair {
- int Eins, Zwei;
- };
- void gotoxy (int x, int y) {
- HANDLE hConsole;
- COORD cursorLoc;
- cout.flush();
- cursorLoc.X = x;
- cursorLoc.Y = y;
- hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleCursorPosition(hConsole, cursorLoc);
- }
- void Farbe(WORD farbe) {
- SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), farbe);
- }
- void Legende(int x) {
- gotoxy(10, 64);
- Farbe(WEIß);
- cout<<"Legende:";
- if (x == 1) {
- gotoxy(10, 65);
- Farbe(GELB);
- cout<<"X";
- Farbe(WEIß);
- cout<<" = Deine Schiffe";
- }
- if (x == 2) {
- gotoxy(10, 65);
- Farbe(BLAU);
- cout<<"X";
- Farbe(WEIß);
- cout<<" = Wasser-Treffer";
- gotoxy(10, 66);
- Farbe(DUNKELROT);
- cout<<"X";
- Farbe(WEIß);
- cout<<" = Schiff-Treffer";
- }
- if (x == 3) {
- gotoxy(10, 65);
- Farbe(GELB);
- cout<<"X";
- Farbe(WEIß);
- cout<<" = Deine Schiffe";
- gotoxy(10, 66);
- Farbe(BLAU);
- cout<<"X";
- Farbe(WEIß);
- cout<<" = feindliche Wasser-Treffer";
- gotoxy(10, 67);
- Farbe(DUNKELROT);
- cout<<"X";
- Farbe(WEIß);
- cout<<" = feindliche Schiff-Treffer";
- }
- if (x == 4) {
- gotoxy(10, 67);
- Farbe(TÜRKIS);
- cout<<"X";
- Farbe(WEIß);
- cout<<" = feindliche Schiffe";
- }
- }
- Pair Koordinatenverarbeitung(int x, int y) {
- int x1, y1;
- Pair Rückgabewert;
- switch(x) {
- case 'A':
- x1 = 20;
- break;
- case 'a':
- x1 = 20;
- break;
- case 'B':
- x1 = 30;
- break;
- case 'b':
- x1 = 30;
- break;
- case 'C':
- x1 = 40;
- break;
- case 'c':
- x1 = 40;
- break;
- case 'D':
- x1 = 50;
- break;
- case 'd':
- x1 = 50;
- break;
- case 'E':
- x1 = 60;
- break;
- case 'e':
- x1 = 60;
- break;
- case 'F':
- x1 = 70;
- break;
- case 'f':
- x1 = 70;
- break;
- case 'G':
- x1 = 80;
- break;
- case 'g':
- x1 = 80;
- break;
- case 'H':
- x1 = 90;
- break;
- case 'h':
- x1 = 90;
- break;
- case 'I':
- x1 = 100;
- break;
- case 'i':
- x1 = 100;
- break;
- case 'J':
- x1 = 110;
- break;
- case 'j':
- x1 = 110;
- break;
- case 'K':
- x1 = 120;
- break;
- case 'k':
- x1 = 120;
- break;
- case 'L':
- x1 = 130;
- break;
- case 'l':
- x1 = 130;
- break;
- case 'M':
- x1 = 140;
- break;
- case 'm':
- x1 = 140;
- break;
- case 'N':
- x1 = 150;
- break;
- case 'n':
- x1 = 150;
- break;
- case 'O':
- x1 = 160;
- break;
- case 'o':
- x1 = 160;
- break;
- case 'P':
- x1 = 170;
- break;
- case 'p':
- x1 = 170;
- break;
- case 'Q':
- x1 = 180;
- break;
- case 'q':
- x1 = 180;
- break;
- default:
- x1 = 0;
- break;
- }
- switch(y) {
- case '1':
- y1 = 10;
- break;
- case '2':
- y1 = 16;
- break;
- case '3':
- y1 = 22;
- break;
- case '4':
- y1 = 28;
- break;
- case '5':
- y1 = 34;
- break;
- case '6':
- y1 = 40;
- break;
- case '7':
- y1 = 46;
- break;
- case '8':
- y1 = 52;
- break;
- default:
- y1 = 0;
- break;
- }
- Rückgabewert.Eins = x1;
- Rückgabewert.Zwei = y1;
- return Rückgabewert;
- }
- void ZeileLöschen(int y) {
- for (int i = 0; i <= 197; i++) {
- gotoxy(i, y);
- cout<<" ";
- }
- }
- void SchiffePlatzieren(int x, int y, WORD farbe) {
- Farbe(farbe);
- gotoxy(x - 4, y - 2);
- cout<<"XXXXXXXXX";
- gotoxy(x - 4, y - 1);
- cout<<"XXXXXXXXX";
- gotoxy(x - 4, y);
- cout<<"XXXXXXXXX";
- gotoxy(x - 4, y + 1);
- cout<<"XXXXXXXXX";
- gotoxy(x - 4, y + 2);
- cout<<"XXXXXXXXX";
- }
- void Feld(int x) {
- int i, k = 1;
- char buchstabe = 'A';
- if (x == 1) {
- gotoxy(94, 0);
- Farbe(ROT);
- cout<<"DEIN FELD";
- }
- else {
- gotoxy(90, 0);
- Farbe(ROT);
- cout<<"GEGNERISCHES FELD";
- }
- Farbe(TÜRKIS);
- for (i = 20; i <= Spalten * 10 + 10; i+=10) {
- gotoxy(i, 4);
- cout<<buchstabe;
- buchstabe++;
- }
- for (i = 10; i <= Zeilen * 6 + 4; i+=6) {
- gotoxy(10, i);
- cout<<k;
- k++;
- }
- Farbe(WEIß);
- for (i = 15; i <= Spalten * 10 + 15; i+=10) {
- for (k = 4; k <= Zeilen * 6 + 7; k++) {
- gotoxy(i, k);
- cout<<"#";
- }
- }
- for (i = 7; i <= Zeilen * 6 + 7; i+=6) {
- for (k = 10; k <= Spalten * 10 + 15; k++) {
- gotoxy(k, i);
- cout<<"#";
- }
- }
- if (x == 1 && counter == 0) {
- Legende(1);
- }
- else if (x == 2) {
- Legende(2);
- }
- else {
- Legende(3);
- }
- if (CheatMode == true && counter != 0 && x == 2) {
- Legende(4);
- }
- if (x == 1) {
- for (i = 0; i <= 3; i++) {
- if (Schiffe[i][0] != 0) {
- SchiffePlatzieren(Schiffe[i][0], Schiffe[i][1], GELB);
- }
- }
- for (i = 0; i <= Spalten * Zeilen - 1; i++) {
- if (SchüsseKI[i][0] != 0) {
- SchiffePlatzieren(SchüsseKI[i][0], SchüsseKI[i][1], BLAU);
- }
- }
- for (i = 0; i <= 3; i++) {
- if (TrefferKI[i][0] != 0) {
- SchiffePlatzieren(TrefferKI[i][0], TrefferKI[i][1], DUNKELROT);
- }
- }
- }
- else if (x == 2) {
- if (CheatMode == true) {
- for (i = 0; i <= 3; i++) {
- SchiffePlatzieren(SchiffeKI[i][0], SchiffeKI[i][1], TÜRKIS);
- }
- }
- for (i = 0; i <= Spalten * Zeilen - 1; i++) {
- if (Schüsse[i][0] != 0) {
- SchiffePlatzieren(Schüsse[i][0], Schüsse[i][1], BLAU);
- }
- }
- for (i = 0; i <= 3; i++) {
- if (Treffer[i][0] != 0) {
- SchiffePlatzieren(Treffer[i][0], Treffer[i][1], DUNKELROT);
- }
- }
- }
- counter++;
- }
- int getKey()
- {
- int result=_getch();
- if(result==0)
- result=256+_getch();
- else if(result==224)
- result=512+_getch();
- return result;
- }
- void CursorSichtbarkeit(int i) {
- CONSOLE_CURSOR_INFO info;
- HANDLE out;
- info.bVisible = i;
- info.dwSize = 1;
- out = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleCursorInfo( out, &info );
- }
- int Hauptmenü(int i) {
- int Auswahl;
- system("cls");
- CursorSichtbarkeit(0);
- Farbe(GRÜN);
- gotoxy(10, 5);
- cout<<" ____ ____ ___ __ __ ____ ___ ___";
- gotoxy(10, 6);
- cout<<" 6MMMMb/ 6MMMMb\\ `MM 68b 69MM 69MM `Mb( )d' `MM";
- gotoxy(10, 7);
- cout<<" 8P YM 6M' ` MM Y89 6M' ` 6M' ` YM. ,P MM";
- gotoxy(10, 8);
- cout<<"6M Y MM ____ MM __ ___ _MM__ _MM__ ____ `Mb d' ____ ___ __ ____ ____ ___ __ MM __ ____ ___ __";
- gotoxy(10, 9);
- cout<<"MM M M YM. 6MMMMb. MM 6MMb `MM MMMMM MMMMM 6MMMMb YM. ,P 6MMMMb `MM 6MM 6MMMMb\\ 6MMMMb `MM 6MMb MM d' 6MMMMb `MM 6MMb";
- gotoxy(10, 10);
- cout<<"MM M M YMMMMb 6M' Mb MMM9 `Mb MM MM MM 6M' `Mb `Mb d' 6M' `Mb MM69 \" MM' ` 6M' `Mb MMM9 `Mb MM d' 6M' `Mb MMM9 `Mb";
- gotoxy(10, 11);
- cout<<"MM M M `Mb MM `' MM' MM MM MM MM MM MM YM. ,P MM MM MM' YM. MM MM MM' MM MM d' MM MM MM' MM";
- gotoxy(10, 12);
- cout<<"MM MMMMMMM MMMMMMM MM MM MM MM MM MM MM MMMMMMMM `Mb d' MMMMMMMM MM YMMMMb MMMMMMMM MM MM MMdM. MMMMMMMM MM MM";
- gotoxy(10, 13);
- cout<<"YM 6 M M MM MM MM MM MM MM MM MM YM,P MM MM `Mb MM MM MM MMPYM. MM MM MM";
- gotoxy(10, 14);
- cout<<" 8b d9 M M L ,M9 YM. d9 MM MM MM MM MM YM d9 `MM' YM d9 MM L ,MM YM d9 MM MM MM YM. YM d9 MM MM";
- gotoxy(10, 15);
- cout<<" YMMMM9 M M MYMMMM9 YMMMM9 _MM_ _MM__MM__MM_ _MM_ YMMMM9 YP YMMMM9 _MM_ MYMMMM9 YMMMM9 _MM_ _MM__MM_ YM._ YMMMM9 _MM_ _MM_";
- Farbe(DUNKELROT);
- gotoxy(94, 37);
- cout<<"Hauptmenü";
- Farbe(DUNKELGRÜN);
- gotoxy(80, 40);
- cout<<"[ ] Spiel gegen Computer";
- gotoxy(80, 41);
- Farbe(DUNKELGRAU);
- cout<<"[ ] Spieler gegen Spieler (noch nicht implementiert)";
- gotoxy(80, 42);
- Farbe(DUNKELGRÜN);
- cout<<"[ ] Optionen";
- gotoxy(80, 43);
- cout<<"[ ] Info";
- gotoxy(80, 44);
- cout<<"[ ] Changelog";
- gotoxy(80, 45);
- cout<<"[ ] Beenden";
- gotoxy(81, 40 + i);
- cout<<"x";
- do {
- Auswahl = getKey();
- gotoxy(81, i + 40);
- cout<<" ";
- if (Auswahl == 592) {
- if (i == 2 || i == 3 || i == 4) {
- i++;
- }
- else if (i == 0) {
- i+=2;
- }
- }
- else if (Auswahl == 584) {
- if (i == 3 || i == 4 || i == 5) {
- i--;
- }
- else if (i == 2) {
- i-=2;
- }
- }
- gotoxy(81, i + 40);
- cout<<"x";
- } while (Auswahl != 13);
- return i;
- }
- void Info() {
- system("cls");
- Farbe(GRÜN);
- gotoxy(79, 5);
- cout<<" .S .S_sSSs sSSs sSSs_sSSs";
- gotoxy(79, 6);
- cout<<".SS .SS~YS%%b d%%SP d%%SP~YS%%b";
- gotoxy(79, 7);
- cout<<"S%S S%S `S%b d%S' d%S' `S%b";
- gotoxy(79, 8);
- cout<<"S%S S%S S%S S%S S%S S%S";
- gotoxy(79, 9);
- cout<<"S&S S%S S&S S&S S&S S&S";
- gotoxy(79, 10);
- cout<<"S&S S&S S&S S&S_Ss S&S S&S";
- gotoxy(79, 11);
- cout<<"S&S S&S S&S S&S~SP S&S S&S";
- gotoxy(79, 12);
- cout<<"S&S S&S S&S S&S S&S S&S";
- gotoxy(79, 13);
- cout<<"S*S S*S S*S S*b S*b d*S";
- gotoxy(79, 14);
- cout<<"S*S S*S S*S S*S S*S. .S*S";
- gotoxy(79, 15);
- cout<<"S*S S*S S*S S*S SSSbs_sdSSS";
- gotoxy(79, 16);
- cout<<"S*S S*S SSS S*S YSSP~YSSY";
- gotoxy(79, 17);
- cout<<"SP SP SP";
- gotoxy(79, 18);
- cout<<"Y Y Y";
- Farbe(DUNKELGRÜN);
- gotoxy(67, 40);
- cout<<"Programmiert von Leon Möller";
- gotoxy(67, 42);
- cout<<"Danke an alle aus der BGY12 IV GK Muckel für die Bugmeldungen!";
- gotoxy(67, 44);
- cout<<"ASCII Schriftzüge von: http://www.kammerl.de/ascii/AsciiSignature.php";
- gotoxy(67, 46);
- cout<<"Version 1.3 | 21.11.2013 21:22";
- gotoxy(65, 65);
- Farbe(ROT);
- cout<<"Drücken Sie eine beliebige Taste um zum Hauptmenü zurückzukehren...";
- _getch();
- }
- void Changelog() {
- system("cls");
- Farbe(GRÜN);
- gotoxy(52, 5);
- cout<<" sSSs .S S. .S_SSSs .S_sSSs sSSSSs sSSs S. sSSs_sSSs sSSSSs";
- gotoxy(52, 6);
- cout<<" d%%SP .SS SS. .SS~SSSSS .SS~YS%%b d%%%%SP d%%SP SS. d%%SP~YS%%b d%%%%SP";
- gotoxy(52, 7);
- cout<<"d%S' S%S S%S S%S SSSS S%S `S%b d%S' d%S' S%S d%S' `S%b d%S'";
- gotoxy(52, 8);
- cout<<"S%S S%S S%S S%S S%S S%S S%S S%S S%S S%S S%S S%S S%S";
- gotoxy(52, 9);
- cout<<"S&S S%S SSSS%S S%S SSSS%S S%S S&S S&S S&S S&S S&S S&S S&S";
- gotoxy(52, 10);
- cout<<"S&S S&S SSS&S S&S SSS%S S&S S&S S&S S&S_Ss S&S S&S S&S S&S";
- gotoxy(52, 11);
- cout<<"S&S S&S S&S S&S S&S S&S S&S S&S S&S~SP S&S S&S S&S S&S";
- gotoxy(52, 12);
- cout<<"S&S S&S S&S S&S S&S S&S S&S S&S sSSs S&S S&S S&S S&S S&S sSSs";
- gotoxy(52, 13);
- cout<<"S*b S*S S*S S*S S&S S*S S*S S*b `S%% S*b S*b S*b d*S S*b `S%%";
- gotoxy(52, 14);
- cout<<"S*S. S*S S*S S*S S*S S*S S*S S*S S% S*S. S*S. S*S. .S*S S*S S%";
- gotoxy(52, 15);
- cout<<" SSSbs S*S S*S S*S S*S S*S S*S SS_sSSS SSSbs SSSbs SSSbs_sdSSS SS_sSSS";
- gotoxy(52, 16);
- cout<<" YSSP SSS S*S SSS S*S S*S SSS Y~YSSY YSSP YSSP YSSP~YSSY Y~YSSY";
- gotoxy(52, 17);
- cout<<" SP SP SP";
- gotoxy(52, 18);
- cout<<" Y Y Y";
- gotoxy(54, 53);
- Farbe(DUNKELGRÜN);
- cout<<"Version 1.0: - Erstveröffentlichung";
- gotoxy(54, 48);
- cout<<"Version 1.1: - Bugfix: Nach Beenden eines Spiels kein weiteres Spiel ohne Fehler oder Neustart möglich";
- gotoxy(67, 49);
- cout<<"- Changelog hinzugefügt";
- gotoxy(67, 50);
- cout<<"- Versionsnummer aus Titel entfernt";
- gotoxy(67, 51);
- cout<<"- Cursor bleibt an Punkt im Hauptmenü, wenn man z. B. auf Info wechselt, bleibt der Cursor auf Info im Hauptmenü";
- gotoxy(54, 45);
- cout<<"Version 1.2: - Bugfix: Meldung: \"Dort haben Sie bereits hingeschossen\", obwohl das Feld frei war";
- gotoxy(67, 46);
- cout<<"- Optionsmenü, in dem man die Feldgröße einstellen kann, hinzugefügt";
- gotoxy(54, 40);
- cout<<"Version 1.3: - Bugfix: keine Schiffe nach 2tem Spiel an der selbem Position wie im ersten Spiel platzierbar";
- gotoxy(67, 41);
- cout<<"- Cheat Mode ins Optionsmenü verschoben";
- gotoxy(67, 42);
- cout<<"- Changelog invers sortiert";
- gotoxy(67, 43);
- cout<<"- gegnerische Schiffspositionen werden angezeigt, wenn man das Spiel verloren hat und der Cheat Mode ausgeschaltet ist";
- gotoxy(65, 65);
- Farbe(ROT);
- cout<<"Drücken Sie eine beliebige Taste um zum Hauptmenü zurückzukehren...";
- _getch();
- }
- void Optionen() {
- int i = 0, Auswahl, UnterAuswahl, Temp0, Temp1;
- system("cls");
- Farbe(GRÜN);
- gotoxy(54, 5);
- cout<<" sSSs_sSSs .S_sSSs sdSS_SSSSSSbs .S sSSs_sSSs .S_sSSs sSSs .S_sSSs";
- gotoxy(54, 6);
- cout<<" d%%SP~YS%%b .SS~YS%%b YSSS~S%SSSSSP .SS d%%SP~YS%%b .SS~YS%%b d%%SP .SS~YS%%b";
- gotoxy(54, 7);
- cout<<"d%S' `S%b S%S `S%b S%S S%S d%S' `S%b S%S `S%b d%S' S%S `S%b";
- gotoxy(54, 8);
- cout<<"S%S S%S S%S S%S S%S S%S S%S S%S S%S S%S S%S S%S S%S";
- gotoxy(54, 9);
- cout<<"S&S S&S S%S d*S S&S S&S S&S S&S S%S S&S S&S S%S S&S";
- gotoxy(54, 10);
- cout<<"S&S S&S S&S .S*S S&S S&S S&S S&S S&S S&S S&S_Ss S&S S&S";
- gotoxy(54, 11);
- cout<<"S&S S&S S&S_sdSSS S&S S&S S&S S&S S&S S&S S&S~SP S&S S&S";
- gotoxy(54, 12);
- cout<<"S&S S&S S&S~YSSY S&S S&S S&S S&S S&S S&S S&S S&S S&S";
- gotoxy(54, 13);
- cout<<"S*b d*S S*S S*S S*S S*b d*S S*S S*S S*b S*S S*S";
- gotoxy(54, 14);
- cout<<"S*S. .S*S S*S S*S S*S S*S. .S*S S*S S*S S*S. S*S S*S";
- gotoxy(54, 15);
- cout<<" SSSbs_sdSSS S*S S*S S*S SSSbs_sdSSS S*S S*S SSSbs S*S S*S";
- gotoxy(54, 16);
- cout<<" YSSP~YSSY S*S S*S S*S YSSP~YSSY S*S SSS YSSP S*S SSS";
- gotoxy(54, 17);
- cout<<" SP SP SP SP SP";
- gotoxy(54, 18);
- cout<<" Y Y Y Y Y";
- gotoxy(78, 35);
- Farbe(DUNKELROT);
- cout<<"Allgemein";
- gotoxy(78, 39);
- cout<<"Spielfeldgröße";
- Farbe(DUNKELGRÜN);
- gotoxy(80, 36);
- cout<<"[x] Cheat Mode:";
- gotoxy(104, 36);
- if (CheatMode == true) {
- cout<<"An";
- Temp0 = 1;
- }
- else {
- cout<<"Aus";
- Temp0 = 0;
- }
- Farbe(DUNKELGRÜN);
- gotoxy(80, 37);
- cout<<"[ ] Optionen speichern:";
- gotoxy(104, 37);
- if (Speichern == true) {
- cout<<"An";
- Temp1 = 1;
- }
- else {
- cout<<"Aus";
- Temp1 = 0;
- }
- gotoxy(80, 40);
- cout<<"[ ] Anzahl der Spalten:";
- gotoxy(104, 40);
- cout<<Spalten;
- gotoxy(80, 41);
- cout<<"[ ] Anzahl der Zeilen:";
- gotoxy(104, 41);
- cout<<Zeilen;
- gotoxy(74, 65);
- Farbe(ROT);
- cout<<"Drücken Sie ESC um zum Hauptmenü zurückzukehren...";
- Farbe(DUNKELGRÜN);
- do {
- do {
- Auswahl = getKey();
- gotoxy(81, i + 36);
- cout<<" ";
- if (Auswahl == 592) {
- if (i == 0) {
- i++;
- }
- else if (i == 1) {
- i+=3;
- }
- else if (i == 4) {
- i++;
- }
- }
- else if (Auswahl == 584) {
- if (i == 1) {
- i--;
- }
- else if (i == 4) {
- i-=3;
- }
- else if (i == 5) {
- i--;
- }
- }
- gotoxy(81, i + 36);
- cout<<"x";
- } while (Auswahl != 13 && Auswahl != 27);
- if (Auswahl != 27) {
- if (i == 4) {
- gotoxy(81, 40);
- Farbe(ROT);
- cout<<"x";
- gotoxy(104, 40);
- cout<<" ";
- gotoxy(104, 40);
- CursorSichtbarkeit(1);
- cin>>Spalten;
- CursorSichtbarkeit(0);
- Farbe(DUNKELGRÜN);
- gotoxy(104, 40);
- cout<<Spalten;
- gotoxy(81, 40);
- cout<<"x";
- }
- else if (i == 5) {
- gotoxy(81, 41);
- Farbe(ROT);
- cout<<"x";
- gotoxy(104, 41);
- cout<<" ";
- gotoxy(104, 41);
- CursorSichtbarkeit(1);
- cin>>Zeilen;
- CursorSichtbarkeit(0);
- Farbe(DUNKELGRÜN);
- gotoxy(104, 41);
- cout<<Zeilen;
- gotoxy(81, 41);
- cout<<"x";
- }
- else if (i == 0) {
- gotoxy(81, 36);
- Farbe(ROT);
- cout<<"x";
- Farbe(DUNKELGRÜN);
- do {
- UnterAuswahl = getKey();
- if (UnterAuswahl == 592 || UnterAuswahl == 584) {
- gotoxy(104, 36);
- cout<<" ";
- gotoxy(104, 36);
- if (Temp0 == 0) {
- cout<<"An";
- Temp0 = 1;
- }
- else if (Temp0 == 1) {
- cout<<"Aus";
- Temp0 = 0;
- }
- }
- } while (UnterAuswahl != 13 && UnterAuswahl != 27);
- if (UnterAuswahl == 13) {
- if (Temp0 == 0) {
- CheatMode = false;
- }
- else if (Temp0 == 1) {
- CheatMode = true;
- }
- }
- gotoxy(81, 36);
- Farbe(DUNKELGRÜN);
- cout<<"x";
- gotoxy(104, 36);
- cout<<" ";
- gotoxy(104, 36);
- if (CheatMode == true) {
- cout<<"An";
- Temp0 = 1;
- }
- else {
- cout<<"Aus";
- Temp0 = 0;
- }
- }
- else if (i == 1) {
- gotoxy(81, 37);
- Farbe(ROT);
- cout<<"x";
- Farbe(DUNKELGRÜN);
- do {
- UnterAuswahl = getKey();
- if (UnterAuswahl == 592 || UnterAuswahl == 584) {
- gotoxy(104, 37);
- cout<<" ";
- gotoxy(104, 37);
- if (Temp1 == 0) {
- cout<<"An";
- Temp1 = 1;
- }
- else if (Temp1 == 1) {
- cout<<"Aus";
- Temp1 = 0;
- }
- }
- } while (UnterAuswahl != 13 && UnterAuswahl != 27);
- if (UnterAuswahl == 13) {
- if (Temp1 == 0) {
- Speichern = false;
- }
- else if (Temp1 == 1) {
- Speichern = true;
- }
- }
- gotoxy(81, 37);
- Farbe(DUNKELGRÜN);
- cout<<"x";
- gotoxy(104, 37);
- cout<<" ";
- gotoxy(104, 37);
- if (Speichern == true) {
- cout<<"An";
- Temp1 = 1;
- }
- else {
- cout<<"Aus";
- Temp1 = 0;
- }
- }
- }
- } while (Auswahl != 27);
- }
- int _tmain(int argc, _TCHAR* argv[]) {
- srand((unsigned)time(NULL));
- setlocale(LC_ALL, "German");
- system("mode con:cols=197 lines=70");
- SetConsoleTitleA("C++ Schiffe Versenken");
- char Temp[20], lines[20];
- int i, k, A, M, N, O, P, HauptmenüCursor = 0;
- Pair Rückgabewert;
- fstream f;
- SHGetSpecialFolderPath(NULL, appdata, CSIDL_APPDATA, false);
- A = 0;
- i = 0;
- while (i <= MAX_PATH && A == 0) {
- if (appdata [i] == 52428 || appdata [i] == 0) {
- appdata [i] = '\\';
- appdata [i + 1] = 'C';
- appdata [i + 2] = '+';
- appdata [i + 3] = '+';
- appdata [i + 4] = ' ';
- appdata [i + 5] = 'S';
- appdata [i + 6] = 'c';
- appdata [i + 7] = 'h';
- appdata [i + 8] = 'i';
- appdata [i + 9] = 'f';
- appdata [i + 10] = 'f';
- appdata [i + 11] = 'e';
- appdata [i + 12] = ' ';
- appdata [i + 13] = 'V';
- appdata [i + 14] = 'e';
- appdata [i + 15] = 'r';
- appdata [i + 16] = 's';
- appdata [i + 17] = 'e';
- appdata [i + 18] = 'n';
- appdata [i + 19] = 'k';
- appdata [i + 20] = 'e';
- appdata [i + 21] = 'n';
- appdata [i + 22] = '\\';
- appdata [i + 23] = 'O';
- appdata [i + 24] = 'p';
- appdata [i + 25] = 't';
- appdata [i + 26] = 'i';
- appdata [i + 27] = 'o';
- appdata [i + 28] = 'n';
- appdata [i + 29] = 'e';
- appdata [i + 30] = 'n';
- appdata [i + 31] = '.';
- appdata [i + 32] = 'c';
- appdata [i + 33] = 'f';
- appdata [i + 34] = 'g';
- A = 1;
- }
- else {
- i++;
- }
- }
- appdata [i + 35] = 0;
- for (i = 0; i <= 19; i++) {
- lines[i] = 0;
- }
- if (!(ifstream (appdata))) {
- cout<<"File not found."<<endl;
- }
- else {
- i = 0;
- f.open(appdata, ios::in);
- while (!f.eof()) {
- f.getline(lines, sizeof(lines));
- if (i == 0) {
- Spalten = strtol(lines, (char**)0, 10);
- }
- else if (i == 1) {
- Zeilen = strtol(lines, (char**)0, 10);
- }
- else if (i == 2) {
- if ((strtol(lines, (char**)0, 10)) == 1) {
- CheatMode = true;
- }
- else {
- CheatMode = false;
- }
- }
- else if (i == 3) {
- if ((strtol(lines, (char**)0, 10)) == 1) {
- Speichern = true;
- }
- else {
- Speichern = false;
- }
- }
- i++;
- }
- f.close();
- }
- while (true) {
- counter = 0;
- M = 0;
- N = 0;
- O = 0;
- P = 0;
- for (k = 0; k <= 1; k++) {
- for (i = 0; i <= 135; i++) {
- Schüsse[i][k] = 0;
- SchüsseKI[i][k] = 0;
- }
- }
- for (k = 0; k <= 1; k++) {
- for (i = 0; i <= 3; i++) {
- Treffer[i][k] = 0;
- TrefferKI[i][k] = 0;
- }
- }
- for (k = 0; k <= 1; k++) {
- for (i = 0; i <= 3; i++) {
- Schiffe[i][k] = 0;
- SchiffeKI[i][k] = 0;
- }
- }
- do {
- A = 0;
- i = Hauptmenü(HauptmenüCursor);
- if (i == 0) {
- A = 1;
- }
- else if (i == 2) {
- Optionen();
- }
- else if (i == 3) {
- Info();
- }
- else if (i == 4) {
- Changelog();
- }
- else if (i == 5) {
- if (Speichern == true) {
- f.clear();
- f.open(appdata, ios::out);
- f<<Spalten<<endl;
- f<<Zeilen<<endl;
- f<<CheatMode<<endl;
- f<<Speichern<<endl;
- f.close();
- }
- else {
- DeleteFile(appdata);
- }
- return 0;
- }
- HauptmenüCursor = i;
- } while (A == 0);
- CursorSichtbarkeit(1);
- system("cls");
- Feld(1);
- for (i = 0; i <= 3; i++) {
- ZeileLöschen(57);
- gotoxy(10, 57);
- Farbe(ROT);
- cout<<"Platziere deine Schiffe!";
- ZeileLöschen(58);
- gotoxy(10, 58);
- Farbe(ROT);
- cout<<"Bitte geben Sie die Koordinaten Ihres ";
- Farbe(GELB);
- cout<<i + 1<<". Schiffes";
- Farbe(ROT);
- cout<<" ein: ";
- Farbe(GRÜN);
- do {
- Schiffe[i][0] = 0;
- Schiffe[i][1] = 0;
- A = 0;
- cin>>Temp;
- Rückgabewert = Koordinatenverarbeitung(Temp[0], Temp[1]);
- Schiffe[i][0] = Rückgabewert.Eins;
- Schiffe[i][1] = Rückgabewert.Zwei;
- if (Rückgabewert.Eins == 0 || Rückgabewert.Zwei == 0) {
- A = 1;
- ZeileLöschen(57);
- ZeileLöschen(58);
- Farbe(ROT);
- gotoxy(10, 57);
- cout<<"Sie haben ungültige Koordinaten eingegeben!";
- gotoxy(10, 58);
- cout<<"Wählen Sie andere Koordinaten: ";
- Farbe(GRÜN);
- }
- else if (Schiffe[i][0] > Spalten * 10 + 10 || Schiffe[i][1] > Zeilen * 6 + 4) {
- A = 1;
- ZeileLöschen(57);
- ZeileLöschen(58);
- Farbe(ROT);
- gotoxy(10, 57);
- cout<<"So groß ist das Spielfeld nicht!";
- gotoxy(10, 58);
- cout<<"Wählen Sie andere Koordinaten: ";
- Farbe(GRÜN);
- }
- if (A != 1) {
- for (k = 0; k <= 3; k++) {
- if (Schiffe[i][0] == Schiffe[k][0] && Schiffe[i][1] == Schiffe[k][1] && k != i) {
- A = 1;
- }
- }
- if (A != 1) {
- SchiffePlatzieren(Schiffe[i][0], Schiffe[i][1], GELB);
- }
- else {
- Farbe(ROT);
- ZeileLöschen(58);
- gotoxy(10, 57);
- cout<<"Auf den angegebenen Korrdinaten ist bereits ein Schiff platziert!";
- gotoxy(10, 58);
- cout<<"Wählen Sie andere Koordinaten: ";
- Farbe(GRÜN);
- }
- }
- } while (A == 1);
- }
- for (i = 0; i <= 3; i++) {
- do {
- A = 0;
- Temp[0] = rand() % Spalten + 65;
- Temp[1] = rand() % Zeilen + 49;
- Rückgabewert = Koordinatenverarbeitung(Temp[0], Temp[1]);
- SchiffeKI[i][0] = Rückgabewert.Eins;
- SchiffeKI[i][1] = Rückgabewert.Zwei;
- for (k = 0; k <= 3; k++) {
- if (SchiffeKI[i][0] == SchiffeKI[k][0] && SchiffeKI[i][1] == SchiffeKI[k][1] && k != i) {
- A = 1;
- }
- }
- } while (A == 1);
- }
- Sleep(3000);
- do {
- system("cls");
- Feld(2);
- do {
- if (A == 8) {
- for (i = 57; i <= 59; i++) {
- ZeileLöschen(i);
- }
- }
- A = 0;
- do {
- if (A == 0) {
- gotoxy(10, 57);
- Farbe(ROT);
- cout<<"Feuer frei!";
- gotoxy(10, 58);
- CursorSichtbarkeit(1);
- cout<<"Bitte wähle, wohin du schießen willst: ";
- }
- A = 0;
- Farbe(GRÜN);
- cin>>Temp;
- Rückgabewert = Koordinatenverarbeitung(Temp[0], Temp[1]);
- Schüsse[M][0] = Rückgabewert.Eins;
- Schüsse[M][1] = Rückgabewert.Zwei;
- for (i = 0; i <= Spalten * Zeilen - 1; i++) {
- if (Schüsse[M][0] == Schüsse[i][0] && Schüsse[M][1] == Schüsse[i][1] && M != i) {
- A = 1;
- ZeileLöschen(57);
- ZeileLöschen(58);
- Farbe(ROT);
- gotoxy(10, 57);
- cout<<"Dort haben Sie bereits hingeschossen!";
- gotoxy(10, 58);
- cout<<"Wählen Sie eine andere Koordinaten: ";
- Farbe(GRÜN);
- }
- }
- if (Rückgabewert.Eins == 0 || Rückgabewert.Zwei == 0) {
- A = 1;
- ZeileLöschen(57);
- ZeileLöschen(58);
- Farbe(ROT);
- gotoxy(10, 57);
- cout<<"Sie haben ungültige Koordinaten eingegeben!";
- gotoxy(10, 58);
- cout<<"Wählen Sie andere Koordinaten: ";
- Farbe(GRÜN);
- }
- else if (Schüsse[M][0] > Spalten * 10 + 10 || Schüsse[M][1] > Zeilen * 6 + 4) {
- A = 1;
- ZeileLöschen(57);
- ZeileLöschen(58);
- Farbe(ROT);
- gotoxy(10, 57);
- cout<<"So groß ist das Spielfeld nicht!";
- gotoxy(10, 58);
- cout<<"Wählen Sie andere Koordinaten: ";
- Farbe(GRÜN);
- }
- if (A == 1) {
- Schüsse[M][0] = 0;
- Schüsse[M][1] = 0;
- }
- } while (A == 1);
- CursorSichtbarkeit(0);
- A = 0;
- for (i = 0; i <= 3; i++) {
- if (Schüsse[M][0] == SchiffeKI[i][0] && Schüsse[M][1] == SchiffeKI[i][1]) {
- ZeileLöschen(57);
- ZeileLöschen(58);
- gotoxy(10, 57);
- Farbe(ROT);
- cout<<"___ __ __ __ __ __ __ ";
- gotoxy(10, 58);
- cout<<" | |__) |_ |_ |_ |_ |__)|";
- gotoxy(10, 59);
- cout<<" | | \\ |__ | | |__ | \\ . ";
- SchiffePlatzieren(Schüsse[M][0], Schüsse[M][1], DUNKELROT);
- Treffer[O][0] = Schüsse[M][0];
- Treffer[O][1] = Schüsse[M][1];
- O++;
- A+=4;
- }
- else if (A == 3) {
- ZeileLöschen(57);
- ZeileLöschen(58);
- gotoxy(10, 57);
- Farbe(BLAU);
- cout<<" __ __ __ __";
- gotoxy(10, 58);
- cout<<"| \\ /\\ |\\ | |_ |__) |_ |\\ | |";
- gotoxy(10, 59);
- cout<<"|__/ /--\\ | \\| |__ |__) |__ | \\| .";
- SchiffePlatzieren(Schüsse[M][0], Schüsse[M][1], BLAU);
- }
- A++;
- }
- Sleep(3000);
- M++;
- } while (A == 8 && O < 4);
- if (O < 4) {
- system("cls");
- Feld(1);
- do{
- if (A == 8) {
- ZeileLöschen(57);
- }
- gotoxy(10, 57);
- Farbe(ROT);
- cout<<"Gegner am Zug";
- Sleep(500);
- cout<<".";
- Sleep(500);
- cout<<".";
- Sleep(500);
- cout<<".";
- do {
- A = 0;
- Temp[0] = rand() % Spalten + 65;
- Temp[1] = rand() % Zeilen + 49;
- Rückgabewert = Koordinatenverarbeitung(Temp[0], Temp[1]);
- SchüsseKI[N][0] = Rückgabewert.Eins;
- SchüsseKI[N][1] = Rückgabewert.Zwei;
- for (i = 0; i <= Spalten * Zeilen - 1; i++) {
- if (SchüsseKI[N][0] == SchüsseKI[i][0] && SchüsseKI[N][1] == SchüsseKI[i][1] && N != i) {
- A = 1;
- }
- }
- } while (A == 1);
- for (i = 0; i <= 3; i++) {
- if (SchüsseKI[N][0] == Schiffe[i][0] && SchüsseKI[N][1] == Schiffe[i][1]) {
- ZeileLöschen(57);
- gotoxy(10, 57);
- Farbe(ROT);
- cout<<"Gegner hat auf "<<Temp[0]<<Temp[1]<<" geschossen und getroffen!";
- SchiffePlatzieren(SchüsseKI[N][0], SchüsseKI[N][1], DUNKELROT);
- TrefferKI[P][0] = SchüsseKI[N][0];
- TrefferKI[P][1] = SchüsseKI[N][1];
- P++;
- A+=4;
- }
- else if (A == 3) {
- ZeileLöschen(57);
- gotoxy(10, 57);
- Farbe(ROT);
- cout<<"Gegner hat auf "<<Temp[0]<<Temp[1]<<" geschossen und NICHT getroffen!";
- SchiffePlatzieren(SchüsseKI[N][0], SchüsseKI[N][1], BLAU);
- }
- A++;
- }
- N++;
- Sleep(3000);
- } while (A == 8 && P != 4);
- }
- } while (O < 4 && P < 4);
- CursorSichtbarkeit(0);
- if (O == 4) {
- system("cls");
- Farbe(GRÜN);
- gotoxy(52, 31);
- cout<<" ÛÛÛÛÛÛÛÛÛ ÛÛÛ";
- gotoxy(52, 32);
- cout<<" ÛÛÛ°°°°°ÛÛÛ °ÛÛÛ";
- gotoxy(52, 33);
- cout<<" ÛÛÛ °°° ÛÛÛÛÛÛ ÛÛÛÛÛ ÛÛÛ ÛÛÛÛÛ ÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛ °ÛÛÛ";
- gotoxy(52, 34);
- cout<<"°ÛÛÛ ÛÛÛ°°ÛÛÛ°°ÛÛÛ °ÛÛÛ°°ÛÛÛ ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ °°ÛÛÛ°°ÛÛÛ ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ °ÛÛÛ";
- gotoxy(52, 35);
- cout<<"°ÛÛÛ ÛÛÛÛÛ°ÛÛÛÛÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛÛÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ";
- gotoxy(52, 36);
- cout<<"°°ÛÛÛ °°ÛÛÛ °ÛÛÛ°°° °°ÛÛÛÛÛÛÛÛÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ°°° °ÛÛÛ °ÛÛÛ °°° ";
- gotoxy(52, 37);
- cout<<" °°ÛÛÛÛÛÛÛÛÛ °°ÛÛÛÛÛÛ °°ÛÛÛÛ°ÛÛÛÛ °°ÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛ°°ÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛ ÛÛÛ";
- gotoxy(52, 38);
- cout<<" °°°°°°°°° °°°°°° °°°° °°°° °°°°°° °°°° °°°°° °°°° °°°°° °°°°°° °°°° °°°°° °°° ";
- }
- else {
- if (CheatMode == false) {
- system("cls");
- Feld(2);
- Legende(4);
- for (i = 0; i <= 3; i++) {
- SchiffeKInichtgetroffen[i][0] = 0;
- SchiffeKInichtgetroffen[i][1] = 0;
- SchiffeKIgetroffen[i][0] = 0;
- SchiffeKIgetroffen[i][1] = 0;
- }
- A = 0;
- for (i = 0; i <= 3; i++) {
- for (k = 0; k <= 3; k++) {
- if (SchiffeKI[i][0] == Treffer[k][0] && SchiffeKI[i][1] == Treffer[k][1]) {
- SchiffeKIgetroffen[A][0] = SchiffeKI[i][0];
- SchiffeKIgetroffen[A][1] = SchiffeKI[i][1];
- A++;
- }
- }
- }
- A = 0;
- for (i = 0; i <= 3; i++) {
- for (k = 0; k <= 3; k++) {
- if (SchiffeKI[i][0] != SchiffeKIgetroffen[k][0] && SchiffeKI[i][1] != SchiffeKIgetroffen[k][1] && SchiffeKIgetroffen[k][0] != 0) {
- SchiffeKInichtgetroffen[A][0] = SchiffeKI[i][0];
- SchiffeKInichtgetroffen[A][1] = SchiffeKI[i][1];
- A++;
- }
- }
- }
- for (k = 0; k <= 4; k++) {
- for (i = 0; i <= 3; i++) {
- if (SchiffeKInichtgetroffen[i][0] != 0 && SchiffeKInichtgetroffen[i][1] != 0) {
- SchiffePlatzieren(SchiffeKInichtgetroffen[i][0], SchiffeKInichtgetroffen[i][1], SCHWARZ);
- }
- }
- Sleep(500);
- for (i = 0; i <= 3; i++) {
- if (SchiffeKInichtgetroffen[i][0] != 0 && SchiffeKInichtgetroffen[i][1] != 0) {
- SchiffePlatzieren(SchiffeKInichtgetroffen[i][0], SchiffeKInichtgetroffen[i][1], TÜRKIS);
- }
- }
- Sleep(1000);
- }
- Sleep(1000);
- }
- system("cls");
- Farbe(LILA);
- gotoxy(58, 31);
- cout<<" ÛÛÛÛÛ ÛÛÛÛÛ ÛÛÛÛ ÛÛÛ";
- gotoxy(58, 32);
- cout<<"°°ÛÛÛ °°ÛÛÛ °°ÛÛÛ °ÛÛÛ";
- gotoxy(58, 33);
- cout<<" °ÛÛÛ °ÛÛÛ ÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛ °ÛÛÛ ÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛ °ÛÛÛ";
- gotoxy(58, 34);
- cout<<" °ÛÛÛ °ÛÛÛ ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ °ÛÛÛ ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ °ÛÛÛ";
- gotoxy(58, 35);
- cout<<" °°ÛÛÛ ÛÛÛ °ÛÛÛÛÛÛÛ °ÛÛÛ °°° °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °°° °ÛÛÛÛÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ";
- gotoxy(58, 36);
- cout<<" °°°ÛÛÛÛÛ° °ÛÛÛ°°° °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ°°° °ÛÛÛ °ÛÛÛ °°°";
- gotoxy(58, 37);
- cout<<" °°ÛÛÛ °°ÛÛÛÛÛÛ ÛÛÛÛÛ ÛÛÛÛÛ°°ÛÛÛÛÛÛ ÛÛÛÛÛ °°ÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛ ÛÛÛ";
- gotoxy(58, 38);
- cout<<" °°° °°°°°° °°°°° °°°°° °°°°°° °°°°° °°°°°° °°°° °°°°° °°°";
- }
- gotoxy(65, 50);
- Farbe(ROT);
- cout<<"Drücken Sie eine beliebige Taste um zum Hauptmenü zurückzukehren...";
- _getch();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment