Ping Pong Fertig



  • Keiner hätte es geglaubt, aber es Funtkioniert auch im Banalen C, wenn jemand seinen spaß drann haben will xD

    #include <conio.h>		//Einbindung von conio.h für die Funktion getch()
    #include <iostream>     //Einbindung von iostream für die Funktionen cin und cout
    #include <windows.h>    //Einbindung von windows.h für die Funktion PlaySoundA sowie GetKeyState
    #include <mmsystem.h>	//Einbindung von mmystem.h für die Funktion PlaySoundA
    #pragma comment(lib,"winmm.lib") //Die library winmm.lib wird eingebunden(genaure Erklärung zufinden in der schriftlichen Ausarbeitung)
    
    using namespace std;	//namespace std; Deklaration
    
    /*"using namespace std" ist eine Direktive. 
    Im Gueltigkeitsbereich der Datei wird der Namensbereich (namespace)
    mit dem Namen std zur Verfügung (using) gestellt.
    Man kann dies auch weglassen, dann müsste man aber überall cout durch std::cout ersetzen, 
    weil die globale Variable cout zum Namensbereich std gehört. 
    Mit dieser Direktvie tut man das einfach gesagtdem Compiler vorher sagen"*/
    
    void spiel();			//Hauptfunktion des Spieles hier wird das Spiel aufgerufen
    void start();           //Logo-Ausgabe und Eingabefunktion zur Auswahl
    void spielfeld();       //Deklaration des Spielfeld-Array, Wiederholung so wie Abfrage der Bewegungen
    
    void bewegung1(char spielfeld[21][51], int &y);		 //Bewegungs Szenario 1
    void bewegung2(char spielfeld[21][51], int &y);		 //Bewegungs Szenario 2
    void bewegung3(char spielfeld[21][51], int &y);		 //Bewegungs Szenario 3
    void bewegung4(char spielfeld[21][51], int &y);		 //Bewegungs Szenario 4		
    void bewegung5(char spielfeld[21][51], int &y);		 //Bewegungs Szenario 5
    void bewegung6(char spielfeld[21][51], int &y);		 //Bewegungs Szenario 6
    void bewegung7(char spielfeld[21][51], int &y);		 //Bewegungs Szenario 7
    void bewegung8(char spielfeld[21][51], int &y);		 //Bewegungs Szenario 8
    void spielfeldausgabe(char spiel[20][51]);			 //Ausgabe des (manipulierten) Spielfeld-Arrays.
    void spielerbewegung(char spielfeld[21][51], int &y);//Eingabefunktion des Spielers
    void verloren(int *pscore);			//Ausgabe des Punkte-Standes und Bewertung
    void highscore(int *pscore);        //Komplette Ausgabe des Highscores 
    void highscoreausgabe();
    void lesen(int &a, int &b, int &c);
    void vergleich(int *punkte,int &a, int &b, int &c);
    void speichern(int feld0,int feld1,int feld2);
    void abschluss();			          //Funktion zur Beendung des Spieles
    void bildhalten();				      //Funktion um das Spiel anzuhalten und das Fenster offen zu halten 
    
    void main()
    {
    	spiel();		//Funktion void spiel() wird Aufgerufen
    
    }
    void spiel()
    {
    	start();		//Funktion void start() wird Aufgerufen
    
    }
    void start()
    {
    	int wahl;						//Wert wahl wird deklariert																
    	char ponglogo[18][56]=			//pong logo wird deklariert und initialisiert
    {
    (" *     *           *         *       *          *      "),
    ("  _____  _    *         *   _____         *            "),
    (" |  __  (_)         *      |  __    *               *  "),
    (" | |__) | |_ __   __ _     | |__) |___  _ __   __ _    "),
    (" |  ___/| |  _   / _  |    |  ___// _  |  _   / _  |   "),
    (" | |    | | | | | (_| | *  | |   | (_) | | | | (_| |   "),
    (" |_|  * |_|_| |_| __, |    |_|     ___/|_| |_| __, |   "),
    ("  *               __/ |        *               __/ |   "),
    ("             *   |___/   *                    |___/  * "),
    ("  *                               *       *            "),
    ("  _____  *         *                  _ _     _   *    "),
    (" |_   _|    *          *     *       (_) |   | |       "),
    ("   | |  _ __ ___  _ __   ___  ___ ___ _| |__ | | ___ * "),
    ("   | | |  _   _  |  _   / _  / __/ __| |  _  | |/ _    "),
    ("  _| |_| | | | | | |_) | (_)  __  __   | |_) | |  __/  "),
    (" |_____|_| |_| |_|  __/  ___/|___/___/_|_ __/|_| ___|  "),
    ("  *      *       | |      *        *      *       *    "),
    ("      *     *    |_|  *      *        *      *         ") 
    };
    
    	system("cls");												 //Bildschirm wird gelöscht	
    	cout<<endl;
    			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 9);
    	for(int x=0;x<=17;x++)										 //For Schleife Zählt 18 Spalten hoch
    	{
    		for(int y=0;y<=55;y++)									 //For Schleife zählt 56 Zeilen hoch
    		{
    		cout<<ponglogo[x][y];									 //Spalte x und Zeile y wird ausgegeben
    		}
    		cout<<endl;												 //Springt in die nächste Zeile
    	}
    
    	PlaySoundA("intro.wav",NULL,SND_LOOP|SND_ASYNC);			 //Wave Datei Intro wird aufgerufen/abgespielt in einer Daurschleife	
    	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 4); //Funktion zur Ausgabe eines farbigen Textes[ROT]
    
    	cout<<endl<<endl<<endl<<endl<<" Spielstart = 1   Highscore = 2   Spiel beenden = 3  "; 
    		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);  //Funktion zur Ausgabe eines farbigen Textes[WEIS]
    	cin>>wahl;													   //Werteingabe zur Wahl des Modus	
    
    	PlaySoundA("leer.wav", NULL,SND_ASYNC);						   //Beendung des Sound Intros durch leere wave
    
    	switch(wahl)				//setzt die Bedinung für die Variable wahl
    	{
    	case 1:
    		system("cls");
    		spielfeld();			//Bei Eingabe 1: wird das "Hauptspiel" aufgerufen
    		break;
    	case 2:
    		 system("cls");
    		 highscoreausgabe();
    				    //Bei Eingabe 2: wird der Highscore aufgerufen
    		 break;
    
    	case 3:
    		system("cls");
    		abschluss();			//Bei Eingabe 3: Spielende
    		break;
    
    	default:					//Bei Eingabe einer nicht angegeben Zahl 
    		system("cls");	
    	    char falscheingabe[500]=//Falscheingabe vom Typ Char wird deklariert und anschl. initialisiert. 
    		{                                                                                                                                   
    			".___   .      .       .___          .     \n"
    			"[__  _.| __ _.|_  _   [__ *._  _  _.|_  _ \n"
    			"|   (_]|_) (_.[ )(/_  [___|[ )(_](_][_)(/_\n"
    			"                              ._|			\n"
    		};
    
    		cout<<falscheingabe<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<"Sie haben leider eine falsche Eingabe getaetigt"<<endl<<endl<<"Dr"<<char(129)<<"cken Sie eine Taste und versuchen Sie es nochmal...";
    								//Logo Falscheingabe sowie folgender Text werden ausgegeben 
    		getch();				//Wartet auf eine eingabe
    		start();				//Widerholt die Funktion start
    
    	}
    
    }
    void spielfeld()
    {
    
    	char spielfeld [21][51]=		//Ein Array namens Spielfeld mit dem Datentyp Char wird deklariert 21 Spalten und 51 Zeilen 
    	{
    		("                                                  "),
    		("                         |                        "),                                              
    	    ("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                         |                        "), 
    		("                                                  "),
    		("                                                  "),	
    	};
    
    	int *pscore;		    //Pointer für Den Punktestand wird deklariert
    	int wert=0;		        //Die Variable Wert wird mit der Zahl 0 Deklariert
    	int x=1;			    //Bedingung der Whilschleife wird auf 1 gesetzt
    	int iy = 1;
    	int &y = iy;
    	int vorgang=1;			//Hilfsvariable um einen stufenweisen Vorgang abzuarbeiten
    	pscore=&wert;           //Der Pointer Score zeigt auf die Adresse der Variable Wert (*pointer=0)
    
    	spielfeld[1][2]='|'; spielfeld[2][2]='|'; spielfeld[1][47]='|'; spielfeld[2][47]='|'; spielfeld[1][3]='o';
    												//Es werden Schläger und Ball in das Array gespeichert
    	while(x==1)									//While Schleife mit der Bedingung x=1(Schläger an Pos1) wird ausgeführt
    	{
    
    		if(spielfeld[1][2]=='|' && vorgang==1)		//Abfrage des Spieler-Schlägers und Stufe(1)
    		{											//Wenn die Bedingung erfüllt ist:	
    			*pscore=*pscore+8;						//Pointer score wird +8 hochgezählt	
    			bewegung1(spielfeld,y);					//Bewegung 1 wird ausgeführt, das Spielfeld und der Wert y(SchlägerKoordinate) wird übergeben
    			bewegung2(spielfeld,y);					//Bewegung 2 wird ausgeführt, das Spielfeld und der Wert y(SchlägerKoordinate) wird übergeben	
    			vorgang=2;								//Vorgang (Stufe) wird mit dem Wert 2 initliaisert
    		}
    		else
    		{
    			x=0;									//Unterbricht die While-Schleife falls Bedinung nicht erfüllt wird
    		}
    
    		if(spielfeld[9][2]=='|' && vorgang==2)		//Abfrage des Spieler-Schlägers und Stufe(2)
    		{											//Wenn die Bedingung erfüllt ist:	
    			*pscore=*pscore+8;						//Pointer score wird +8 hochgezählt	
    			bewegung3(spielfeld,y);					//Bewegung 3 wird ausgeführt, das Spielfeld und der Wert y(SchlägerKoordinate) wird übergeben
    			bewegung4(spielfeld,y);					//Bewegung 4 wird ausgeführt, das Spielfeld und der Wert y(SchlägerKoordinate) wird übergeben
    			vorgang=3;								//Vorgang (Stufe) wird mit dem Wert 3 initliaisert
    		}
    		else
    		{				
    			x=0;									//Unterbricht die While-Schleife falls Bedinung nicht erfüllt wird
    		}
    
    		if	(spielfeld[17][2]=='|' && vorgang==3)	//Abfrage des Spieler-Schlägers und Stufe(3)
    		{											//Wenn die Bedingung erfüllt ist:							    
    			*pscore=*pscore+8;						//Pointer score wird +8 hochgezählt	
    			bewegung5(spielfeld,y);					//Bewegung 5 wird ausgeführt, das Spielfeld und der Wert y(SchlägerKoordinate) wird übergeben
    			bewegung6(spielfeld,y);					//Bewegung 6 wird ausgeführt, das Spielfeld und der Wert y(SchlägerKoordinate) wird übergeben
    			vorgang=4;								//Vorgang (Stufe) wird mit dem Wert 4 initliaisert
    		}
    		else
    		{			
    			x=0;									//Unterbricht die While-Schleife falls Bedinung nicht erfüllt wird
    
    		}
    		if (spielfeld[5][2]=='|' && vorgang==4) 	//Abfrage des Spieler-Schlägers und Stufe(4)
    		{											//Wenn die Bedingung erfüllt ist:   
    			*pscore=*pscore+8;						//Pointer score wird +8 hochgezählt	
    			bewegung7(spielfeld,y);					//Bewegung 7 wird ausgeführt, das Spielfeld und der Wert y(SchlägerKoordinate) wird übergeben
    			bewegung8(spielfeld,y);					//Bewegung 8 wird ausgeführt, das Spielfeld und der Wert y(SchlägerKoordinate) wird übergeben
    			vorgang=1;								//Vorgang (Stufe) wird mit dem Wert 1 initliaisert
    		}
    		else
    		{
    				x=0;								//Unterbricht die While-Schleife falls Bedinung nicht erfüllt wird
    		}
    	}
    	verloren(pscore);								//Ruft die Funktion verloren auf und übergibt die Variable pscore(pointer)
    
    }			
    
    void bewegung1(char spielfeld[21][51], int &y)
    {
    	PlaySoundA("pong.wav", NULL,SND_ASYNC);		//Funktion spielt Ball-Schläger Konfrontation ab
    	spielfeld[1][47]='|';					//Gegenspieler Schläger(1) wird auf Spalte 1 Zeile 47 gezeichnet
    	spielfeld[2][47]='|';					//Gegenspieler Schläger(2) wird auf Spalte 2 Zeile 47 gezeichnet	
    	for(int x=0;x<=43;x++)					//For Schleife zälht in 44 Schritten den Wert +1 hoch
    	{
    
    		spielerbewegung(spielfeld,y);		//Spielfeldbewegung zur Manipulation der Schläger wird aufgerufen Wert y wird übergeben
    
    		spielfeld[1][3+x]='o';				//Ball "o" wird in das Array geschrieben und durch x Wert erhöt	
    		if (x != 0) spielfeld[1][2+x]=' ';	//Der Ball "o" wird wieder gelöscht 
    		if (x == 22 || x == 23) spielfeld[1][25]='|'; //Spielfeldlinie(mittig) wird bei der Konfrontation mit dem Ball überpsprungen => Linie bleibt erhalten
    		spielfeldausgabe(spielfeld);		// Spielfeld wird ausgegeben "gezeichnet"
    	}
    }
    void bewegung2(char spielfeld[21][51], int &y)
    {
    	PlaySoundA("pong.wav", NULL,SND_ASYNC); 
    	for (int x=0;x<=43;x++)
    	{
    		spielerbewegung(spielfeld,y);
    		if(x==0)
    		{
    			spielfeld[2][47]='|';
    			spielfeld[1][46]=' ';
    		}
    		if(x<=5)
    		{
    			spielfeld[2][45-x]='o';
    			spielfeld[2][46-x]=' ';
    			spielfeld[2][47]='|';
    			if(x==5)
    			{
    				spielfeld[2][40]=' ';
    			}
    		}
    		if (x>5 && x<=10)
    		{
    			spielfeld[3][46-x]='o';
    			spielfeld[3][47-x]=' ';
    
    			if(x==10)
    			{
    				spielfeld[3][36]=' ';
    			}
    		}
    		if(x>10 && x<=15)
    		{
    			spielfeld[4][46-x]='o';
    			spielfeld[4][47-x]=' ';
    
    			if(x==15)
    			{
    				spielfeld[4][31]=' ';
    			}
    		}
    		if(x>15 && x<=20)
    		{
    			spielfeld[5][46-x]='o';
    			spielfeld[5][47-x]=' ';
    
    			if(x==20)
    			{
    				spielfeld[5][26]=' ';
    			}
    
    		}
    		if(x>20 && x<=25)
    		{
    			spielfeld[6][46-x]='o';
    			spielfeld[6][47-x]=' ';
    			spielfeld[6][25]='|';
    
    			if(x==25)
    			{
    				spielfeld[6][21]=' ';
    			}
    		}
    		if(x>25 && x<=30)
    		{
    			spielfeld[7][46-x]='o';
    			spielfeld[7][47-x]=' ';
    
    			if(x==30)
    			{
    				spielfeld[7][16]=' ';
    			}
    		}
    		if(x>30 && x<=35)
    		{
    			spielfeld[8][46-x]='o';
    			spielfeld[8][47-x]=' ';
    
    			if(x==35)
    			{
    				spielfeld[8][11]=' ';
    			}
    		}
    		if(x>35 && x<=43)
    		{
    			spielfeld[9][46-x]='o';
    			spielfeld[9][47-x]=' ';
    
    			if(x==43)
    			{
    				spielfeld[9][3]=' ';
    			}
    		}	
    		spielfeldausgabe(spielfeld);
    	}
    }
    void bewegung3(char spielfeld[21][51], int &y)
    {
    	PlaySoundA("pong.wav", NULL,SND_ASYNC); 
    	for(int x=0;x<=43;x++)
    	{
    		spielerbewegung(spielfeld,y);
    		if(x<=15)
    		{
    			spielfeld[0+x][47]= ' ';
    			// spielfeld[1+x][47]= ' ';	// ? oO, wegen nächster Zeile überflüssig
    			spielfeld[1+x][47]= '|';
    			spielfeld[2+x][47]= '|';
    		}
    		if(x<=5)
    		{
    			spielfeld[10][3+x]='o';
    			spielfeld[10][2+x]=' ';
    			if(x==5)
    			{
    				spielfeld[10][8]=' ';
    			}
    		}
    		if(x>5 && x<=10)
    		{
    			spielfeld[11][3+x]='o';
    			spielfeld[11][2+x]=' ';
    			if(x==10)
    			{
    				spielfeld[11][13]=' ';
    			}
    		}
    		if(x>10 && x<=15)
    		{
    			spielfeld[12][3+x]='o';
    			spielfeld[12][2+x]=' ';
    			if(x==15)
    			{
    				spielfeld[12][18]=' ';
    			}
    		}
    		if(x>15 && x<=20)
    		{
    			spielfeld[13][3+x]='o';
    			spielfeld[13][2+x]=' ';
    			if(x==20)
    			{
    				spielfeld[13][23]=' ';
    			}
    		}
    		if(x>20 && x<=25)
    		{
    			spielfeld[14][3+x]='o';
    			spielfeld[14][2+x]=' ';
    			spielfeld[14][25]='|';
    			if(x==25)
    			{
    				spielfeld[14][28]=' ';
    			}
    		}
    		if(x>25 && x<=30)
    		{
    			spielfeld[15][3+x]='o';
    			spielfeld[15][2+x]=' ';
    			if(x==30)
    			{
    				spielfeld[15][33]=' ';
    			}
    		}
    		if(x>30 && x<=35)
    		{
    			spielfeld[16][3+x]='o';
    			spielfeld[16][2+x]=' ';
    			if(x==35)
    			{
    				spielfeld[16][38]=' ';
    			}
    		}
    		if(x>35 && x<=43)
    		{
    			spielfeld[17][3+x]='o';
    			spielfeld[17][2+x]=' ';
    		}
    
    		spielfeldausgabe(spielfeld);
    	}
    }
    void bewegung4(char spielfeld[21][51], int &y)
    {
    	PlaySoundA("pong.wav", NULL,SND_ASYNC); 
    	//	spielfeld[16][47]= '|'; spielfeld[17][47]= '|'; // Stand nach bewegung3
    	for(int x=0;x<=43;x++)
    	{
    		spielerbewegung(spielfeld,y);
    		spielfeld[17][46-x]='o';
    		if (x != 0) spielfeld[17][47-x]=' ';
    		if (x == 21 || x == 22) spielfeld[17][25]='|';
    
    		if(x==43)
    		{
    			spielfeld[17][3]=' ';
    		}
    		spielfeldausgabe(spielfeld);
    	}
    }
    void bewegung5(char spielfeld[21][51], int &y)
    {PlaySoundA
    	("pong", NULL,SND_ASYNC); 
    	// spielfeld[16][47]= '|'; spielfeld[17][47]='|';	// Stand nach bewegung3 & 4
    	for(int x=0; x<=41; x++)	// 43?..
    	{
    		spielerbewegung(spielfeld,y);
    		if (0 <= x && x<= 2) {
    				spielfeld[17][4+x]='o';
    				if (x != 0) spielfeld[17][3+x]=' ';
    		}
    		if (3 <= x && x <= 10) {
    			if (x == 3) spielfeld[17][6]=' ';
    			spielfeld[16][4+x]='o';
    			spielfeld[16][3+x]=' ';
    		}
    		if (11 <= x && x <= 12) {
    			if (x == 11) {
    				spielfeld[16][14]=' ';	// in dem 2. []: 3+x = 14
    				spielfeld[15][15]='o';	// in dem 2. []: 4+x = 15
    
    				spielfeld[17][47]=' ';
    				spielfeld[15][47]='|';
    			}
    			if (x == 12) {
    				spielfeld[15][15]=' ';
    				spielfeld[14][16]='o';
    
    				spielfeld[16][47]=' ';
    				spielfeld[14][47]='|';
    			}
    		}
    		if (13 <= x && x <= 20) {
    			if (x == 13) {
    				spielfeld[14][16]=' ';	// um 'o' aus vorheriger if bei x == 12 zu entfernen
    				spielfeld[15][47]=' ';	// PC-'|'-Bewegung, aufgeteilt
    				spielfeld[13][47]='|';	// 15-x-3 = 12-x  &  geht von 12 bis 5
    			}			
    			spielfeld[13][4+x]='o';	// 4+13=17 bis 4+20=24
    			spielfeld[13][3+x]=' ';	// 3+13=16 bis 3+20=23
    		}
    		if (21 <= x && x <= 22) {
    			if (x == 21) {
    				spielfeld[13][24]=' ';
    				spielfeld[12][26]='o';
    				spielfeld[14][47]=' ';
    				spielfeld[12][47]='|';
    			}
    			if (x == 22) {
    				spielfeld[12][26]=' ';
    				spielfeld[11][27]='o';
    				spielfeld[13][47]=' ';
    				spielfeld[11][47]='|';
    			}
    		}
    		if (23 <= x && x <= 30) {
    			if (x == 23) {
    				spielfeld[11][27]=' ';
    				spielfeld[12][47]=' ';
    				spielfeld[10][47]='|';
    			}
    			spielfeld[10][5+x]='o';
    			spielfeld[10][4+x]=' ';
    		}
    		if (31 <= x && x <= 32) {
    			if (x == 31) {
    				spielfeld[10][35]=' ';
    				spielfeld[9][36]='o';
    				spielfeld[11][47]=' ';
    				spielfeld[9][47]='|';
    			}
    			if (x == 32) {
    				spielfeld[8][37]='o';
    				spielfeld[9][36]=' ';
    				spielfeld[10][47]=' ';
    				spielfeld[8][47]='|';
    			}
    		}
    		if (33 <= x && x <= 36) {
    			if (x == 33) {
    				spielfeld[8][37]=' ';
    				spielfeld[9][47]=' ';
    				spielfeld[7][47]='|';
    			}
    			spielfeld[7][5+x]='o';
    			spielfeld[7][4+x]=' ';
    		}
    		if (37 <= x && x <= 41) {
    			if (x == 37) {
    				spielfeld[7][41]=' ';
    				spielfeld[6][42]='o';
    				spielfeld[8][47]=' ';
    				spielfeld[6][47]='|';
    			}
    			if (x == 38) {
    				spielfeld[6][42]=' ';
    				spielfeld[5][43]='o';
    				spielfeld[7][47]=' ';
    				spielfeld[5][47]='|';
    			}
    			if (39 <= x && x <= 41) {
    				spielfeld[5][4+x]=' ';	// 4+39 = 43
    				spielfeld[5][5+x]='o';	// 5+39 = 44
    			}
    		}
    		spielfeldausgabe(spielfeld);
    	}
    }
    void bewegung6(char spielfeld[21][51], int &y)
    {
    	PlaySoundA("pong.wav", NULL,SND_ASYNC); 
    	// spielfeld[5][47]='|'; spielfeld[6][47]='|';	// stand nach bewegung5
    	for(int x=0;x<=43;x++)
    	{
    		spielerbewegung(spielfeld,y);
    
    		/* spielfeld[5][25]='|';	// in Mitte wurde '|' nicht zu 'o'
    		spielfeld[5][46-x]='o';	// 'o' bis zu [5][46] (auf [5][47] ist erst der PC-'|')
    		if (x != 0 && x != 22) spielfeld[5][47-x]=' ';	// sonst bei x = 0 ggf. PC-'|' zu ' ' und bei x = 22 Mitte-'|' nicht zu ' '
    		*/
    
    		spielfeld[5][46-x]='o';	// 'o' bis zu [5][46] (auf [5][47] ist erst der PC-'|')
    		if (x != 0) spielfeld[5][47-x]=' ';	// sonst bei x = 0 ggf. PC-'|' zu ' '
    		spielfeld[5][25]='|';	// 'o' und ' ' in Mitte immer überschrieben
    
    		spielfeldausgabe(spielfeld);
    	}
    }
    void bewegung7(char spielfeld[21][51], int &y)
    {
    	PlaySoundA("pong.wav", NULL,SND_ASYNC); 
    	// spielfeld[5][47]='|'; spielfeld[6][47]='|';	// Stand nach bewegung5 & 6
    	for(int x=0;x<=43;x++)
    	{
    		spielerbewegung(spielfeld,y);
    		if(x<=8)
    		{
    			spielfeld[5][3+x]='o';
    			spielfeld[5][2+x]=' ';
    		}
    		if(x>8 && x<=16)
    		{
    			if (x == 9)	spielfeld[5][11]=' '; 
    			spielfeld[6][3+x]='o';
    			spielfeld[6][2+x]=' ';
    		}
    		if(x>16 && x<=24)
    		{
    			if (x == 17) spielfeld[6][19]=' ';
    			spielfeld[7][3+x]='o';
    			spielfeld[7][2+x]=' ';
    			spielfeld[7][25]='|';	
    		}
    		if(x>24 && x<=32)
    		{
    			if (x == 25) {
    				spielfeld[7][27]=' ';
    
    				spielfeld[5][47]=' ';
    				spielfeld[6][47]=' ';	// PC-'|' von 5/6 nach 9/10 in einem Zug? oO
    				spielfeld[9][47]='|';
    				spielfeld[10][47]='|';
    			}
    			spielfeld[8][3+x]='o';
    			spielfeld[8][2+x]=' ';
    		}
    		if(x>32 && x<=43)
    		{
    			if (x == 33) spielfeld[8][35]=' ';
    			spielfeld[9][3+x]='o';
    			spielfeld[9][2+x]=' ';
    		}
    		spielfeldausgabe(spielfeld);
    	}
    }
    void bewegung8(char spielfeld[21][51], int &y)
    {
    	PlaySoundA("pong.wav", NULL,SND_ASYNC); 
    	// spielfeld[9][47]='|'; spielfeld[10][47]='|'; // Stand nach bewegung7
    
        for (int x=0;x<=43;x++)	// erst for (int x=0;x<=47;x++), aber unten max. bis if (x == 43) ...
        {
    		spielerbewegung(spielfeld,y);
            if(x<=6)
            {
              	spielfeld[9][46-x]='o';
          		if (x != 0) spielfeld[9][47-x]=' ';
            }  
    		if(x>6 && x<=12)
    		{
    			if (x == 7) {
    				spielfeld[9][40]=' ';
    				spielfeld[8][47]='|';  
    				spielfeld[10][47]=' ';
    			}
                spielfeld[8][46-x]='o';
                spielfeld[8][47-x]=' ';
            }            
            if(x>12 && x<=18)
    		{
    			if (x == 13) {
    				spielfeld[8][34]=' ';
    				spielfeld[7][47]='|';  
    				spielfeld[9][47]=' ';
    			}
                spielfeld[7][46-x]='o';
                spielfeld[7][47-x]=' ';
            }           
            if(x>18 && x<=20)
    		{
    			if (x == 19) {
    				spielfeld[7][28]=' ';
    				spielfeld[6][47]='|';  
    				spielfeld[8][47]=' ';
    			}
    			spielfeld[6][46-x]='o';
                spielfeld[6][47-x]=' '; 
            }
    		if (x == 21) { spielfeld[6][26]=' '; }
            if(x>22&& x<=30)
    		{
    			if (x == 27)  {
    				spielfeld[5][20]=' ';
    				spielfeld[5][47]='|';  
    				spielfeld[7][47]=' ';
    			}
                spielfeld[5][46-x]='o';
                spielfeld[5][47-x]=' ';
            }
            if(x>30&& x<=36)
    		{
    			if (x == 31) {
    				spielfeld[5][16]=' ';
    				spielfeld[4][47]='|';  
    				spielfeld[6][47]=' ';
    			}
    			spielfeld[4][46-x]='o';
                spielfeld[4][47-x]=' ';
    	    }             
            if(x>36 && x<=41)
            {
    			if (x == 37) {
    				spielfeld[4][10]=' ';
    				spielfeld[3][47]='|';  
    				spielfeld[5][47]=' ';
    			}
    			spielfeld[3][46-x]='o';
                spielfeld[3][47-x]=' ';
    		}              
            if(x==42)	// x>41 && x<=42 -> x = 42
            {
    			spielfeld[3][5]=' ';	// für x = 41 aus obiger if 
                spielfeld[2][46-x]='o';
                spielfeld[2][47-x]=' ';
    
    			spielfeld[2][47]='|';  
    			spielfeld[4][47]=' ';
            }             
            if(x==43)	// x>42 && x<=43 -> x = 43
            {
    			spielfeld[2][4]=' ';
                spielfeld[1][46-x]='o';
    			spielfeld[1][47]='|';  
    			spielfeld[3][47]=' ';
            }
    
    		spielfeldausgabe(spielfeld);
        }
    }
    
    void spielfeldausgabe(char spielfeld[21][51])
    {
    	for(int x=0; x<=20;x++)        //For Schleife wird 21 Mal hochgezählt für die Spaltenanzahl des Arrays
    	{
    		for(int y=0;y<=50;y++)     //For Schleife wird 51 Mal hochgezählt für die Zeilenanzahl des Arrays
    		{
    			cout<<spielfeld[x][y]; //Spielfeld Spalte[x] Zeile [y] wird ausgegeben
    		}
    		cout<<endl;				   //Je Spalte[x] wird eine Zeile nach unten gesprungen		
    
    	}
    	system("cls");				   //CMD-Bildschirminhalt wird gelöscht
    }
    
    void spielerbewegung(char spielfeld[21][51], int &y)
    {	
    	spielfeld[y][2]=' ';				//Vorherige Schläger(1) Position wird gelöscht
    	spielfeld [y+1][2]=' ';				//Vorherige Schläger(2) Position wird gelöscht	
    	if (GetAsyncKeyState(VK_DOWN))		//Wenn PfeilTaste "Unten" gedrück wird: 
    	{
    		y++;							//Schlagerwert(1&2) Y wird hochgezählt
    		if (y > 17)
    		{
    			y = 17;						//Fals Schläger an Zeile 17 ist behalte ihn dort sonnst => Arrayüberlauf
    		}
    	}
    		if (GetAsyncKeyState(VK_UP))	//Wenn PfeilTaste "Oben" gedrück wird: 
    	{
    		y--;							//Schlagerwert(1&2) Y wird runtergezählt
    		if (y < 1)
    		{
    		 y = 1;							//Fals Schläger an Zeile 1 ist behalte ihn dort sonnst => Arrayüberlauf
    		}
    	}
    	spielfeld[y][2]='|';				//Schläger 1 wird Ausgegeben hierbei immer in Zeile 2
    	spielfeld [y+1][2]='|';             //Schläger 2 wird Ausgegeben hierbei immer in Zeile 2
    }
    
    void verloren(int *pscore)
    {
    PlaySoundA("ohnoes.wav", NULL,SND_ASYNC);	  // Sound "ohnoes.wav" wird aufgerufen und abgespielt
    system("cls");
    char verloren[1000]=						  // Array-Feld verloren wird deklariert und initialisiert
    {
    	" **      **                 **                                   \n"                
    	"/**     /**                /**                                   \n"                 
    	"/**     /**  *****  ****** /**  ******  ******  *****  *******  \n"             
    	"//**    **  **///**//**//* /** **////**//**//* **///**//**///** \n"         
    	" //**  **  /******* /** /  /**/**   /** /** / /******* /**  /** \n"     
    	"  //****   /**////  /**    /**/**   /** /**   /**////  /**  /** \n" 
    	"   //**    //******/***    ***//****** /***   //****** ***  /** \n" 
    	"    //      ////// ///    ///  //////  ///     ////// ///   //   \n" 
    
    };
    
    cout<<verloren<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;
    											//Array-Feld verloren wird ausgegben
    Sleep(2000);								//Unterbrechung des Programmes für 2000ms(entspricht 2s)
    if(*pscore <=40)							//Wenn der Punktestand(Wert des Pointer Score) unter 40 liegt: "schlecht"
    {
    	cout<<"Schlecht! Sie haben einen Punktestand von nur "<<*pscore<<" Points erreicht :(";
    }
    if (*pscore > 40 && *pscore <=80)			//Wenn der Punktestand(Wert des Pointer Score)über 40 und unter 81 liegt: "schade"
    {
    	cout<<"Schade, Sie haben leider nur einen Punktestand von "<<*pscore<<" Points erreicht :(";
    }
    if(*pscore > 80 && *pscore <=160)			//Wenn der Punktestand(Wert des Pointer Score)über 80 unter 161 liegt: "gut"
    {
    	cout<<"Gut, Sie haben  einen Punktestand von "<<*pscore<<" Points erreicht :)";
    }
    if(*pscore > 160 && *pscore <=240)			//Wenn der Punktestand(Wert des Pointer Score)über 160 unter 241 liegt: "prima"
    {
    	cout<<"Prima Sie haben  einen Punktestand von "<<*pscore<<" Points erreicht :)";
    }
    if(*pscore > 240)							//Wenn der Punktestand(Wert des Pointer Score)über 240 liegt "umwerfend"			
    {
    	cout<<"Umwerfend! Sie haben  einen Punktestand von "<<*pscore<<" Points erreicht :)";
    }
    cout <<endl;
    Sleep(5000);								//Unterbrechung des Programmes für 5000ms(entspricht 5s)
    highscore(pscore);							//Funktion highscore wird aufgerufen und der Pointer pscore übergeben
    
    }
    
    void highscore(int *pscore)
    {
    	int ia=0, ib=1, ic=2;			//Drei Variablen werden deklariert und initalisiert
    	int &a=ia, &b=ib, &c=ic;		//Refernezen werden deklariert und zeigen auf die oberen Variablen 
    	lesen(a,b,c);					//lesen-Funktion wird aufgerufen und die Referenzen a,b,c übergeben
    	vergleich(pscore,a,b,c);		//schreiben-Funktion wird aufgerufen und die Referenzen a,b,c übergeben, sowie der Pointer pscore
    	Sleep(5000);					//Programm wird angewiesen 5 Sekunden zu warten
    	start();						//Die Funktion start wird aufgerufen
    }
    
    void highscoreausgabe()
    {
    	int score1, score2, score3;
    	char highscore[10000]=						  // Array-Feld verloren wird deklariert und initialisiert
    {
     " _______  __                                              \n"
     "|   _   ||__|.-----..-----.   .-----..-----..-----..-----.\n"
     "|   _   ||  ||     ||  _  |   |  _  ||  _  ||     ||  _  |\n"
     "|   ____||__||__|__||___  |   |   __||_____||__|__||___  |\n"
     "|   |               |_____|   |__|                 |_____|\n"
     "|   |                                                     \n"
     "`---'                                                     \n"
     " ___                                 __  __     __        \n"
     "|   |.--------..-----..-----..-----.|__||  |--.|  |.-----.\n"
     "|   ||        ||  _  ||__ --||__ --||  ||  _  ||  ||  -__|\n"
     "|   ||__|__|__||   __||_____||_____||__||_____||__||_____|\n"
     "|   |          |__|                                       \n"
     "|   |                                                     \n"
     "`---'                                                        \n"                                                     
     " __     __         __                               \n"
     "|  |--.|__|.-----.|  |--..-----..-----..----..-----.\n"
     "|     ||  ||  _  ||     ||__ --||  _  ||   _||  -__|\n"
     "|__|__||__||___  ||__|__||_____||_____||__|  |_____|\n"
    	} ;     
    
     	cout<<highscore<<endl<<endl<<endl;
    
    			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 9);
    
    	FILE *platz1;
    
    	cout<<"			PLATZ1: ";
    	if((platz1 = fopen("platz1.txt","r")) !=NULL)
    	{
    		score1=fgetc(platz1);
    		while(!feof(platz1))
    		{
    			putchar(score1);
    			score1=fgetc(platz1);
    		}
    		fclose(platz1);
    	}
    	cout<<endl;
    	FILE *platz2;
    
    			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 4);
    	cout<<"			PLATZ2: ";
    	if((platz2 = fopen("platz2.txt","r")) !=NULL)
    	{
    		score2=fgetc(platz2);
    		while(!feof(platz2))
    		{
    			putchar(score2);
    			score2=fgetc(platz2);
    		}
    		fclose(platz2);
    	}
    		cout<<endl;
    	FILE *platz3;
    	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10);
    	cout<<"			PLATZ3: ";
    	if((platz3 = fopen("platz3.txt","r")) !=NULL)
    	{
    		score3=fgetc(platz3);
    		while(!feof(platz3))
    		{
    			putchar(score3);
    			score1=fgetc(platz3);
    		}
    		Sleep(10000);
    		fclose(platz3);
    	}
    	start();
    }
    void lesen(int &a, int &b, int &c)
    {
    
    	FILE *platz1;										//Der Pointer platz1 wird mit dem Datentyp FILE deklariert
    	int score1, score2, score3;							//Die Variablen score1,score2,score3 werden initialisiert
    
    	if((platz1 = fopen("platz1.txt","r")) != NULL)		//Durch fopen wird platz1.txt geöffnet(r=lesen) und wird mit einer Bedingung für das erfolgreiche Öffnen verknüpft 
    	{
    		char xy [5];									//Das Array xy wird deklariert und wird für 5 Ziffern reserviert
    		fgets (xy, 5, platz1);
    		score1 = atoi(xy);
    		a=score1;
    	}
    
    	FILE *platz2;										//Der Pointer platz2 wird mit dem Datentyp FILE deklariert
    	if((platz2 = fopen("platz2.txt","r")) != NULL)		//Durch fopen wird platz1.txt geöffnet(r=lesen) und wird mit einer Bedingung für das erfolgreiche Öffnen verknüpft 
    	{
    		char xy [5];									//Das Array xy wird deklariert und wird für 5 Ziffern reserviert
    		fgets (xy, 5, platz2);
    		score2 = atoi(xy);
    		b=score2;
    	}
    
    	FILE *platz3;										//Der Pointer platz3 wird mit dem Datentyp FILE deklariert
    	if((platz3 = fopen("platz3.txt","r")) != NULL)		//Durch fopen wird platz1.txt geöffnet(r=lesen) und wird mit einer Bedingung für das erfolgreiche Öffnen verknüpft 
    	{
    		char xy [5];									//Das Array xy wird deklariert und wird für 5 Ziffern reserviert
    		fgets (xy, 5, platz3);
    		score3 = atoi(xy);
    		c=score3;
    	}
    
    }
    void vergleich(int *punkte,int &a, int &b, int &c)
    {
    
    	int feld[3]={a,b,c};
    
    	if(*punkte>=feld[0])
    	{
    
    		feld[2]=feld[1];
    		feld[1]=feld[0];
    		feld[0]=*punkte;
    	}
    
    	if(*punkte>=feld[1]&&*punkte<feld[0])
    	{
    		feld[2]=feld[1];
    		feld[1]=*punkte;
    	}
    	if(*punkte>=feld[2]&&*punkte<feld[1])
    	{
    		feld[2]=*punkte;
    	}
    
    	speichern(feld[0],feld[1],feld[2]);
    
    }
    void speichern(int feld0,int feld1,int feld2)
    {
    	char highscore[10000]=						  // Array-Feld verloren wird deklariert und initialisiert
    {
     " _______  __                                              \n"
     "|   _   ||__|.-----..-----.   .-----..-----..-----..-----.\n"
     "|   _   ||  ||     ||  _  |   |  _  ||  _  ||     ||  _  |\n"
     "|   ____||__||__|__||___  |   |   __||_____||__|__||___  |\n"
     "|   |               |_____|   |__|                 |_____|\n"
     "|   |                                                     \n"
     "`---'                                                     \n"
     " ___                                 __  __     __        \n"
     "|   |.--------..-----..-----..-----.|__||  |--.|  |.-----.\n"
     "|   ||        ||  _  ||__ --||__ --||  ||  _  ||  ||  -__|\n"
     "|   ||__|__|__||   __||_____||_____||__||_____||__||_____|\n"
     "|   |          |__|                                       \n"
     "|   |                                                     \n"
     "`---'                                                        \n"                                                     
     " __     __         __                               \n"
     "|  |--.|__|.-----.|  |--..-----..-----..----..-----.\n"
     "|     ||  ||  _  ||     ||__ --||  _  ||   _||  -__|\n"
     "|__|__||__||___  ||__|__||_____||_____||__|  |_____|\n"
    
    };
    	system("cls");
    	cout<<highscore<<endl<<endl<<endl;
    		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10);
    	cout<<"			PLATZ1:	"<<feld0<<endl;
    			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 4);
    	cout<<"			PLATZ2:	"<<feld1<<endl;
    			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 9);
    	cout<<"			PLATZ3:	"<<feld2<<endl;
    
    	FILE *platz1;
    	if((platz1=fopen("platz1.txt","w")) != NULL)
    	{
    		fprintf(platz1,"%i",feld0);
    		fclose(platz1);
    	}
    
    	FILE *platz2;
    	if((platz2=fopen("platz2.txt","w")) != NULL)
    	{
    		fprintf(platz2,"%i",feld1);
    		fclose(platz2);
    	}
    
    	FILE *platz3;
    	if((platz3=fopen("platz3.txt","w")) != NULL)
    	{
    		fprintf(platz3,"%i",feld2);
    		fclose(platz3);
    	}
    
    }
    void abschluss()
    {
    system("cls");	
    char spielende[1000]=										//Spielende(Logo) wird als Array-Feld derklariert und  initialisiert	
    {
    " _______  _______  ___   _______  ___      _______  __    _  ______   _______ \n"
    "|       ||       ||   | |       ||   |    |       ||  |  | ||      | |       |\n"
    "|  _____||    _  ||   | |    ___||   |    |    ___||   |_| ||  _    ||    ___|\n"
    "| |_____ |   |_| ||   | |   |___ |   |    |   |___ |       || | |   ||   |___ \n"
    "|_____  ||    ___||   | |    ___||   |___ |    ___||  _    || |_|   ||    ___|\n"
    " _____| ||   |    |   | |   |___ |       ||   |___ | | |   ||       ||   |___ \n"
    "|_______||___|    |___| |_______||_______||_______||_|  |__||______| |_______|\n"
    };
    	cout <<spielende<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;											
    															//Gibt das Spielende(-Logo) auf den Bildschirm aus
    	PlaySoundA("outro.wav",NULL,SND_LOOP|SND_ASYNC);	    //Outro.wave wird in einer Dauerschleife augegeben 	
    Sleep(2000);												//Unterbrechung des Programmes für 2000ms(entspricht 2s)
    	cout <<"Danke f"<<(char (129))<<"rs Spielen!!!"<<endl<<endl;  
    	cout<<char (169)<<" Jan Ackermann, Bardia Eghtesadinia, (Marwan Khalid)"<<endl;
    getch();												   //Programm wartet vor Beendung auf eine beliebige Eingabe
    }
    
    void bildhalten()
    {
    	getch();		//Wartet auf Beliebige Tasteneingabe (getchar)
    

    BTW Kritiken sind gerne erlaubt 😉 hab nächste woche den Vortrag



  • Cpong schrieb:

    #include <iostream>

    Das ist ja gar kein C.



  • namespace invader schrieb:

    Cpong schrieb:

    #include <iostream>

    Das ist ja gar kein C.

    Gruselig. Programmiert 1000 Zeilen Code und hat kein blassen Schimmer in welche Sprache er das programmiert hat.



  • wir benutzen in der schule grad ein zwischending, da wir ein halbes jahr lang in C programmiert haben und langsam mit C++ anfangen. 😉



  • Cpong schrieb:

    wir benutzen in der schule grad ein zwischending, da wir ein halbes jahr lang in C programmiert haben und langsam mit C++ anfangen. 😉

    Mein Beileid. 😮



  • Cpong schrieb:

    wir benutzen in der schule grad ein zwischending

    Das muss wohl diese mysteriöse Sprache "C/C++" sein, von der man immer so oft hört.



  • kA warum ihr euch so beschwert, das ist ganz normales C , dass einzige was an C++ grenzt sind die Referenzen und cin,cout.



  • omg2222 schrieb:

    kA warum ihr euch so beschwert, das ist ganz normales C.

    Es ist kein C. Du hast keine Funktion benutzt die ANSI-C gehört. Alles C++. Und das gehört eher ins Projektforum.



  • omg3333 schrieb:

    omg2222 schrieb:

    kA warum ihr euch so beschwert, das ist ganz normales C.

    Es ist kein C. Du hast keine Funktion benutzt die ANSI-C gehört. Alles C++. Und das gehört eher ins Projektforum.

    bin nicht OP.



  • jep, das Teil macht laune.
    Schonmal was von Einfallswinkel = Ausfallswinkel gehört ? Das Teil kommt waagerecht auf der anderen Seite an und wird dann plötzlich um ~45 °C abgelenkt 😃



  • Ja hat ich mir zuerst auch überleg war mit dann aber zu viel arbeit und ich bin noch nich so weit 🙂 wenn jemand will kann ich noch 24 seiten Quelltext analyse hochladen xD



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich finde das cool was du gemacht hast, auch wenn es C++ ist aber immerhin machst du irgendwas, das ist doch der wesentliche Punkt um Programmieren zu lernen. Du dachtest wahrscheinlich dü würdest kein C++ verwenden, da du keine Klassen benutzt oder so, dass ist ja nicht verwerflich...
    Also weiter so...

    Mfg cobra11freak



  • danke hat mir weiter geholfen beim Ping Pong selbst programmieren!


Anmelden zum Antworten