Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » "Bestimmte" Ein- und Ausgaben löschen

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 <
000
23.11.2013, 00:01 Uhr
~fener
Gast


Hallo!
Es geht um folgenden Code:

C++:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
#include <windows.h>
#include "ctime"

using namespace std;

void gotoxy(int x,int y)
{
    HANDLE hConsole;
    COORD cursorLoc;
    std::cout.flush();
    cursorLoc.X = x;
    cursorLoc.Y = y;
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hConsole, cursorLoc);
}

int _tmain(int argc, _TCHAR* argv[])
{
    int x,y,i;
    int field [41] [41]; // 1 mehr als gewünschtes Spielfeld, weil für die Grenzen auch 2 Felder benötigt werden

    srand((unsigned) time(NULL)); // Initialisieren des Zufallszahlengenerators

    for(x=0; x<42; x++) // x-Grenzen: 0 bis 41
    {
            gotoxy(0,x);
            cout<<"#"; // obere x-Grenze
            gotoxy(41,x);
            cout<<"#";  // untere x-Grenze
    }

    for(y=0; y<42; y++) // y-Grenzen: 0 bis 41
    {
            gotoxy(y,0); // linke y-Grenze
            cout<<"#";
            gotoxy(y,41); // rechte y-Grenze
            cout<<"#";
    }

        gotoxy(1,1); // Feldinneres obenlinks

        for(x=1; x<41; x++)
        {
            for(y=1; y<41; y++)
            {
                gotoxy(x,y);
                cout << "~";
            }
        }

        for(i=1; i<6; i++)
        {
        x = rand() %40 + 1;
    y = rand() %40 + 1;
        
        if(x>0 && y<42 && y>0 && y<42)
        {
            field [x][y] = 1;
            gotoxy(x,y);
            /*cout << "S";*/ // Schiffe verstecken
        }
        else
        {
            i--;
        }
        }

    gotoxy(0,42);

    cout << x << endl;
    cout << y << endl; // kommt weg, wenn Spiel fertig

    int xcoord, ycoord;

Eingabe:
    cout << "Geben Sie eine X-Koordinate ein:";
    cin >> xcoord;
    cout << "Geben Sie eine Y-Koordinate ein:";
    cin >> ycoord;

    if(field[xcoord][ycoord] == 1)
    {
        cout << "Getroffen!";
        getch();
        field[xcoord][ycoord] == 0;
        gotoxy(xcoord, ycoord);
        cout << "X";
        gotoxy(0,42);
    }
    else
    {
        goto Eingabe;
    }
    
    if(field[x][y] == 1)
    {
        goto Eingabe;
    }


    getch();
    return 0;
}



Am besten führt ihr es aus, damit ich ihr meine Frage nachvollziehen könnt.
Nachdem ich ein Schiff (S) getroffen habe, möchte ich, dass alle vorherigen Eingaben und Ausgaben, außer das Spielfeld mit den Schiffen S und dem Treffer X gelöscht werden.
Wie stell ich das an?

lg
---
Edit: cpp-Tag korrigiert.

Dieser Post wurde am 23.11.2013 um 00:27 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.11.2013, 02:01 Uhr
Hans
Library Walker
(Operator)


Hi,

als erstes mal solltest Du die Warnungen des Compilers beachten. Der meldet u.a. dass diese Zeile (89):

C++:
field[xcoord][ycoord] == 0;


keinen Sinn ergibt.

Dann ist das Spielfeld für Entwicklung und Test meiner Meinung nach zu gross; ein 10x10 Feld sollte dafür genügen. Vergrössern kann man später immer noch.

Und wenn Du beim Aufbau des Spielfeldes fleissig mit gotoxy() hantierst, solltest Du das bei den Koordinateneingaben auch tun, sonst scrollt das Spielfeld nach oben weg. Alte Textbereiche löscht man, indem man sie mit Leerzeichen überschreibt, und anschliessend den Cursor an die Stelle setzt, wo die neue Ausgabe anfangen soll.

Zum Spielfeld selbst: Innerhalb des Computers ist Dein "field-Array" das Spielfeld, sonst nichts. Damit das Feld einen definierten Zustand hat, ist es nötig, es vorher zu initialisieren. Sonst steht an den Stellen, wo Du keine Schiffe positioniert hast irgendwas drin, das keinen Sinn ergibt. Also:

C++:
for (x=0; x<11; x++)
  { for (y=0; y<11; y++)
        field[x][y] = 0;  // Spielfeld initialisieren; ich habs hier auf 10 x 10 verkleinert!
  }    


an den Anfang. Danach kannst Du Deine Schiffe darin positionieren.

Dann solltest Du etwas über die Logik nachdenken, d.h. wie die interne Darstellung nach aussen repräsentiert wird. Ich sag (bzw. definiere) jetzt einfach mal:
0 = Wasserfläche <=> "~"
1 = Schiff, unentdeckt <=> "~"
2 = getroffenens Schiff <=> "X"
Wenn Du nun Dein Spielfeld ausgibst, Überprüfst Du die Elemente von field[x][y]. Wenn eine 0 drin steht, gibst Du 'ne Tilde (~) aus, bei 1 ebenfalls, und bei 2 eben Dein X.

C++:
// Ausgabe
if (field[x][y] == 0)
   cout << "~";
else if (field[x][y] == 1)
   cout << "~";
else if (field[x][y] == 2)
   cout << "X";


(Diese Abfragen natürlich im Schleifenrumpf, zusammen mit ein paar gotoxy() vor dem cout, aber das schaffst Du sicher selbst. )
Das lässt sich dann auch erweitern, bsp. zu 3 = Fehlschuss <=> "-" ...

Den Teil, der das innere Spielfeld ausgibt, solltest Du in einer eigenen Funktion auslagern, denn es wird ja häufiger passieren, dass das Spielfeld neu gezeichnet werden muss.

Soweit mal dass, was mir so dazu einfällt,
Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 23.11.2013 um 02:04 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.11.2013, 18:11 Uhr
~fener000
Gast


Dankeschön Hans! Deine Tipps waren wirklich sehr hilfreich!
Ich selbst hätte mir die Umsetzung dieser Dinge gar nicht zugetraut (Schulprogrammierer - gerade mal seit ein paar Wochen C++ als Hauptthema), aber durch deine Tipps konnte ich schon so Manches umsetzen, aber leider nicht alles.
Um den neuen Code zu debuggen, oben am Besten das "Debug" auf "Release" umstellen.
Hier der Code noch einmal:

C++:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
#include <windows.h>
#include "ctime"

using namespace std;

void gotoxy(int x,int y)
{
    HANDLE hConsole;
    COORD cursorLoc;
    std::cout.flush();
    cursorLoc.X = x;
    cursorLoc.Y = y;
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hConsole, cursorLoc);
}

void zeilenloeschen()
{
    std::cout << "                                                                                                                                     \n";
    std::cout << "                                                                                                                                     \n";
    std::cout << "                                                                                                                                     \n";
    std::cout << "                                                                                                                                     \n";
    std::cout << "                                                                                                                                     \n";
    std::cout << "                                                                                                                                     \n";
    std::cout << "                                                                                                                                     \n";
    std::cout << "                                                                                                                                     \n";
    std::cout << "                                                                                                                                     \n";
    std::cout << "                                                                                                                                     \n";
    std::cout << "                                                                                                                                     \n";
    std::cout << "                                                                                                                                     \n";
    gotoxy(0,0);
    gotoxy(0,12);
}

int _tmain(int argc, _TCHAR* argv[])
{
    int x,y,i;
    int field [10] [10]; // 1 mehr als gewünschtes Spielfeld, weil für die Grenzen auch 2 Felder benötigt werden

    for (x=1; x<11; x++)
  {
        for (y=1; y<11; y++)
    {
            field[x][y] = 0;  // Spielfeld = 0
            gotoxy(x,y);
          cout << "~";
        }
  }

    srand((unsigned) time(NULL)); // Initialisieren des Zufallszahlengenerators

    for(x=0; x<12; x++) // x-Grenzen
    {
            gotoxy(0,x);
            cout<<"#"; // obere x-Grenze
            gotoxy(11,x);
            cout<<"#";  // untere x-Grenze
    }

    for(y=0; y<12; y++) // y-Grenzen
    {
            gotoxy(y,0); // linke y-Grenze
            cout<<"#";
            gotoxy(y,11); // rechte y-Grenze
            cout<<"#";
    }

        for(i=1; i<6; i++)
        {
        x = rand() %10 + 1;
    y = rand() %10 + 1;
        
        if(x>0 && y<12 && y>0 && y<12)
        {
            field [x][y] = 1;
            gotoxy(x,y);
            cout << "~";
        }
        else
        {
            i--;
        }
        }

    gotoxy(0,12);

    cout << x << endl;
    cout << y << endl; // kommt weg, wenn Spiel fertig

    int xcoord, ycoord;

Eingabe:
    cout << "Geben Sie eine X-Koordinate ein:";
    cin >> xcoord;
    cout << "Geben Sie eine Y-Koordinate ein:";
    cin >> ycoord;

    if (field[xcoord][ycoord] == 0)
    {
        gotoxy(0,12);
        gotoxy(xcoord, ycoord);
    cout << "-";
      field[xcoord][ycoord] = 3;
        gotoxy(0,12);
    zeilenloeschen();
        cout << "Ziel verfehlt!";
        getch();
        zeilenloeschen();
        goto Eingabe;
    }
else if (field[xcoord][ycoord] == 1)
{
    gotoxy(xcoord, ycoord);
  cout << "X";
    field[xcoord][ycoord] = 2;
    gotoxy(0,12);
  zeilenloeschen();
    cout << "Sie haben ein Schiff versenkt!";
    getch();
}
else if (field[xcoord][ycoord] == 2)
{
    gotoxy(0,12);
  zeilenloeschen();
    cout << "Sie haben dieses Ziel bereits getroffen!\n";
    getch();
  zeilenloeschen();
    goto Eingabe;
}
else if (field[xcoord][ycoord] ==3)
{
    cout << "Ziel verfehlt!\nAuf dieses Feld hatten Sie bereits geschossen!";
    getch();
}
    
    if(field[x][y] != 1)
    {
    gotoxy (0,12);
    zeilenloeschen();
    cout << "Sie haben alle Schiffe versenkt!\nDruecken Sie eine beliebige Taste, um das Spiel zu beenden!";
    }


    getch();
    return 0;
}



Erfolgreich umgesetzt:
- Funktion für's Löschen von "bestimmten" Ein- und Ausgaben erstellt
- Zu Anfang des Programms alle Felder gleich 0 setzen und "~" ausgeben
- Array für gernerierte Schiffe gleich 1 setzen und durch "~" verstecken
- Versenktes Schiff "X" ausgeben und Array gleich 2 setzen
- Verfehltes Ziel "-" ausgeben und gleich 3 setzen

Ansonsten:
- Nach Löschen von "bestimmten" Ein- und Ausgaben, geht Programm auf (x=0, y=0),
dann erst auf "Eingabeposition" (x=0, y=12), damit Spielfeld immer zu sehen ist

Probleme:
- Schiffe werden auf manchmal auf gleiche Koordinaten gespawnt
(Keine Idee für Problemlösung vorhanden)
- wenn ein Schiff versenkt ist, wird Spiel beendet, obwohl im Idealfall 4 weitere existieren
und Fehlermeldung kommt nach letztem "getchar();" zum Hervorschein:"Durch einen Pufferüberlauf in Schiffeversenken.exe wurde der interne Programmzustand beschädigt."

Ich wäre froh, wenn mir jmd. helfen könnte mit Lösungs- und Verbesserungsvorschlägen.
Aber bitte überfordert mich nicht, ich will das Programm erst einmal zum Laufen bringen,
bevor ich es perfektioniere.

lg
---
Edit: cpp-Tag korrigiert. - Da muss am Ende [ / cpp ] stehen, allerdings ohne die Leerzeichen zwischen den eckigen Klammern.

Dieser Post wurde am 23.11.2013 um 20:06 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.11.2013, 20:16 Uhr
Hans
Library Walker
(Operator)


Ich melde mich später noch mal dazu...
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.11.2013, 00:18 Uhr
Hans
Library Walker
(Operator)


Hi,

habe das Programm jetzt wieder getestet und folgendes festgestellt:

1) Fehler beim Feld initialisieren. Bedenke, das Indizes bei 0 anfangen und bei eins vor der maximalen Grösse enden. Also: bei Feld[10] geht die Zählung von 0 bis 9.
Du hattest field[10][10] definiert; d.h. Deine init-Schleifen dürfen nur bis 9 zählen, Du hast sie aber jeweils bis 10 zählen lassen. Das hatte zur Folge, das bei y=10 jedes mal schon das Element [x+1][0] beschrieben wurde. Und bei x=10 ist es bei mir in eine Endlosschleife geraten, weil an der Stelle wo field[10][5] liegen sollte, die Variable y im Speicher stand, die dann jedesmal auf Null gesetzt wurde.

2)

Zitat:
- Schiffe werden auf manchmal auf gleiche Koordinaten gespawnt
(Keine Idee für Problemlösung vorhanden)

Siehe Kommentar im Quelltext, da wo Du die Schiffpositionen initialisierst.

Du benutzt die Variable i nur in der Schleife, wo Du die Schiffe positionierst, ansonsten nicht mehr. Es ist aber Sinnvoll, wenn Du sie dann auch beim abschiessen der Schiffe weider herunter zählen würdest. Denn damit erhälst du eine eindeutige Möglichkeit zum fewststellen, wann das Spiel zu Ende ist. Denn weiter Koordinaten abfragen wenn keine Schiffe mehr da sind, ist wenig sinnvoll.

Hab ausserden noch ein paar weitere Kommentare in den Quelltext geschrieben, weshalb ich den hier mal wiederhole.


C++:
/* Datei: Flottm1b.cpp

   Flottenmanöver Version 2
   Problematische Stellen von Hans, C/C++ Forum, durch Kommentare im Text erläutert.
*/


#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <cmath>    // C++ Version, aber wozu eigentlich? - soviel rechnest Du doch gar nicht.  
#include <windows.h>
#include "ctime"

using namespace std;

void gotoxy(int x,int y)
{
    HANDLE hConsole;
    COORD cursorLoc;
    std::cout.flush();
    cursorLoc.X = x;
    cursorLoc.Y = y;
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hConsole, cursorLoc);
}


/* Damit das Forumsfenster hier nicht unnötig breit wird, hab ich diese Funktion
   etwas umgestaltet...
*/

void zeilenloeschen()
{ //              0        1         2         3         4         5         6        7         8
  //              1234567890123456789012345678901234567890123456789012345678902345678901234567890
    std::cout << "                                                            "\
                 "                   \n";
    std::cout << "                                                            "\
                 "                   \n";
    std::cout << "                                                            "\
                 "                   \n";
    std::cout << "                                                            "\
                 "                   \n";
    std::cout << "                                                            "\
                 "                   \n";
    std::cout << "                                                            "\
                 "                   \n";
    std::cout << "                                                            "\
                 "                   \n";
    std::cout << "                                                            "\
                 "                   \n";
    std::cout << "                                                            "\
                 "                   \n";
    std::cout << "                                                            "\
                 "                   \n";
    std::cout << "                                                            "\
                 "                   \n";
    std::cout << "                                                            "\
                 "                   \n";
    
    gotoxy(0,0);  // wozu erst in die obere Ecke, wenn Du gleich danach in Zeile
    gotoxy(0,12); // 12 springst? - Wenn, dann gehört das gotoxy() hier an den
                  // Anfang.
}
/* Und warum gibst Du in dieser Funktion eigentlich 134 Leerzeichen pro Zeile aus? - Normal
   wären 80 oder hast Du so eine breite DOS-Box?
   Ansonsten kann man hier auch wieder eine cout-Zeile in einer Schleife packen...
*/



int _tmain(int argc, _TCHAR* argv[])
{
    int x,y,i, test;
    int field [10][10]; // 1 mehr als gewünschtes Spielfeld, weil für die Grenzen auch 2 Felder benötigt werden
     char c; // Für Testmodus abfrage

    /* Testmous abfragen und evtl. aktivieren  */
    cout<<"Testmodus? (J/N) ";
    cin >> c;
    if (c=='j' || c=='J') test = 1;
    else test = 0;

    for (x=1; x<11; x++)
        {
            for (y=1; y<11; y++)
                {
                    field[x][y] = 0;  // Spielfeld = 0
                    gotoxy(x,y);
                    cout << "~";
                }
        }

    srand((unsigned) time(NULL)); // Initialisieren des Zufallszahlengenerators

    for(x=0; x<12; x++) // x-Grenzen
        {
            gotoxy(0,x);
            cout<<"#"; // obere x-Grenze
            gotoxy(11,x);
            cout<<"#";  // untere x-Grenze
        }

    /* Das hier kannst du auch kürzer haben, indem Du auf der richtigen Zeile
       jeweils cout<<"############"; schreibst.
    */

    for(y=0; y<12; y++) // y-Grenzen
        {
            gotoxy(y,0); // linke y-Grenze
            cout<<"#";
            gotoxy(y,11); // rechte y-Grenze
            cout<<"#";
        }

    for(i=1; i<6; i++)
        {
            x = rand() %10 + 1;  // Feldgrenzen beachten!
            y = rand() %10 + 1;

            if(x>0 && y<12 && y>0 && y<12)
                {
                    /* Hier muss die Abfrage hin, ob an dieser Postion schon ein
                       Schiff steht. Wenn ja i verkleinern und Koordinaten neu berechnen.
                       Der Elegante Weg, .d.h. ohne goto geht so:
                       if (schon ein schiff da)
                          { i--;
                            continue; // An den Anfang der Schleife springen
                          }
                    */
  
                    field [x][y] = 1;
                    gotoxy(x,y);
                    if (test==1) // im Testmodus das Schiff anzeigen
                        cout << "S";
                    else
                        cout << "~";
                }
            else
                {
                    i--;
                }
        }

    gotoxy(0,12);

    cout << x << endl;
    cout << y << endl; // kommt weg, wenn Spiel fertig

    int xcoord, ycoord;

Eingabe:
    cout << "Geben Sie eine X-Koordinate ein:";  // hier sollten noch Sicherheitsabfragen
    cin >> xcoord;                               // hin die prüfen, ob die Eingaben auch
    cout << "Geben Sie eine Y-Koordinate ein:";  // Sinnvoll sind, d.h. im zulässigen
    cin >> ycoord;                               // Bereich. Sonst gibt's einen crash, wenn
                                                 // auf Speicher ausserhalb der Grenzen von
                                                 // field[][] zugegriffen wird!  

    if (field[xcoord][ycoord] == 0)
        {
            gotoxy(0,12); // dieses gotoxy ist überflüssig, weil gleich danach
                          // eine neue Psition angesprungen wird.
            gotoxy(xcoord, ycoord);
            cout << "-";
            field[xcoord][ycoord] = 3;
            gotoxy(0,12);
            zeilenloeschen();
            cout << "Ziel verfehlt!";
            getch();
            zeilenloeschen();
            goto Eingabe;
        }
    else if (field[xcoord][ycoord] == 1)
        {
            gotoxy(xcoord, ycoord);
            cout << "X";
            field[xcoord][ycoord] = 2;
            gotoxy(0,12);
            zeilenloeschen();
            cout << "Sie haben ein Schiff versenkt!";
            getch();
            // hier fehlt was, deshalb wird das Programm hier beendet.
            
        }
    else if (field[xcoord][ycoord] == 2)
        {
            gotoxy(0,12);
            zeilenloeschen();
            cout << "Auf diese Stelle haben Sie schon geschossen!\n";
            getch();
            zeilenloeschen();
            goto Eingabe;
        }
    else if (field[xcoord][ycoord] ==3)
        {
            cout << "Ziel verfehlt!\nAuf dieses Feld hatten Sie bereits geschossen!";
            getch();
            // hier fehlt was, deshalb wird das Programm hier beendet.
            
        }

    if(field[x][y] != 1)
        {
            gotoxy (0,12);
            zeilenloeschen();
            cout << "Sie haben alle Schiffe versenkt!\nDruecken Sie eine beliebige Taste, um das Spiel zu beenden!";
        }


    getch();
    return 0;
}



Falls Dir die Formatierung des Quelltextes komisch vorkommen sollte: das ist die Art, die ich persönlich vorziehe und nicht ganz dem entspricht, was Visual Studio vorgibt. Es gibt ein Programm Namens AStyle, womit man Quelltexte nach dem persönlichen Geschmack formatieren kann.

Zuletzt wäre da noch das goto Eingabe;
Die Konstruktion ist nicht falsch, aber goto gilt allgemein als verpönt, und sollte in einem Fall wie diesem hier auch vermieden werden. Stattdessen nimmt man hier besser die Schleifenkonstruktion

C++:
do
{ ...
} while()


Die hat den Vorteil, dass man eine klare Abbruchbegingung definieren kann, das wäre hier dann etwa i=0, (alle Schiffe versekt) und die goto's ersetzt man durch continue, was ich oben auch schon mal genannt habe.

So, ich hoffe, ich hab mich jetzt nirgendwo vertan...

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 25.11.2013 um 01:03 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.11.2013, 04:02 Uhr
Hans
Library Walker
(Operator)


Hi,
jetzt hab ich auch mal 'ne Frage: Wo hast du eigentlich diese gotoxy()-Funktion her?
Hat der Lehrer (die Lehrerin) die so vorgegeben oder stammt die aus einem bestimmten Buch?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
30.11.2013, 17:10 Uhr
~fener000
Gast


Hallo!

Super! Dank Dir funktioniert das Programm einwandfrei!

Zu deiner Frage: Die gotoxy-Funktion hat unser Lehrer uns vorgegeben.
Wo er Sie her hat, weiß ich nicht.

lg fener000
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
03.12.2013, 10:23 Uhr
Hans
Library Walker
(Operator)


Hi,

bitte sehr.
Könntest du den Lehrer mal fragen, wo er die gotoxy-Funktion her hat? - Das würde mich nämlich interessieren.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
03.12.2013, 21:56 Uhr
~f.-th.
Gast


Die gotoxy-Version findet man öfter in der gezeigten oder in funktionsgleichen Varianten im Netz.

Hier eine funktionsgleiche Variante, die den alten Borland-Dialekt versucht nachzubilden:

C++:
#include <windows.h>

void clrscr()
{
    COORD coord;
    DWORD written;
    CONSOLE_SCREEN_BUFFER_INFO info;
    coord.X = coord.Y = 0;
    HANDLE std = GetStdHandle(STD_OUTPUT_HANDLE);
    GetConsoleScreenBufferInfo(std, &info);
    FillConsoleOutputCharacter(std,' ',info.dwSize.X*info.dwSize.Y,coord,&written);
    coord.X = coord.Y = 0;
    SetConsoleCursorPosition(std, coord);
}

void gotoxy(int x,int y)
{
    COORD coord;
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}



MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: