Help



  • Hat jemand Lust zu dem Folgendem Programm ein Struktogramm zu schreiben???
    Bin total übermüdet 28 Sunden nur lernen bringen einen um

    Wär das macht danke

    /*
    * Echt Ätzendes Schiebespiel
    *
    */

    #include <stdio.h>
    #include "uconio.h"
    #include "kbhit.h"
    #include <time.h> // wird für Initialisierung des Zufallszahlengenerators gebraucht
    #include <iostream>

    // Enthält für jedes Feld die darauf liegende Zahl.
    // Ausnahme: Auf dem Feld des Cursors wird in fields eine 0
    // gespeichert, die nicht angezeigt wird.
    int fields[3][2];

    // Feld, auf dem sich der Cursor befindet.
    int cursor_x, cursor_y;

    // Zeichnet Sternchen in der Zeile y von der Spalte min bis max.
    void draw_star_row(int y, int min, int max)
    {
    for (int x = min; x <= max; x++) {
    u_gotoxy(x, y);
    std::cout << "*";
    }
    }

    // Zeichnet Sternchen in der Spalte x von der Zeile min bis max.
    void draw_star_column(int x, int min, int max)
    {
    for (int y = min; y <= max; y++) {
    u_gotoxy(x, y);
    std::cout << "*";
    }
    }

    // Zeichnet die komplette Spielumgebung, bis auf die Zahlen, die
    // auf den Feldern liegen.
    void draw_environment()
    {
    // Bildschirm Umrahmung
    draw_star_row(Y_MIN, X_MIN, X_MAX);
    draw_star_row(Y_MAX, X_MIN, X_MAX);
    draw_star_column(X_MIN, Y_MIN, Y_MAX);
    draw_star_column(X_MAX, Y_MIN, Y_MAX);

    // Umrahmung der Felder
    for (int i = 0; i < 3; i++) {
    draw_star_row(6 + i4, 30, 48);
    }
    for (int i = 0; i < 4; i++) {
    draw_star_column(30 + i
    6, 6, 14);
    }

    // Überschrift
    u_gotoxy(15, 3);
    std::cout << "E c h t Ä t z e n d e s S c h i e b e s p i e l";
    draw_star_row(4, 15, 65);

    // Tastenanzeige
    u_gotoxy(10, 20);
    std::cout << "<w> - up <s> - down <a> - left <d> - right <e> Exit";
    }

    // Füllt das Spielfeld mit zufällig positionierten Zahlen
    void init_fields()
    {
    // Erstmal alle Felder auf 0, d.h. "keine Zahl" setzen
    for (int i = 0; i < 3; i++)
    for (int j = 0; j < 2; j++)
    fields[i][j] = 0;

    // Zufallszahlengenerator initialisieren
    srand((unsigned)time(NULL));

    // Für jede zu setzende Zahl von 1 bis 5
    for (int i = 1; i <= 5; i++) {

    // Finde ein zufälliges, noch nicht besetztes Feld
    int x, y;
    do {
    x = rand() % 3;
    y = rand() % 2;
    } while (fields[x][y] != 0);

    // Platziere Zahl dort
    fields[x][y] = i;
    }
    }

    // Zeichne Zahlen, die auf den Felder liegen
    void draw_fields()
    {
    // Für jedes Feld ...
    for (int i = 0; i < 3; i++)
    for (int j = 0; j < 2; j++) {

    // Setze Cursor auf Mittelposition des Felds
    u_gotoxy(33 + i*6, 8 + j*4);

    // Ist das Feld nicht belegt (also 0)?
    if (fields[i][j] == 0) {
    // Unbelegtes Feld merken (Cursorposition)
    cursor_x = i;
    cursor_y = j;
    // Dort keine Zahl
    std::cout << " ";
    } else
    // Zahl, die auf diesem Feld liegt, hier schreiben
    std::cout << fields[i][j];
    }

    // Cursor auf unbesetztes Feld setzen
    u_gotoxy(33+cursor_x*6, 8+cursor_y*4);

    std::cout.flush();
    }

    // Cursor um (delta_x, delta_y) Felder verschieben und Zahlen, die
    // auf den Feldern liegen entsprechend verändern.
    void move_cursor(int delta_x, int delta_y)
    {
    // Neue Position des Cursors
    int neu_x = cursor_x + delta_x;
    int neu_y = cursor_y + delta_y;

    // Da wo vorher Cursor war, kommt jetzt Zahl des Feldes hin, wo
    // der Cursor hinspringt
    fields[cursor_x][cursor_y] = fields[neu_x][neu_y];

    // Auf neuer Position des Cursors keine Zahl
    fields[neu_x][neu_y] = 0;

    // Neue Cursor-Position merken
    cursor_x = neu_x;
    cursor_y = neu_y;

    // Felder neu zeichnen
    draw_fields();
    }

    int main()
    {
    u_clrscr();
    draw_environment();
    init_fields();
    draw_fields();

    keyboard kb;

    while (true) {

    // Taste gedrückt?
    if (kb.kbhit() == 1) {

    // Welche Taste?
    char eingabe = kb.getch();

    // Nach oben
    if (eingabe == 'w' && cursor_y == 1)
    move_cursor(0, -1);

    // Nach unten
    if (eingabe == 's' && cursor_y == 0)
    move_cursor(0, +1);

    // Nach links
    if (eingabe == 'a' && cursor_x != 0)
    move_cursor(-1, 0);

    // Nach rechts
    if (eingabe == 'd' && cursor_x != 2)
    move_cursor(+1, 0);

    // Beenden
    if (eingabe == 'e')
    {
    u_clrscr();
    return 0;
    }

    // Sobald die Zahlen auf den richtigen Feldern sind, ist das Spiel vorbei.....endlich!!!
    if (fields[0][0] == 1)
    if (fields[0][1] == 4)
    if (fields[1][0] == 2 )
    if (fields[1][1] == 5)
    if(fields[2][0] == 3)
    {
    u_clrscr();
    std::cout << "Sie haben gewonnen!!!\n\n";
    return 0;
    }
    }
    }
    }



  • Hallo,

    wahrscheinlich nicht. Nebenbei:
    - Codetages benutzen
    - Bessere Titel wählen

    28 Sunden nur lernen bringen einen um

    Dazu kann ich dir das hier empfehlen:
    Zeitmanagement, Das neue 1x1 des | ISBN: 3774256705


Anmelden zum Antworten