Hey Leute ich wollte Mal nachfragen ob der C++-Quellcode so klar geht und ob ich das alles richtig gemacht hab.. :3



  • Danke für jede Hilfe


  • Mod

    SwiftBrother schrieb:

    ich habe diesen Code im Internet gefunden und wollte fragen, ob der auch in C++ zu verwenden geht?

    Probier's doch einfach mal.

    Code aus dem Internet zu nehmen ist übrigens etwas anderes als Programmieren.



  • Ich hab den komplett selber geschrieben... Sonst wärs n bisl zu einfach 😃



  • Musste nicht viel geändert werden damit das als C++ durchgeht...

    #include <conio.h> hat gefehlt.
    Sleep mit grossem S
    getch => _getch
    Die Signaturen der Thread-Funktionen waren falsch (void* Parameter).
    In den Thread-Funktionen haben return Statements gefehlt.
    Die Funktion Farbe war als int deklariert, gibt aber nix zurück.
    #define _CRT_SECURE_NO_WARNINGS wegen scanf (für MSVC, bei anderen Compilern nicht nötig)

    Wobei ich der Meinung bin dass einige dieser Fehler auch in C Fehler sind.

    So lässt sich das bei mir jetzt auf jeden Fall compilieren und ausführen:

    #define _CRT_SECURE_NO_WARNINGS
    
    #include <stdio.h>
    #include <windows.h>
    #include <stdlib.h>
    #include <time.h>
    
    #include <conio.h>
    
    int alt[100][2];
    
    int Feld[100][100];//y/x
    
    int Position[2];//
    int i, x, y;
    char c;
    int error = 0;
    int anz = 1;
    
    int z, w;
    
    int Richtung = 3;
    
    void Farbe(int Text, int Hintergrund)
    {
    	int Colour = Text + 16 * Hintergrund;
    	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), Colour);
    }
    
    DWORD WINAPI Thread(void*)
    {
    	while (error == 0)
    	{
    		c = toupper(_getch());
    
    		if (Richtung == 2 || Richtung == 4) if (c == 'W') Richtung = 1;
    		if (Richtung == 1 || Richtung == 3) if (c == 'A') Richtung = 2;
    		if (Richtung == 2 || Richtung == 4) if (c == 'S') Richtung = 3;
    		if (Richtung == 1 || Richtung == 3) if (c == 'D') Richtung = 4;
    	}
    	return 0;
    }
    
    DWORD WINAPI Achtung(void*)
    {
    	srand(time(0));
    	int a, b;
    	int en = 0;
    	int sume = 0;
    	int sume1 = 0;
    	int Felder[400][1][2];
    	int mi = 0;
    	int j, k;
    
    	while (error == 0)
    	{
    		mi = 0;
    		if (Feld[Position[1]][Position[0]] == 1 || Feld[Position[1]][Position[0]] == 4)
    		{
    			error = 1;
    			system("cls");
    			return 0;
    		}
    		if (Feld[Position[1]][Position[0]] == 3)
    		{
    			Feld[Position[1]][Position[0]] = 0;
    			do
    			{
    				sume = Position[1] * 10 + Position[0] * 100;
    				mi = 0;
    				for (j = 1; j<19; j++)
    				{
    					for (k = 1; k<19; k++)
    					{
    						sume1 = j * 10 + k * 100;
    						if (Feld[j][k] != 1 && Feld[j][k] != 4 && sume1 != sume)
    						{
    							Felder[mi][0][0] = j;
    							Felder[mi][0][1] = k;
    							mi++;
    						}
    					}
    				}
    				a = Felder[(rand() % mi + 0)][0][0];
    				b = Felder[(rand() % mi + 0)][0][1];
    				sume = Position[1] * 10 + Position[0] * 100;
    				sume1 = a * 10 + b * 100;
    				if (Feld[a][b] != 1 && Feld[a][b] != 4 && sume1 != sume)
    				{
    					Feld[a][b] = 3;
    					break;
    				}
    			} while (1);
    			Farbe(rand() % 14 + 1, 0);
    			anz++;
    		}
    	}
    	return 0;
    }
    
    int snake(int Schwierigkeit)
    {
    	printf("Spielregeln:\n\n");
    	printf("Sie steuern ein Schlange($) mit den Tasten w,a,s,d. Das Spielziel besteht darin, so viele Kisten(X) wie moeglich zu sammeln ohne gegen sich selbst oder gegen die Wand zu stossen. Viel Spass!\n\n");
    	system("pause");
    	system("cls");
    
    	// Spieler steht auf den Koordinaten x=1, y=1
    	Position[0] = 1;//x
    	Position[1] = 1;//y
    
    	error = 0;
    	anz = 1;
    	Richtung = 3;
    
    	for (i = 0; i<100; i++)
    	{
    		alt[i][0] = 100;
    		alt[i][1] = 100;
    	}
    
    	//alles auf Null stellen
    	for (y = 0; y<100; y++)
    	{
    		for (x = 0; x<100; x++)
    		{
    			Feld[y][x] = 0;
    		}
    	}
    	//Wand erstellen
    	for (i = 0; i<20; i++)
    	{
    		Feld[0][i] = 1;//obere  Wand wird gesetzt
    		Feld[i][0] = 1;//linke  Wand wird gesetzt
    		Feld[19][i] = 1;//untere Wand wird gesetzt
    		Feld[i][19] = 1;//rechte Wand wird gesetzt
    	}
    
    	Feld[(rand() % 16 + 2)][(rand() % 16 + 2)] = 3;//X soll auf den Koordinaten y=3,x=3 stehen
    
    												   //Spielfeldmalen+Bewegung
    	CreateThread(NULL, 0, Thread, NULL, 0, NULL);
    	CreateThread(NULL, 0, Achtung, NULL, 0, NULL);
    	while (error == 0)
    	{
    		for (y = 0; y<20; y++)//Spielfeld wird gezeichnet
    		{
    			for (x = 0; x<20; x++)
    			{
    				if (Position[0] == x && Position[1] == y) printf("$");
    				else
    				{
    					if (Feld[y][x] == 0) printf(" ");
    					if (Feld[y][x] == 1) printf("#");
    					if (Feld[y][x] == 3) printf("X");
    					if (Feld[y][x] == 4) printf("$");
    				}
    			}
    			printf("\n");
    		}
    		printf("Level: %d\n", anz);
    
    		if (Richtung == 1) Position[1]--;
    		if (Richtung == 2) Position[0]--;
    		if (Richtung == 3) Position[1]++;
    		if (Richtung == 4) Position[0]++;
    		Sleep(Schwierigkeit);
    		system("cls");
    		for (i = 1; i<100; i++)
    		{
    			if (Feld[alt[i][1]][alt[i][0]] == 4) Feld[alt[i][1]][alt[i][0]] = 0;
    		}
    		for (i = 100; i>0; i--)
    		{
    			alt[i][0] = alt[i - 1][0];
    			alt[i][1] = alt[i - 1][1];
    		}
    		alt[0][0] = Position[0];
    		alt[0][1] = Position[1];
    		for (i = 1; i<anz; i++)//mit 1 geht's
    		{
    			Feld[alt[i][1]][alt[i][0]] = 4;
    		}
    
    	}
    
    	printf("Sie sind bis in das %d.Level gekommen!\n", anz);
    	printf("Game over!\n\n");
    	system("PAUSE");
    	error = 0;
    	return 0;
    }
    
    int main(int argc, char *argv[])
    {
    	int Wahl = 0;
    	Farbe(14, 0);
    	do {
    		printf("Willkommen im Spiel Schlange!\n\n");
    		printf("Was fuer ein Spiel wollen Sie beginnen:\n");
    		printf("<1>Sehr leichtes Spiel\n");
    		printf("<2>Leichtes Spiel\n");
    		printf("<3>Mittelschweres Spiel\n");
    		printf("<4>Schweres Spiel\n");
    		printf("<5>Sehr schweres Spiel\n");
    		printf("\nIhre Wahl: ");
    		scanf("%d", &Wahl);
    		getchar();
    		system("cls");
    	} while (Wahl>5 || Wahl<1);
    
    	do {
    		system("cls");
    		Farbe(14, 0);
    		switch (Wahl)
    		{
    		case 1: snake(300);
    			break;
    		case 2: snake(200);
    			break;
    		case 3: snake(100);
    			break;
    		case 4: snake(50);
    			break;
    		case 5: snake(25);
    			break;
    		case 6: return 0;
    			break;
    		}
    		Farbe(14, 0);
    		system("cls");
    		do {
    			printf("Willkommen im Spiel Schlange!\n\n");
    			printf("Was fuer ein Spiel wollen Sie beginnen:\n");
    			printf("<1>Sehr leichtes Spiel\n");
    			printf("<2>Leichtes Spiel\n");
    			printf("<3>Mittelschweres Spiel\n");
    			printf("<4>Schweres Spiel\n");
    			printf("<5>Sehr schweres Spiel\n");
    			printf("<6>Ich habe genug von der komischen Schlange\n");
    			printf("\nIhre Wahl: ");
    			scanf("%d", &Wahl);
    			getchar();
    			system("cls");
    		} while (Wahl>6 || Wahl<1);
    	} while (1);
    
    	system("PAUSE");
    	return 0;
    }
    


  • hustbaer schrieb:

    Musste nicht viel geändert werden damit das als C++ durchgeht...

    Dankeeeeee ❤

    Womit compilierst du das Programm denn bitte?

    Und nochmals ein riesen Dankeschön ;3

    -Swifti



  • Mit einem Compiler?



  • hustbaer schrieb:

    Mit einem Compiler?

    Ja logischerweise schon xD
    Aber ich meinte mit welchem Compiler...
    Fehler in der Ausdrucksweise :c

    -Swifti



  • Nein, ich hab dich schon verstanden.
    Ich denke nur, das kannst du dir selbst ergoogeln.



  • SwiftBrother schrieb:

    Aber ich meinte mit welchem Compiler...

    hustbaer schrieb:

    Ich denke nur, das kannst du dir selbst ergoogeln.

    Wie kann man googeln, welchen Compiler hustbaer benutzt?



  • Ah, ja, korrekt. Genaugenommen hast du Recht. Schlampig ausgedrückt ich mich habe.

    Allerdings muss er es nichtmal googeln, ich hab's ja in meiner Antwort angedeutet (MSVC).

    Was er sich aber ergoogeln kann, ist welche Compiler man so unter Windows üblicherweise verwendet.



  • hustbaer schrieb:

    Ah, ja, korrekt. Genaugenommen hast du Recht. Schlampig ausgedrückt ich mich habe.

    Allerdings muss er es nichtmal googeln, ich hab's ja in meiner Antwort angedeutet (MSVC).

    Was er sich aber ergoogeln kann, ist welche Compiler man so unter Windows üblicherweise verwendet.

    lol



  • Mechanics schrieb:

    SwiftBrother schrieb:

    Aber ich meinte mit welchem Compiler...

    hustbaer schrieb:

    Ich denke nur, das kannst du dir selbst ergoogeln.

    Wie kann man googeln, welchen Compiler hustbaer benutzt?

    So natürlich: http://lmgtfy.com/?q=Welchen+Compiler+benutzt+hustbaer%3F


Anmelden zum Antworten