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 ()