Czy można w samym C++ stworzyć sterowanie?

Mam pytanie. Czy w samym C++ (bez dodatkowych bibliotek takich jak allegro itp.) można stworzyć sterowanie do gry. Chciałbym uzyskać coś takiego, że w konsoli mam mały prostokącik, którym mógłbym poruszać. Jeśli można coś takiego zrobić, to powiedzcie mniej więcej jak, ale nie wklejajcie całego kodu do tego.

Ponieważ większość dodatkowych bibliotek napisana jest w C/C++, to oczywistą odpowiedzią jest - Da się?

Jeżeli chcesz posługiwać się grafiką na typowej konsoli to oczywistą odpowiedzią jest - Nie ma takiej możliwości?

Zawszę można spróbować coś zrobić w semi-grafice.

No jak to przecież może stworzyć pole tablice[10][10], 2 pętle i chodzić np haszem na czarnym polu, może zrobić też coś na kształt snake’a.

To o czym mówisz jest właśnie semi-grafiką, czyli np takie coś:

#include 

#include 


static int __BACKGROUND=0;

static int __FOREGROUND=8;

const char *k[3]={"ÉÍÍ»","ş ş","ČÍÍĽ"};


void textcolor(int color)

  {

   __FOREGROUND=color;

   SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE),color+(__BACKGROUND<<4));

  }


void gotoxy(int x,int y)

  {

   COORD c;

   c.X=x-1;

   c.Y=y-1;

   SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE),c);

  }


void clrscr()

  {

   DWORD written;

   FillConsoleOutputAttribute

     (

      GetStdHandle (STD_OUTPUT_HANDLE),

      __FOREGROUND+(__BACKGROUND<<4),

      2000,

      (COORD){0,0},

      &written

     );

   FillConsoleOutputCharacter

     (

      GetStdHandle(STD_OUTPUT_HANDLE),

      ' ',

      2000,

      (COORD){0,0},

      &written

     );

   gotoxy(1,1);

  }


void showcursor(bool visible)

  {

   CONSOLE_CURSOR_INFO Info;

   Info.dwSize=sizeof(Info);

   Info.bVisible=visible;

   SetConsoleCursorInfo(GetStdHandle (STD_OUTPUT_HANDLE),&Info);

  }


int main()

  {

   int x=38,y=12,ox=38,oy=12;

   clrscr();

   showcursor(false);

   while(true)

     {

      textcolor(8+4);

      for(int i=0;i<3;++i) { gotoxy(ox,oy+i); _cputs(" "); }

      ox=x;

      oy=y;

      for(int i=0;i<3;++i) { gotoxy(x,y+i); _cputs(k[i]); }

      while(true)

        {

         int key=getch();

         if(key==0x1B)

           {

            clrscr();

            showcursor(true);

            return 0;

           }

         if(key==0xE0)

           {

            key=getch();

            if(key==0x48) { if(y>1) { --y; break; } }

            else if(key==0x50) { if(y<22) { ++y; break; } }

            else if(key==0x4B) { if(x>1) { --x; break; } }

            else if(key==0x4D) { if(x<77) { ++x; break; } }

           }

        }

     }

  }

Dzięki [alex]. A czy mógłbyś podać mi jakieś linki do tej semi-grafiki (najlepiej po polsku). Albo wytłumaczyć mniej więcej co jest od czego w tym kodzie?

Wydrukuj sobie na konsole wszystkie znaki z kodem ASCII powyżej 127 i masz cała semi-grafikę.

Jak coś konkretnie nie jasne to pytaj konkretnie.

Sterowanie ? Oczywiście że można, wystarczy zaincludować “conio.h” i użyć funkcji kbhit () i _getch () :wink: