![]() |
C++ großen Array schnell ausgeben
Hey Leute,
Hab angefangen Snake zu Programmieren. Das Spielfeld hab ich als 20x60 Array initialisiert. Mein Problem ist jetzt nur das wenn ich es komplett ausgebe ( Nur Leerzeichen außer die Ränder) das es dann 'flackert'. Also meine Schlange bewegt sich und bei jedem erneuten Bildaufbau flackert der Rand den man sieht. Die Darstellung dauert einfach zu lange >.< Ich geb den ganzen Array zeichen für zeichen ( als chars ) mit ner for-schleife aus. Aber es dauert 'zu lange' und dadurch sieht man ein leichtes flackern. Hat jemand eine Idee wie man es noch machen könnte ? EDIT: Das ganze stell ich in einem DOS Fenster dar. |
Wie gibst du denn die Zeichen in der Konsole aus??
über cout oder printf() oder? Du könntest doch einfach dein Array Zeilenweise ausgeben... oder lässt das deine Implementation nicht zu? |
ich geb sie mit cout aus
ja wie geht das zeilenweise ? Doch sollte gehen, ich arbeite einfach mit einem 2D Array und mit 2 Koordinaten für die Schlange. |
Schreib erst alles in einen Buffer und gib diesen dann aus.
|
Was ist der Buffer ? Auch ein Char Array ?
Kommt ja dann aufs selbe raus oder nicht ? |
gehts nicht einfach mit
for(unsigned int i = 0; i < 20; i++){ cout << mein_spielfeld[i] << endl; } ?? |
Würde auch gehen, wäre dann nur ne riesengroße Rechnerrei um die Bewegung der Schlange zu bestimmen. Mit dem 2D Array kann ich ja sagen das wenn man z.B w drückt der in der höhe eins nach oben geht aber in der breite bleibt also feld [h+1][b] und mit dem eindimensionalen müsst ich ja erstmal zählen wieviel zeichen der dann zurück müsste um eins rauf zu kommen.
|
Und mit wird doch auch jedes Zeichen einzeln auf den bildschirm gezeichnet..oder ?
Mein Buffer ist doch dann auch ein char array oder nicht ? |
nene war blöd von mir
Deklaration char mein_spielfeld[20][60]; + die for-schleife das cout müsste dann eigenltich die 60 zeichen komplett auf einmal ausgeben |
ja ich geb die 20x60 zeichen in ner for-schleife mit nem cout einzeln aus.
Es steht ja dadurch dann komplett da, nur dauerts denk ich zu lange da der bildschirm immer flackert beim erneuten bildaufbau. |
ich hab gelernt, dass sprünge im programm sehr langsam sind
und eine for-schleife nichts anderes ist und wenn du jedes zeichen einzeln ausgibst hast du 20*60 sprünge + 20*60 couts usw. |
Ja schon klar :p
Das Problem ist ja das es anscheinend nicht anders geht. Bin am überlegen ob ich diesen großen Array nicht einfach in einen String schreibe als eine art Buffer und diesen ausgeb. Der kann ja komplett ausgegeben werden. |
Warum bin ich vorher nicht auf die Idee mit dem String gekommen ?! :D
Ich probier mal obs geht ;) wenn nicht dann meld ich mich nochmal hier. Danke für deine Hilfe :) |
kannst es mal mit nem buffer probieren,
dann sparst du dir ja auch die for-schleife |
Warum bin ich vorher nicht auf die Idee mit dem String gekommen ?! :D
Ich probier mal obs geht ;) wenn nicht dann meld ich mich nochmal hier. Danke für deine Hilfe :) |
viel helfen konnt ich ja nicht :P
viel glück |
Ich habe doch schon am Anfang gesagt gehabt, dass du einen Buffer nehmem sollst.
Zitat:
Zitat:
|
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.