Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » textdatei einlesen, manipulieren etc.

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
12.07.2007, 19:59 Uhr
0xdeadbeef
Gott
(Operator)


Idealerweise willst du das garnicht. Ggf.

C++:
throw std::bad_exception();


...aber ich würd dir eher dazu raten, dein Programm vernünftig aufzubauen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
12.07.2007, 22:09 Uhr
Suba Esel



Ja ich mein, ich hab jetzt meinetwegen mein "Spiel", und da bin ich "tot". Dafür hab ich ne Funktion "Tod", die ich aufruf und in der ich dann ein paar Sachen anzeig und dann exit(0) ausführ. Wie sollte ich das in der main machen? Da müsste ich im Prinzip ein Label darein legen und dahinspringen, oder was sonst?
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
12.07.2007, 23:30 Uhr
mischa
Fragender


Naja bei einem Spiel hat man ja sowas wie eine game engine, selbst wenn das Spiel nicht sehr groß ist. Eine game engine wird wird normalerweise durch eine Funktion aufgerufen dann läuft ne Schleife und dann durch ne Funktion behendet. Die beiden Funktionen stehen in der mein und nach der beend Funktion kommt halt das return 0; Man muss bei sowas immer auf den Design achten was nicht immer leicht ist.
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
13.07.2007, 12:55 Uhr
Suba Esel



Ok... ich beschreib mal kurz den Aufbau des Spiels (ich arbeite nich mehr dran, aber interessieren würde es mich trotzdem):
Das ganze ist erstmal ein Konsolenspiel. Man ist halt am Anfang an einer Kreuzung im Wald, da kann man auswählen ob man zum Fluss oder in die Stadt gehen will. In der Stadt wiederum kann man zum Plumsklo, in die Kneipe oder zum Bürgermeister gehen und von da aus halt immer weiter. Für alles (Plumsklo, Kneipe usw.) hab ich ne Funktion, in der das alles angezeigt wird un d man wählen kann wos weitergehen soll. Wenn man das falsche wählt, stirbt man halt.
Sprich, ich bin mitten in irgendeiner Funktion und muss da heraus das Programm beenden.
Wie soll man das machen, ohne exit aufzurufen?
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
13.07.2007, 14:40 Uhr
Th



Du könntest eine eigene Exception werfen und diese dann im Hauptprogramm abfangen (d.h. ungefähr das was 0xdeadbeef schon geschrieben hat).

C++:
class EDead : public std::exception
{
};

void geh_tot()
{
  throw EDead();
}

int main()
{
  try
  {
    // ... dein Hauptprogramm, das irgendwo geh_tot aufruft (oder auch nicht)

  }
  catch(EDead &)
  {
     return 1; // aus die Maus!!!
  }
  
  return 0;
}




Aber trotzdem schein dein Programmdesign falsch zu sein, wenn du irgendwo tief in den Funktionen das Programm beenden willst.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
13.07.2007, 15:19 Uhr
Blubber2063



Naja tief in den Funktionen kann man auch sauber abbrechen, man muss die Funktionen eben nur so präparieren das sie mit ner Codierung für Programm beenden zurückkehren. Das mit den Exceptions geht zwar auch, ist aber keine gute Lösung, denn exceptions sind Fehler und das beenden des Programms ist ja gewollt und kein Fehler.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
13.07.2007, 16:18 Uhr
Suba Esel



Hmm.... das ist aber auch blöde
Du meinst sowas in der Art, ne globale bool zu machen, wenn man tot ist die auf true zu setzten, am Anfang von jeder Funktion zu testen, ob die true ist, und falls ja die Funktion beenden?
Klingt kompliziert....
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
13.07.2007, 16:43 Uhr
Blubber2063



Nein ganz sicher nicht mit einer globalen bool, nehmen wir dein Spiel man an.
Dort wirst du ja eine Schleife haben in der du je nach Zustand und Eingabe etwas tust. Aus dieser Schleife brichst du dann mit dem beenden aus(break dadurch verlässt du Stück für Stück alle funktionen darüber und das Programm beendet sich so ordnungsgemäß. Wenn es für das Design nötig ist kann man eben von der Funktion noch zurückgeben lassen wodurch sie verlassen wurde.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
13.07.2007, 17:16 Uhr
Suba Esel



Ach verdammt, bin ich blöd
Besten Dank, das ist natürlich viel einfacher^^
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
13.07.2007, 17:17 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Um es kurz zu sagen sobald du goto oder exit aufrufen musst um etwas zu machen kannst du fast sicher davon ausgehen das dein Programmdesign schlecht ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: