clrscr(); statt system("cls");
-
Hey Leute,
Ich habe einen Quellcod bei Google gefunden und versuche ihn zu vertsehen und meinen Kenntnissen anzupassen
ich möchte gerne
System("cls");
gegen
clrscr();
tauschen
cout gegen cprintf
und noch ein paar Sachen
Trotz das ich die richtigen lib's eingebunden habe glaubt mein Compiler(Dev-c++(ich weiß ^^ veraltet)) die befehle wären nicht Initialisiert
wodran kann das liegen und wie kann ich das behebenaja und ganz Wichtig
Was ist das für eine Array? kann ich die statt gotoxy benutzen?feld [21][31];
und hier der gefundene cod:
#include <cstdlib> #include <iostream> #include <windows.h> #include <conio.h> using namespace std; void gruen() // textcolor(GREEN); ???? { HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); //die Funktion, die nach Aufruf alles grün macht SetConsoleTextAttribute( hStdout, FOREGROUND_GREEN ); } int essenx = 0; // Position das 3s int esseny = 0; int level = 1; //Level int feld [21][31]; //das Koordinatensystem int feld_fake [21][31]; //das Koordinatensystem(fake, um das Blinken zu ermöglichen wenn man stirbt int kopfx = 9; //die Position des 1es int kopfy = 14; int kopfx_alt; //eine Kopie der 1 cords int kopfy_alt; int body_x[501] = {0}; //die Postitonen der Körperteile int body_y[501] = {0}; int schlange = 1; //die Schlangenlänge void spawn_essen() // Setzt das essen auf eine beliebige Position { anfang: srand( (unsigned)time( NULL ) ); // set rand time zu 0 (auf diese weise bekomme ich wirklich variable plätze) essenx = (rand()%(20)); esseny = (rand()%(30)); if(feld[essenx][esseny] != 0)//hier muss es ein goto sein um die Funktion zu wiederhohlen, wenn man einfach nur nochmal die Funktion { goto anfang;//spawn_essen aufruft, dann stürtzt das Programm ab feld[essenx][esseny] = 3; } } void null_fuellen()//die Funktion füllt das Feld mit Null (0) { for(int a = 0; a < 20; a++) { for(int b = 0; b < 30; b++) { feld[a][b] = 0; } } } void zeichne_feld()//die Funktion zeichnet das Spielfeld { system("cls"); gruen(); cout << "_______________________________\n"; for(int a = 0; a < 20; a++) { cout << "|"; for(int b = 0; b < 30; b++) { if(a == 19) { if(feld[a][b] == 0) cout << "_"; if(feld[a][b] == 1) cout << "O"; if(feld[a][b] == 2) cout << "o"; if(feld[a][b] == 3) cout << "*"; } else { if(feld[a][b] == 0) cout << " "; if(feld[a][b] == 1) cout << "O"; if(feld[a][b] == 2) cout << "o"; if(feld[a][b] == 3) cout << "*"; } } if(a == 2) cout << "| SCORE: " << schlange << endl; else cout << "|" << endl; } } void zeichne_feld_fake() { system("cls"); //clrscr(); gruen(); cout << "_______________________________\n"; for(int a = 0; a < 20; a++) { cout << "|"; for(int b = 0; b < 30; b++) { if(a != 19) cout << " "; if(a == 19) { cout << "_"; } } if(a == 2) cout << "| SCORE: " << schlange << endl; else cout << "|" << endl; } } void uebergebe_pos()//Koordinaten in Feld-Daten umwandeln { for(int i = 1; i <= schlange; i++) { feld[body_x[i]][body_y[i]] = 2; } feld[essenx][esseny] = 3; feld[kopfx][kopfy] = 1; } void weitergeben_pos()//Koordinaten Weitergeben an weitere Köorperteile { kopfx_alt = kopfx; kopfy_alt = kopfy; for(int i = schlange; i >= 2; i--) { body_x[i] = body_x[i-1]; body_y[i] = body_y[i-1]; } body_x[1] = kopfx_alt; body_y[1] = kopfy_alt; } int taste = 100;//die Schlange Startet nach Rechts int taste_alt = 0;//der letzte Tastendruck, der vor dem Aktuellem gemacht wurde void game_over()//das Feld blinken lassen { for(int i = 0; i < 3; i++) { zeichne_feld_fake(); Sleep(500); zeichne_feld(); Sleep(500); } } //wenn ein essen gegessen wurde wird kurz gebeept, //diese variable is dazu gut das es dann einen kürzeren sleep gibt int beep_ak = 0; int main(int argc, char *argv[]) { null_fuellen(); spawn_essen(); feld[9][14] = 1;//man startet in der mitte feld[0][0] = 0; zeichne_feld(); taste = getch(); while(taste!=27) { neu_eingabe: //Wenn eine Taste gedrückt nehme deren Wert an if(kbhit()) { taste = getch(); if((taste_alt == 115) && (taste == 119)) { taste = 115; } if((taste_alt == 119) && (taste == 115)) { taste = 119; } if((taste_alt == 100) && (taste == 97)) { taste = 100; } if((taste_alt == 97) && (taste == 100)) { taste = 97; } taste_alt = taste; } switch(taste) { case 119: //Wenn oberer Rand dann unterer Rand if(kopfx == 0) { kopfx = 20; } //Wenn Schlange Schlange berührt dann Game Over if(feld[kopfx - 1][kopfy] == 2) { game_over(); return 0; } //Wenn Schlange essen berührt dann ein Teil länger und ein Level höher if(feld[kopfx - 1][kopfy] == 3) { feld[kopfx - 1][kopfy] == 0; schlange++; beep_ak = 1; Beep(700,50); level++; spawn_essen(); } kopfx -= 1;//Wenn nichts berührt, einfach ein Feld Weiter break; case 115: //Dasselbe jetzt nochmal mit den anderen Richtungen if(kopfx == 19) { if(feld[kopfx - 19][kopfy] == 3) { kopfx = 0; schlange++; beep_ak = 1; Beep(700,50); level++; } if(feld[kopfx - 19][kopfy] == 2) { game_over(); return 0; } kopfx = 0; break; } if(feld[kopfx + 1][kopfy] == 2) { game_over(); return 0; } if(feld[kopfx + 1][kopfy] == 3) { feld[kopfx + 1][kopfy] == 0; schlange++; beep_ak = 1; Beep(700,50); level++; spawn_essen(); } kopfx += 1; break; case 97: if(kopfy == 0) { if((kopfx == 0) || (kopfx == 1) || (kopfx == 2) || (kopfx == 3) || (kopfx == 4) || (kopfx == 5) || (kopfx == 6) || (kopfx == 7) || (kopfx == 8) || (kopfx == 9) || (kopfx == 10) || (kopfx == 11) || (kopfx == 12) || (kopfx == 13) || (kopfx == 14) || (kopfx == 15) || (kopfx == 16) || (kopfx == 17) || (kopfx == 18) || (kopfx == 19)) { kopfy = 30; } } if(feld[kopfx][kopfy - 1] == 2) { game_over(); return 0; } if(feld[kopfx][kopfy - 1] == 3) { feld[kopfx - 1][kopfy] == 0; schlange++; beep_ak = 1; Beep(700,50); level++; spawn_essen(); } kopfy -= 1; break; case 100: if(kopfy == 29) { if((kopfx == 0) || (kopfx == 1) || (kopfx == 2) || (kopfx == 3) || (kopfx == 4) || (kopfx == 5) || (kopfx == 6) || (kopfx == 7) || (kopfx == 8) || (kopfx == 9) || (kopfx == 10) || (kopfx == 11) || (kopfx == 12) || (kopfx == 13) || (kopfx == 14) || (kopfx == 15) || (kopfx == 16) || (kopfx == 17) || (kopfx == 18) || (kopfx == 19)) { kopfy = -1; } } if(feld[kopfx][kopfy + 1] == 2) { game_over(); return 0; } if(feld[kopfx][kopfy + 1] == 3) { feld[kopfx + 1][kopfy] == 0; schlange++; beep_ak = 1; Beep(700,50); level++; spawn_essen(); } kopfy += 1; break; default: zeichne_feld(); cout << "\n << PAUSE >>"; taste = getch(); goto neu_eingabe; } weitergeben_pos(); null_fuellen(); uebergebe_pos(); zeichne_feld(); if(beep_ak = 1) { Sleep(50); } else { Sleep(100); beep_ak = 0; } } return EXIT_SUCCESS; }
-
Hat mit der IDE DEV erst mal nix zu tun.
Du hast Quelltext für einen Borland-Compiler erwischt. Die waren vor 2000 ja sehr weit bei C++ verbreitet.
Oder es ist Quelltext, der für eines der vielen Zusatztools geschrieben wurde, die den Borland-Dialekt nachbilden.
Stichworte:
free bcc 5.5 -> freier download gegen Registrierung
Quincy -> IDE einer US-Hochschule mit dem Compiler MinGW 4.2.1 - da ist ein Tool dabei welches den Borland-Dialekt zu 90%+x% nachbildet.
oder hier: http://www.c-plusplus.net/forum/131915Die Aufzählung ist nicht komplett. Da gibt es schon mehrere Beiträge hier im Forum. Lest mehrere Beiträge damit ihr ein Gefühl dafür bekommt
MfG f.-th
-
Nachtrag hab gerade noch
Sleep() // siehe windows.h
gesehen.
Wenn ich mich recht erinnere hatte Borland bei:
sleep() // ja hier KLEIN s
andere Zeiteinheiten.
Dann hatte Borland auch noch etwas mit dem Jahr 2000. Schaut ob da für euren Borland-Oldie ein Patch zu finden ist. Kann aber sein das der Patch nur für noch ältere Compiler verfügbar war und notwendig ist.MfG f.-th.
-
Nachtrag:
Zeile 40 wird nie erreicht
Zeile 326 ist wahrscheinlich so nicht richtigAuch wenig der Quelltext etwas vermuten lässt:
Snake sollte sich auch ohne goto erstellen lassen.MfG f.-th.
-
Gibts goto echt noch bei c++? Wow, ganz vergessen. Lustigerweise dachte ich als junger Bub(<15) man bräuchte für alles mögliche goto um es zu programmieren
-
Habs verwechselt
Dein Quelltext war für den DEV geschrieben und du willst den Borland-Stil
Sollte also auf MinGW & Co laufen.Das mit Zeile 40 und 326 trotzdem prüfen.
MfG f.-th.
-
jetzt bin ich verwirrt
wenn das doch für dev ist dam müsste ich das doch mit dev-c++ bearbeiten können wie ich möchte.
ja goto muss weg ....
-
Die IDE bei dir ist der DEV, der Compiler dahinter der MinGW 3.4.2 odeer 3.4.5 oder hast du den neuen DEV schon gefunden:
http://orwellengine.blogspot.de/search?updated-min=2012-01-01T00:00:00%2B01:00&updated-max=2013-01-01T00:00:00%2B01:00&max-results=3clrscr();
kennen ohne Zusatztools aber nur die Borland C++ Compiler.
Wenn du das deinem MinGW beibringen willst siehe die Stichworte für deine Suchmaschine oder die Links aus meinem ersten Beitrag.
Nehm dir mal das Suchen ab:
http://www.codecutter.net/tools/quincy/
Diese IDE hat Werkzeuge an Bord die dir erlauben mit dem MinGW 4.2.1 den Borland C++ Dialekt weitgehend ohne Codeänderung zu nutzen.Wenn du das dem MinGW deines DEV selbst beibringen möchtest:
#include <windows.h> void clrscr() { COORD coord; DWORD written; CONSOLE_SCREEN_BUFFER_INFO info; coord.X = coord.Y = 0; HANDLE std = GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(std, &info); FillConsoleOutputCharacter(std,' ',info.dwSize.X*info.dwSize.Y,coord,&written); coord.X = coord.Y = 0; SetConsoleCursorPosition(std, coord); } void gotoxy(int x,int y) { COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); }
Wie du diesen Code dann einbauen musst, solltest du wissen
MfG f.-th.
-
stimmt ab hier komme ich kla
besten dank
-
quincy o.O?
Codeblocks ist eine der besten IDEs, unterstützt an die 30 Syntax-Hilightings, Code-Completion, man kann viel eigenes skripten, es gibt einen haufen addons und man kann damit sehr leicht arbeiten (Edit): Und es gibt noch ungefähr 20 Projekt-Optionen für so alle Gängigen APIs wie Ogre, Irrlicht, SFML, SDL, Lightfeather, Qt, und und und....
Und ist quincy nicht noch von 2005(sagt die Website)?
-
CodeBlocks ist instabiler Müll.
-
314159265358979 schrieb:
CodeBlocks ist instabiler Müll.
Ach, die Visual Studio IDE ist besser, oder was? Nur weil du damit nicht umgehen kannst, brauchst du nicht zickig zu werden.
-
Instabilität hat mit umgehen können nichts zu tun, du Wurst.
-
314159265358979 schrieb:
Instabilität hat mit umgehen können nichts zu tun, du Wurst.
lol. Das Stimmt vielleicht mit Windows. Aber sag mir, wie es möglich ist, dass ich jetzt ungefähr eineinhalb Jahre Codeblocks verwende und es noch nie (ja, buchstäblich fast) zu einem "Zwischenfall" gekommen ist (keine Ahnung was du unter Instabilität definierst
).
Oh, Stopp! Meinst du, es ist schlecht? Ja, das stimmt.
-
Es crasht jedes mal, wenn ich es beende. Es crasht oft zwischendurch. Die Scrollbar ist kaputt.
-
314159265358979 schrieb:
Es crasht jedes mal, wenn ich es beende. Es crasht oft zwischendurch. Die Scrollbar ist kaputt.
What the-?
-
Ja Quincy ist älter als C::B 10.05, hat aber halt die speziellen Sachen die die der Beitragssteller nutzen will dabei. Da kann er, wenn er will gleich im Borland C++ Stil mit dem MinGW losprogrammieren.
Andere Alternativen hatte ich ja auch noch angedeutet.
Ist ja auch noch von den persönlichen Vorlieben abhängig
-
f.-th. schrieb:
Ist ja auch noch von den persönlichen Vorlieben abhängig
Ganz meiner Meinung, habe Quincy nicht ausprobiert, dachte aber es ist so ein billiger "Studenten-war-langweilig"-Scheiß.
-
Gab es da nicht mal so einen Studenten namens Bill G.
-
Jo, der Typ gehört geköpft.