Snake Ebenen
-
Boring
-
Ich wollte auch nicht das Programm schneller ablaufen lassen.
Sorry, Ausdrucksfehler.
Ich weiß ist langweilig. Aber man will nicht aus der Übung kommen. Beim Zivildienst 12 Stunden Bereitschaft kann schon langweilig sein.
-
Tut mir auch Leid, dass mein Post eben nicht besonders freundlich war
Bin auch eben erst heimgekommen und war total platt..Aber war's halbwegs verständlich oder hilfreich? Sonst müsstest du mal zeigen, wie deine Haupt-Schleife oder dein Konzept aussieht

-
@New-c:
Genau wegen solcher Beiträge bin ich absolut dafür das Gäste hier keine Schreibrechte haben. Dann können solche Trottel wie du nichts mehr schreiben, sind doch zu dumm um sich zu registrieren...Zum Thread:
Das Problem bei einer solchen Implementierung ist, dass die Geschwindigkeit dann immer vom Prozessor abhängig ist. Willst du z.B. Highscores machen, lässt man seinen PC mit einer Softwarebremse laufen und die Fairness ist dahin.Edit: ich weiß auch nicht was ich gerade geschrieben habe, wenn du das so machst wie Badestand das beschrieben hat, gibts keine Probleme in der Hinsicht

-
Orientierung an C Programmieren von Anfang (Erlenkötter). Zur Win-Api.
Hier der Schleifenaufbau:
// "Die Test-Hauptschleife" ob time funktioniert for(x=fenster.dwSize.X;x>=69;x--){ position.X=x; position.Y=12; SetConsoleCursorPosition(console,position); WriteConsoleOutputCharacter(console,&block,1,position,&dummy); time(&jetzt); while(difftime(time(NULL),jetzt)<1); position.X=x+3; //+a // hochzählvariable für gefressene Teile position.Y=12; SetConsoleCursorPosition(console,position); WriteConsoleOutputCharacter(console,&blank,1,position,&dummy); }Schleife wird über While Ausdruck nicht schneller. Wahrscheinlich falscher Ansatz.
-
Eventuell sind die Konsole-Funktionen seeehr langsam? Was passiert denn, wenn du die while-Schleife rausnimmst? Die wartet nämlich glaubich auch nur eine Millisekunde.
Ansonsten könntest du die x-Position der Schlange schneller hochzählen?edit: Ach, ich Trottel
Was machst du denn mit dem position.X = x;? Du solltest die Position der Schlange unabhängig von der Schleifen-"x"-Variable verändern!
Wie wärs so:?position.X = 0; position.Y = 12; for ( int i=0; i<70; i++ ) { // Zeichnen SetConsoleCursorPosition(console,position); WriteConsoleOutputCharacter(console,&block,1,position,&dummy); // Gewisse Zeit abwarten time( &jetzt ); // Für "sonstwas" irgendeinen Zahlenwert einsetzen, evtl rumprobieren while ( difftime( time(NULL), jetzt) ) < sonstwas ) ; // In der Schleife nix machen, ist so deutlicher als wenn das Semikolon am Ende der while-Schleife ist // Schlange weiter nach rechts setzen position.X += 1; }
-
also schleife an sich kannst nicht schneller machen als sie ist, ausser durch codeoptimierung. Was du brauchst ist nen realtime bezug über die zeit was halt gezeigt wurde von Strand. Bei "sonstwas" setzt wie gesagt zahlenwert ein, wobei ein kleiner wert bedeutet das die schlange schnell schlängelt und großer wert halt langsam. Daher geschwindigkeit der schleife lässt sich nur erhöhen wenn der ausführbare code darin weniger wird, im gegensatz zum verlangsamen das geht immer^^, und das auch vielen wegen *g
-
Tobias W schrieb:
@New-c:
Genau wegen solcher Beiträge bin ich absolut dafür das Gäste hier keine Schreibrechte haben. Dann können solche Trottel wie du nichts mehr schreiben, sind doch zu dumm um sich zu registrieren...Zum Thread:
Das Problem bei einer solchen Implementierung ist, dass die Geschwindigkeit dann immer vom Prozessor abhängig ist. Willst du z.B. Highscores machen, lässt man seinen PC mit einer Softwarebremse laufen und die Fairness ist dahin.Edit: ich weiß auch nicht was ich gerade geschrieben habe, wenn du das so machst wie Badestand das beschrieben hat, gibts keine Probleme in der Hinsicht

Da sagt ja der Richtige, dass ich dumm bin.
Der noch nicht einmal weiß was er pappelt. :p
-
Leute will niemanden auf die füße treten aber denke nicht das sowas hier von nöten ist. new c dein beitrag war nicht wirklich hilfreich und von tobias auch nicht. steht einfach drüber fertig, ist doch nicht schwer sich ein wenig sowas zu verkneifen, denke ich, oder liege ich da so falsch. ich hoffe nicht sonst wäre das echt schade.
-
@ NEW-C bzw. Badestrand:
Habe jetzt die While Schleife weggelassen.
Cool. Es klappt. Habe jetzt lediglich mit Sleep rumprobiert.Läuft jetzt je nach Zahlenwerten für Sleep schneller o. langsamer. Unfähr wäre Sleep(1), hehe.
position.X=0; position.Y=12; for(x=0;x<75;x++){ SetConsoleCursorPosition(console,position); WriteConsoleOutputCharacter(console,&block,1,position,&dummy); time(&jetzt); Sleep(50); position.X += 1; }