schrift blinkt!?!?
-
hehe, ich schon *grins*
ich werd es morgen mal versuchen, dann scheib ichs hier wieder rein
bis morgen dann,
gut nacht
-
Ich hab da so ne Idee!
(natürlich ist es nur Spekulation, weil ich nicht genug infos habe)Überleg dir mal folgendes:
Spieler X ist an der Reihe. Zuerst wird, wie du sagst, der Bildschirm durch clrscr(); [du hast nen Borland Compiler stimmts?!] gelöscht.
Nun tritt der Fall ein, dass spiel.returnGehtNicht() den Wert 8 zurückgibt.Du hast gesagt die Anzeige würde blinken und das PRG würde sich aufhängen.
Hier meine momentan einzige Erklärung:Also spiel.returnGehtNicht() liefert acht zurück.
Dann gibt das PRG nach switch den Text aus: "Runde aussetzen"
Was passiert dannach - Du hast keine Zeitverzögerung, Marke
getchar(); oder delay(); eingebaut.Folglich geht es SOFORT zurück in die while Schleife.
und dort zum Spieler Y. Du sagtest er hat die gleiche Art von Funkt.
Wie Spieler X.Gut dann wird wieder der Bildschirm "gelöscht"
Und jetzt kommt die Spekulation:
Aus irgendeinem Grund verändert sich der Rückgabewert von
spiel.returnGehtNicht() nicht.!! Folglich tritt eine Endlosschleife ein !!
Vergleiche die Fehlersequenz deines Programms mit einem Bsp.
das ich dir jetzt gebe.
Sollten sich diese sehr gleichen, würde ich meiner Vermutung
nachgehen.
Gib mir bitte bescheid, ob ich richtig lag.#include <iostream.h> #include < ????.h > // <-- für clrscr(); void main() { int x; while(x) { clrscr(); cout << "\n" << "Du musst eine Runde aussetzen!"; } }
-
Bis morgen denn nu.
Ich bin so gegen Nachmittag wieder im Forum.
-
nur mal so nebenbei... clrscr() existiert im standard nicht... das gehört eher ins konsolenforum
-
du hattest recht capri
war eigentlich extrem logisch..und zwar wird vor jedem spielzug überprüft ob eine 8 auf dem ablagestapel liegt, wenn ja ist der nächste dran...ich hatte übersehn das das ja imme rnoch der fall ist wenn der andere wieder dran ist@japro
hmm, das war das einzige was ich gefunden hab, um den bildschirm zu löschen.
kann man sowat denn auch dem standard gerecht machen?
sonst wirds alles immer so unübersichtlich...
-
hallo,
ja das kann man!
zum löschen des bilschirmes gibt es eine sogenannte escapesequenz,
die ist dann auch plattform unabhängig.
das sie dann so aus:cout<<"\033[2J";//\033[2J ist dies sequenz, gibt noch jedemenge andere zur bilschirmsteuerung
damits aber acuh klappt, muss ansi.sys geladen werden vom system.
unter windows machst du das wie folgt:
du schreibst in die config.sys
device=c:\windows\command\ansi.sysrebootest das system und dann gehts!
bye
-
Original erstellt von TBone:
**ja das kann man!
...die ist dann auch plattform unabhängig.damits aber acuh klappt, muss ansi.sys geladen werden vom system.
unter windows machst du das wie folgt:
du schreibst in die config.sys
device=c:\windows\command\ansi.sys**hmm, mein linux hat keine ansi.sys, daraus muss ich schlussfolgern, dass das keineswegs eine plattformunabhängige standard-konforme methode ist, den bildschirm zu löschen... :p
[ Dieser Beitrag wurde am 10.08.2002 um 17:45 Uhr von nman editiert. ]
-
Wenn das ganze aber einmal kompiliert ist, läuft die exe datei aber dann auf jedem rechner?
auch wenn man diesen kram nicht in der config.sys stehn hat?
-
ich glaube in der Konsolen forum kann dir besser geholfen werden
ahja ein blick in die Konsolen-FAQs sollte helfen -> Improved Console
-
Hallo!
Wie wäre es, wenn du bei den case noch die klammern setzen würdest???
Also so:case 0: { cout<<"\nWelche Karte willst du spielen?"<<endl; cin>>karte; spiel.karteSpielen(karte, 2); break; } case 1: { cout<<"\nDu kannst keine Karte legen...*du ziehst eine Karte*"<<endl; spiel.karteZiehen(2); cout<<endl; spiel.hand(2); if(spiel.returnGehtNicht()==0) { cout<<"\nWelche Karte willst du spielen?"<<endl; cin>>karte; spiel.karteSpielen(karte, 2); }; break; } case 7: { cout<<"\nDu musst "<<spiel.returnSieben()<<" Karten ziehen!\n"<<endl; for(int i=0;i<spiel.returnSieben();++i) spiel.karteZiehen(2); break; } case 8: { cout<<"\nDu musst eine Runde aussetzen!"<<endl; //Hier eventuell noch break; rein! }