Grafisches/Feststehendes Feld in Konsole erzeugen



  • Hallo,

    In Spielen wie z.B. Snake benötigt man ja ein abgegrenztes Feld, in dem sich die Schlange bewegen kann:

    ########################################################
    #                                                      #
    #                                                      #
    #                                                      #
    #                                                      #
    #                                                      #
    #                                                      #
    #                                                      #
    #                                                      #
    #                                                      #
    #                                                      #
    ########################################################
    

    Wie erzeugt man denn ein solches?
    Ich meine, einfach mit folgender Zeile ist zwar sowas grafisch erledigt, aber trotzdem fehlen mir dann doch noch die entsprechenden Koordinaten, oder?

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        cout << ########################################### << endl;
        cout << #                                         # << endl;
    
        // ... und so weiter
        return 0;
    }
    

    Es wäre schon hilfreich für mich den Quellcode eines Snakespiels (mit Konsole realisiert) mal zu sehen. Mit Google hab ich lediglich welche mit DirektX gefunden, oder in einer anderen Programmiersprache als C++

    Vielen Dank schonmal

    NewProggie



  • Mit reinem C kommst du hier nicht weit, aber in den meisten Systemen gibt es Spezialbibliotheken zur Konsolensteuerung (unter anderem auch hier im Board die "Improved Console" auf WinAPI-Basis).



  • wenn du so einen rahmen gemacht hast nimmst du halt bestimmte feste abstände und greift über ein 2d array drauf zu, wenn w gedrückt wird ein array -1 usw. das wäre ziemlich "schlecht" gemacht würde aber gehen

    [0][1] [0][2] [0][3] [0][4] [0][5] [0][6] [0][7] [0][8]
    [1][1]

    //hups 0,0 vergessen aber egal



  • #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    
    int main(int argc, char *argv[])
    {
     int i, j, iWidth, iHeight, iCurrentHeight;
    
     iCurrentHeight = 1;
    
     printf("Bitte Werte eingeben, ( Hoehe, Breite )\n");
    
     scanf("%d",&iHeight);
     scanf("%d",&iWidth);
     clrscr();
    
     for(i = 1; i <= iHeight; i++)
     {
    
       if( (iCurrentHeight == 1) || (iCurrentHeight%iHeight == 0)) 
           {
             for(j = 1; j <= iWidth; j++)
             {
               printf("#");
             }
           printf("\n");  
           }
       else
       {
         gotoxy(1,iCurrentHeight);
         printf("#");
         gotoxy(iWidth,iCurrentHeight);
         printf("#\n");
       }
    
       iCurrentHeight++;
    
     }
    
     getch();
    
    }
    

    Ich hoffe das hilft dir ein wenig ..
    Jetzt fehlt nur noch ein 2d Array für die Funktionalität 😃 aber das ist eine andere Geschichte ..

    Grüße eF


Log in to reply