Help
-
Hat jemand Lust zu dem Folgendem Programm ein Struktogramm zu schreiben???
Bin total übermüdet 28 Sunden nur lernen bringen einen umWä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 + i6, 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ählen28 Sunden nur lernen bringen einen um
Dazu kann ich dir das hier empfehlen:
Zeitmanagement, Das neue 1x1 des | ISBN: 3774256705