[C++] Builder: if w case

Witam mam taki problem chce naisac sterowanie do snake z wykluczona opcja zawrcania

String ruch;

       switch (Key)

        {

                case VK_UP: if(ruch!="s"){ry=-10; rx=0; ruch="w";} break;

                case VK_DOWN: if(ruch!="w"){ry=10; rx=0; ruch="s";} break;

                case VK_LEFT: if(ruch!="d"){rx=-10; ry=0; ruch="a"; }break;

                case VK_RIGHT: if(ruch!="a"){rx=10; ry=0; ruch="d";} break;

        }

Lecz niewiem zbytnio jak wkleic tego ifa do case. Moze ktos to poprawic albo powiedziec jak to zrobic?

Lepiej daj typ ruch jako int:

int ruch;

a wewnątrz case:

case VK_UP: if(ruch!=VK_DOWN){ry=-10; rx=0; ruch=VK_UP;} break;

resztę zrób podobnie.

Ale twój kod tez powinien działać, z tym że zmienną ruch należy zadeklarować gdzieś wyżej niż tuż przed switch , jeżeli zrobisz tuż przed to przy każdym uruchomieniu switch wartość zmiennej ruch będzie równa “” (pusty napis)

W C++ nie ma wbudowanego porównywania char* z char*. Musisz albo użyć std::string, albo strcmp ze standardowej biblioteki C, albo zmienić typ(tak jak to powiedział [alex]).

int ruch;

       switch (Key)

        {

                case VK_UP: if(ruch!=VK_DOWN){ry=-10; rx=0; ruch=VK_UP;} break;

                case VK_DOWN: if(ruch!=VK_UP){ry=10; rx=0; ruch=VK_DOWN;}break;

                case VK_LEFT: if(ruch!=VK_RIGHT){rx=-10; ry=0; ruch=VK_LEFT;} break;

                case VK_RIGHT: if(ruch!=VK_LEFT){rx=10; ry=0; ruch=VK_RIGHT;} break;

        }

Niedziala:/

Fiołek , jego zmienna ruch jest typu “String” chyba miał na myśli “string” a nie char*.

Jednak jest :lol: ale porównuje adresy w pamięci a nie napisy pod tymi adresami.

sebikom , jak już prosisz o pomoc to czytaj to co ci odpowiedzieli do końca. W poprzednim poście wydzieliłem zignorowaną przez ciebie istotną informacje.

W mojej bibliotece String był typedef’em na char*/wchar_t* :wink:

Chodziło mi o porównywanie c-stringów, nie wskaźników… Tak ciężko było to wywnioskować z kontekstu rozmowy? :wink:

Ja wywnioskowałem poprawnie, jedynie postawiłem nie zbyt zrozumiały dla Ciebie uśmieszek. :stuck_out_tongue:

Napisałem to nie dla Ciebie (wiem że o tym wiesz) tylko dla innych, aby nie zrozumieli twojego zdania dosłownie.

Ok dzieki wszystko dziala.

A tamtego niezauwarzylem.