tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
12
ZUGRIFFE
814
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    bi0h4zard bi0h4zard ist offline Rookie
    Registriert seit
    Jan 2008
    Beiträge
    7
    Hi,

    ich möchte in der Konsole eine Art graphische Oberfläche erzeugen, die aber nur aus Zeichen bzw. Buchstaben bestehen soll. Leider hab ich keinen blassen Schimmer wie ich das bewerkstelligen soll. Am Ende sollte das ganze dann in etwa so aussehen:

    ****************************************************
    ****************************************************
    *************@************************************
    ****************************************************
    ****************************************************

    wobei das @ dann z.B. mit den Pfeiltasten frei auf dem Feld beweglich sein soll.

    thx im vorraus
    Geändert von bi0h4zard (28.02.08 um 16:30 Uhr)
     

  2. #2
    Avatar von Ryu1991
    Ryu1991 Ryu1991 ist offline Mitglied Gold
    Registriert seit
    Dec 2007
    Beiträge
    241
    îch würde es so nach dem moto machen:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    #include <iostream>
    using namespace std;
     
    main(){
    char Richtung = '';
      cout << "*************************************************\n*****************************************\n\
    ***************************************\n********@************************\n";  
    Richtung = cin.get();
      switch(Richtung){
        case(/*hier der ASCII wert einer pfeiltasten*/):
           //hier jetzt die Console sauberwischen mit system("CLS");
           //mit gotoxy an die richtige stelle springen
           //neue ausgabe
           return;
       case(/*mit den anderen tasten*/)
       default:
         return 0;
       }
    }
    noch ne endlosschleife drum nach gotoxy musste mal hier im Forum suchen so als ganz grober Roh-Entwurf, weiß auch nicht, ob ich switch und case noch richtig im Kopf habe
     

  3. #3
    bi0h4zard bi0h4zard ist offline Rookie
    Registriert seit
    Jan 2008
    Beiträge
    7
    Gibts noch Alternativen?
     

  4. #4
    Avatar von XeoX
    XeoX XeoX ist offline Mitglied Silber
    Registriert seit
    Aug 2007
    Beiträge
    86
    Ich rate von dem Systemaufruf ab!
    Und für gotoxy musste dich entscheiden welchen weg du gehen willst:
    windows.h
    oder
    conio.h hier gibt es dann auch clrscr() als Funktion!

    Gruß XeoX
     
    Wenn du jemandem auf die Brille trittst, erinnere ihn: Man sieht nur mit dem Herzen gut.
    (Antoine de Saint-Exupéry)

  5. #5
    Avatar von Ryu1991
    Ryu1991 Ryu1991 ist offline Mitglied Gold
    Registriert seit
    Dec 2007
    Beiträge
    241
    Zitat Zitat von XeoX Beitrag anzeigen
    Ich rate von dem Systemaufruf ab!
    Warum?
     

  6. #6
    Avatar von XeoX
    XeoX XeoX ist offline Mitglied Silber
    Registriert seit
    Aug 2007
    Beiträge
    86
    Da der System aufruf nur unter dem Entsprechenden Betriebsystem zum tragen kommt!

    Und das macht keinen schönen Code aus, Bibl. geben einige Funktionen schon vor wie conio.h mit clrscr()!

    Gruß XeoX
     
    Wenn du jemandem auf die Brille trittst, erinnere ihn: Man sieht nur mit dem Herzen gut.
    (Antoine de Saint-Exupéry)

  7. #7
    Avatar von XeoX
    XeoX XeoX ist offline Mitglied Silber
    Registriert seit
    Aug 2007
    Beiträge
    86
    Hab mal in meiner alten Code Sammlung gesucht vielleicht hilft dir das weiter!

    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    
    #include <stdio.h>
    #include <conio.h>
     
    #define breite 25
    #define hoehe  12
    #define figur  "T"
    #define spielflaeche "_"
     
    void spielfeld();
    void bewegung();
    int main (){
      char dummy[81];
      spielfeld();
      bewegung();
      return 0;
    }
     
    void spielfeld() {
      int hi, bi;
      for (hi=0; hi < hoehe+1; hi++){
        for (bi = 0; bi < breite; bi++)
          if(hi != hoehe) printf(spielflaeche);
            else printf("#");
        printf("#\n");
      }
    }
     
    void bewegung (){
      unsigned int taste;
      gotoxy(breite/2, hoehe/2);
      printf(figur);
      gotoxy(wherex()-1, wherey());
      do {
        taste = getch();
        fflush(stdin);
        switch (taste){
     
          case  97 : printf(spielflaeche);  gotoxy(wherex()-1, wherey());
            if(wherex() >= 2 &&  wherey() <= hoehe){
              gotoxy(wherex()-1, wherey()); printf(figur); gotoxy(wherex()-1, wherey()); break;
            } else  if(wherex() == 1 && wherey() == 1){
                      gotoxy(breite, wherey()); printf(figur); gotoxy(wherex()-1, wherey()); break;}
                    else {gotoxy(breite, wherey()); printf(figur); gotoxy(breite, wherey()); break;}
            
          case 100 : printf(spielflaeche); gotoxy(wherex()-1, wherey());
            if(wherex() < breite && wherey() <= hoehe){
               gotoxy(wherex()+1, wherey()); printf(figur); gotoxy(wherex()-1, wherey()); break;
            } else  if(wherex() == breite && wherey() == hoehe){
                      gotoxy(1, wherey()); printf(figur); gotoxy(wherex()-1, wherey()); break;}
                    else{gotoxy(1, wherey()); printf(figur); gotoxy(wherex()-1, wherey()); break;}
     
          case 119 : printf(spielflaeche);
            if(wherex() > 1 && wherey() > 1){
               gotoxy(wherex()-1, wherey()-1); printf(figur); gotoxy(wherex()-1, wherey()); break;
            } else {gotoxy(wherex()-1, hoehe); printf(figur); gotoxy(wherex()-1, wherey()); break;}
     
          case 115 : printf(spielflaeche);
            if(wherex() >= 1 && wherey() < hoehe){
              gotoxy(wherex()-1, wherey()+1); printf(figur); gotoxy(wherex()-1, wherey()); break;
            } else {gotoxy(wherex()-1, 1); printf(figur); gotoxy(wherex()-1, wherey()); break;}
        } 
      } while (taste != 101);
    }

    Gruß XeoX
    Geändert von XeoX (29.02.08 um 12:05 Uhr)
     
    Wenn du jemandem auf die Brille trittst, erinnere ihn: Man sieht nur mit dem Herzen gut.
    (Antoine de Saint-Exupéry)

  8. #8
    bi0h4zard bi0h4zard ist offline Rookie
    Registriert seit
    Jan 2008
    Beiträge
    7
    Noch ne frage: Gibt es einen Befehl mit dem man herausfinden kann welches Zeichen an der aktuellen Cursorposition steht?
    Geändert von bi0h4zard (01.03.08 um 10:15 Uhr)
     

  9. #9
    Avatar von Ryu1991
    Ryu1991 Ryu1991 ist offline Mitglied Gold
    Registriert seit
    Dec 2007
    Beiträge
    241
    Meinst du den Punkt in der ASCII Tabelle, oder in der Konsole?
    Falls du die ASCII Tabelle meinst sollte folgender Code dir helfen:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    #include <iostream>
    using namespace std;
     
    int main(){
      char input = '';
      
      cout << "Drücke die Taste deren ASCII Wert du wissen willst (Drücke ESC zum Beenden \n\n";
      while( input != 27 /*ist die Taste ESC*/){
        input = cin.get();
        cout << "Der ASCII Wert der Taste " << input << " ist: " << (int)input << endl;
      }
      return (int)input;
    }
    Falls du die Konole meinst habe ich keine Ahnung
     

  10. #10
    bi0h4zard bi0h4zard ist offline Rookie
    Registriert seit
    Jan 2008
    Beiträge
    7
    Ich mein in der Konsole
     

  11. #11
    Avatar von XeoX
    XeoX XeoX ist offline Mitglied Silber
    Registriert seit
    Aug 2007
    Beiträge
    86
    Also was an einem Punkt genau stht kannst du ncht bestimmen, aber du kannst ja wenn du durch deine Bewegung an einem Punkt angekommen bist die Kordinaten mit dem Entsprechenenden Befehlen Füttern!

    Also wenn du links oben einen Punkt haben möchtest der was auf dem Bildschirm ausgibt, dann kannst du mit der Abfrage wo sich der Courser befindet und einer if Anweisung alles regeln!

    Gruß XeoX
     
    Wenn du jemandem auf die Brille trittst, erinnere ihn: Man sieht nur mit dem Herzen gut.
    (Antoine de Saint-Exupéry)

  12. #12
    bi0h4zard bi0h4zard ist offline Rookie
    Registriert seit
    Jan 2008
    Beiträge
    7
    Was ich jetzt speziell machen möchte ist z.B. dass der Cursor keinen punkt berühren kann wo er schonmal war also er hinterlässt z.B. ein Zeichen und kann felder auf denen ein Zeichen steht nicht nochmal "betreten".
     

  13. #13
    Avatar von XeoX
    XeoX XeoX ist offline Mitglied Silber
    Registriert seit
    Aug 2007
    Beiträge
    86
    Löse das in dem du die Koordinaten speicherst (Array) und dann abfragst und wenn du das dynamisch machst ist das erst nicht so speicher Intensiv!

    Gruß XeoX
     
    Wenn du jemandem auf die Brille trittst, erinnere ihn: Man sieht nur mit dem Herzen gut.
    (Antoine de Saint-Exupéry)

Ähnliche Themen

  1. Konsolen Ein- und Ausgabe
    Von RMI_17 im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 15.09.05, 10:52
  2. Menü in DOS-Konsolen
    Von ProgFreak im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 20.04.04, 14:04
  3. Konsolen Menü struckturieren
    Von js-mueller im Forum C/C++
    Antworten: 10
    Letzter Beitrag: 20.04.04, 11:19