JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=4f0a9cf202fdcadb6a88b00ea6461616Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Fenster bei Konsolenanwendung "leeren"
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 19.06.2003, 14:23    Titel: Fenster bei Konsolenanwendung "leeren" Antworten mit Zitat

Ich möchte bevor ich jetzt dann richtige in die Windows & DX Programmierung übersteige erst noch ein Konsolen-Anwendungs-Spiel machen.
Ich suche derzeit nach einem Befehl, der mir das Fenster praktisch leert, praktisch wie der Befehl cls damals unter DOS, damit ich die Anwendung schöner und einheitlicher gestalten kann. Smile
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
gl_echse
JLI'ler



Anmeldedatum: 01.01.2003
Beiträge: 105

Medaillen: Keine

BeitragVerfasst am: 19.06.2003, 14:36    Titel: Antworten mit Zitat

Code:
#include <stdlib.h>
#include <iostream.h>
//...
system("cls");


bei reinen dos-anwendungen musst du allerdings
Code:

clrscr();

verwenden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 19.06.2003, 15:41    Titel: Antworten mit Zitat

Danke, ich hab's ausprobiert und es funktioniert "eigentlich" mit
system("cls");

Jedoch gibt es jetzt noch ein Problem, das sieht Code-mäßig so aus:
Code:

FelderAusgeben(GegFSp1,GegFSp2);

   cout << "test";

   system("cls");

   cout << "test2";


In der Funktion Felder ausgeben werden "Spielfelder" (hab ich mit Zeichen, also mit char-Feldern kreiert) ausgegeben.

Nur gibt's da ein Problem, wenn ca. die Hälfte der FelderAusgeben-Funktion abgearbeitet ist, also das halbe Feld fertig ist, wird scheinbar schon das system("cls") ausgeführt, was ich natürlich nicht so haben will, da ja nur "test2" sichtbar sein soll.

Warum wird nicht erst die ganze Funktion abgearbeitet? Ich verstehe das nicht... Evil or Very Mad

Kannst du oder jemand anderst weiterhelfen? Confused
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 19.06.2003, 15:58    Titel: Antworten mit Zitat

Versuch's mal mit cout.flush() vorher.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
gl_echse
JLI'ler



Anmeldedatum: 01.01.2003
Beiträge: 105

Medaillen: Keine

BeitragVerfasst am: 19.06.2003, 16:17    Titel: Antworten mit Zitat

jep. mach am ende der felder cout.flush(); oder cout<<flush; oder wenn du eh einen zeilenumbruch machst: cout<<endl; bzw. cout.endl(); da endl "\n" und flush ist. Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
gl_echse
JLI'ler



Anmeldedatum: 01.01.2003
Beiträge: 105

Medaillen: Keine

BeitragVerfasst am: 19.06.2003, 17:17    Titel: Antworten mit Zitat

ich persönlich würde eher einen singelton für den screen deklarieren, in dem du dann dein screen 1-3 mal bufferst, um so noch etwas zu verändern usw. also, dass du quasi jedesmal in den buffer schreibst, und wenn er fertig ist "flushst" du ihn. wäre sicher etwas praktischer.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 19.06.2003, 19:40    Titel: Antworten mit Zitat

Danke funktioniert! Smile

Könnt ihr mir noch genau erklären was das flush genau macht? Rolling Eyes

Letzteres habe ich leider nicht so ganz verstanden Embarassed
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 19.06.2003, 20:13    Titel: Antworten mit Zitat

Du arbeitest ja mit Streams. Du füllst sie und sie werden nach und nach in den Zielpuffer geschrieben. Mit flush() leerst du den Stream. Alles was sich noch in ihm befindet wird in den Zielpuffer kopiert.

Zu gl_echses Vorschlag: Ein Singleton ist eine Klasse, von der es nur eine Instanz geben kann und darf. Ob es für dich Sinnvoll wäre, weiß ich nicht, dass muss jeder selber entscheiden. Die kommen hauptsächlich bei Managerklassen zum Einsatz. ;)
Ein Singleton kann z.B. so aufgebaut sein(Meyers Singleton Muster)

Code:

class CBla
{
public:
   static CBla & Get()
    {
        static Bla instance;
        return instance;
    }

    void DoSomething() { cout << "Hallo\n"; }
};

// Den benutzt man dann so:
CBla::Get().DoSomething();

Man hat also eine globale Instanz der Klasse und es ist gesichert, dass auch nur diese eine existiert!

[Nachtrag]
Der Konstruktor muss private sein, damit man von außerhalb nicht weitere Instanzen anlegen kann.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 19.06.2003, 20:36    Titel: Antworten mit Zitat

So leid es mir tut, aber ich weiß nicht was genau Streams sind und was du mit dem Zielpuffer (hört sich nach Speicher an, wo zwischengespeichert wird) meinst.

Auch was mit Instanz genau gemeint ist, weiß ich net so ganz, der Code ist für mich daher leider nicht erkennbar, vom Sinn.

*schäm* Embarassed
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 19.06.2003, 21:16    Titel: Antworten mit Zitat

Ein Stream ist ein Fluss von Daten, in diesem Falle Zeichen.
Zielpuffer ist in diesem Falle der Textspeicher auf deiner Grafikkarte.
Eine Instanz einer Klasse:

Code:

// Das ist die Klasse
class Bla
{
};

// Das sind Instanzen der Klasse
Bla a, b, c, d;


Wenn du dir den Code richtig angeschaut hättest, hättest du auch selber darauf kommen können..
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 19.06.2003, 22:25    Titel: Antworten mit Zitat

Ok, dann weiß ich jetzt mal wieder etwas mehr Smile

Hab den Code auch "richtig" angeschaut, naja ich finde ihn aber irgendwie schon umständlich - selbst draufgekommen wäre ich nicht, da mein C++ Wissen (noch) nicht sehr groß ist Rolling Eyes

In ein paar Monaten kann ich dann vermutlich darüber schmunzeln Wink
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
gl_echse
JLI'ler



Anmeldedatum: 01.01.2003
Beiträge: 105

Medaillen: Keine

BeitragVerfasst am: 20.06.2003, 13:11    Titel: Antworten mit Zitat

IMHO solltest du das besser so machen:

Code:

//bla.h
//...

class cBla
{
private:
 cBla();
 ~cBla();
 static cBla* Instance;
public:
 static cBla* getInstance();
 static void destroyInstance();

//....
};

#define CBLA cBla::getInstance()

//Bla.cpp

#include "Bla.h"

cBla* cBla::Instance = 0;

cBla* cBla::getInstance()
{
 if(0 == Instance)
  Instance = new cBla;
 return Instance;
}

void cBla::destroyInstance()
{
 if(Instance)
 {
   delete Instance;
   Instance=0;
 }
}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 20.06.2003, 13:38    Titel: Antworten mit Zitat

Was sind die Vorteile dieses Modells? :P
Keine, es ist nur komplizierter. So muss man vorgehen, wenn die Reihenfolge wichtig ist, in der die d'tors aufgerufen werden.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
gl_echse
JLI'ler



Anmeldedatum: 01.01.2003
Beiträge: 105

Medaillen: Keine

BeitragVerfasst am: 20.06.2003, 13:41    Titel: Antworten mit Zitat

bei deiner methode ist das problem, dass bei jedem get()-aufruf eine neue instanz "eröffnet" wird, was dann ja wohl kein singleton ist. das mit dem #define ist nur ein beispiel, dass den vorteil hat, nicht alles mit extern definieren zu müssen, bzw. wieder eine neue instanz anzufordern.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 20.06.2003, 13:47    Titel: Antworten mit Zitat

gl_echse hat Folgendes geschrieben:
bei deiner methode ist das problem, dass bei jedem get()-aufruf eine neue instanz "eröffnet" wird, was dann ja wohl kein singleton ist. das mit dem #define ist nur ein beispiel, dass den vorteil hat, nicht alles mit extern definieren zu müssen, bzw. wieder eine neue instanz anzufordern.


Schwachsinn. Gugg dir mal an, was das Schlüsselwort "static" bedeutet.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum