Gość Opublikowano 27 Kwietnia 2010 Udostępnij Opublikowano 27 Kwietnia 2010 Witam. Często poruszane jest to pytanie, jak zrobić żeby np. sprawdzić czy wciśnięty jest TAB lub tylda. Marek.S napisał, że tylda odczytywana jest jako 192 (bodajże :P). Dlaczego? Ja mam taki sam problem, gdyż nie wiem jak Gm odczytuje przecinki, slashe itp. Jest jakaś stronka/tabelka/cokolwiek, gdzie zamieszczone są owe numery? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 27 Kwietnia 2010 Udostępnij Opublikowano 27 Kwietnia 2010 http://en.wikipedia.org/wiki/ASCII#ASCII_control_characters http://en.wikipedia.org/wiki/ASCII#ASCII_p...able_characters 100 razy to o wiele za mało. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 27 Kwietnia 2010 Udostępnij Opublikowano 27 Kwietnia 2010 Widzisz, akurat z tego korzystałem i jakoś nie bardzo to chce współpracować. I w ogóle nie widzę tam nigdzie DEC 192 ; P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 27 Kwietnia 2010 Udostępnij Opublikowano 27 Kwietnia 2010 GML keyboard_lastkey i sobie sam sprawdzasz :D . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 27 Kwietnia 2010 Udostępnij Opublikowano 27 Kwietnia 2010 Ooo, dzięki Assassin :D O to mi własnie chodziło ; ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 27 Kwietnia 2010 Udostępnij Opublikowano 27 Kwietnia 2010 dołącze się do tematu bo nie chce spamić nowym :) gm-a nie mam a bardzo chciałbym się dowiedzieć jaki numer odpowiada strzałkom tutaj http://en.wikipedia.org/wiki/ASCII#ASCII_p...able_characters nie ma (a jeśli jest to nie wiem jak się nazywają) a bardzo tego potrzebuje Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 27 Kwietnia 2010 Udostępnij Opublikowano 27 Kwietnia 2010 GML keyboard_lastkeyi sobie sam sprawdzasz :D . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 27 Kwietnia 2010 Udostępnij Opublikowano 27 Kwietnia 2010 gm-a nie mam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Makary155 Opublikowano 27 Kwietnia 2010 Udostępnij Opublikowano 27 Kwietnia 2010 Od strzałek masz stałe vk_up vk_down vk_left vk_right. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 28 Kwietnia 2010 Udostępnij Opublikowano 28 Kwietnia 2010 słyszałem o tym, właśnie w tym problem że coś nie działa void klawiatura(unsigned char key, int x, int y) { switch (key) { case 27: //Escape key cleanup(); exit(0); break; case ' ': if (ruch==true) ruch=false; else ruch=true; break; case 100: _ang+=10; break; case VK_LEFT: _ang-=10; break; } } (opengl) choć jest to dziwne bo obiekt się nie obraca ale error też nie wyskakuje :huh: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 28 Kwietnia 2010 Udostępnij Opublikowano 28 Kwietnia 2010 (opengl) no ale gdzie ten opengl? i wyjasnij te x,y bo patrze i nie widze co ta funkcja robi, po prostu opisz bo nie widze zadnych powiazan a tak nie pomozemy nie wiedzac co robisz :) swoją drogą, masz niejednorodne kody klawiszy. 100 to numpad 4, a VK_LEFT to 37, albo uzywaj numpada albo strzalek nie rozdzielaj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 28 Kwietnia 2010 Udostępnij Opublikowano 28 Kwietnia 2010 opengl to wyjaśnienie (jakby ktoś nie wiedział bo to tylko kawałek kodu :P ) chodzi o to że funkcja korzysta z bibliotek glut itp. unsigned char key ma wartość aktualnie wciśniętego klawisza a x i y to pozycje myszy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 28 Kwietnia 2010 Udostępnij Opublikowano 28 Kwietnia 2010 no skoro piszesz ze obiekt sie nie obraca, to pokaz jak go rysujesz, i jak odbierasz klawisze (gdzie wywolujesz funkcje klawiatura()), bo wciaz mamy ciemno przed oczami. ewentualnie na pw zapodaj kod to poprawie bledy i wyjasnie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 28 Kwietnia 2010 Udostępnij Opublikowano 28 Kwietnia 2010 znaczy obraca się ale po naciśnięciu d (100) a nie VK_LEFT. a co do drugiego nie jest to robione w stylu twórz okienko, podepnij opengl-a pod okienko tylko: void klawiatura(unsigned char key, int x, int y) { //tutaj odbiór klawiszy itp } void inicjujRendering() { //tutaj opcje typu glEnable(GL_DEPTH_TEST); // po prostu inicjowanie ustawień } void zmianawielkosciokna(int w, int h) { //tutaj ustawienia co ma robić kiedy się zmieni wielkosc okna //głównie po to żeby obraz był zawsze takiej samej wielkości } void rysuj() { // to co ma rysowac } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); //styl wyświetlania glutInitWindowSize(400, 400);// można się domyślić glutCreateWindow("LoL"); //tutaj całe automatyczne tworzenie okna podpinanie itp initRendering();// tu też glutDisplayFunc(rysuj); //jaka funkcja ma odpowiadać za rendering glutKeyboardFunc(klawiatura);// ... za odbieranie klawiczy glutReshapeFunc(zmianawielkosciokna);//... co ma robić przy zmainie okna glutMainLoop(); return 0; } ten sposób jest nieco łatwiejszy i przejrzystszy niż z windows.h aha wracojąc do tematu nie ma żadnych błędów po prostu nie czyta VK_LEFT ,VK_UP itd ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 28 Kwietnia 2010 Udostępnij Opublikowano 28 Kwietnia 2010 bo klawisz 100 to nie jest D, tylko numpad 4 swoja droga sprawdze czy Twoje funkcje maja odpowiednie parametry, a do klawiszy uzywaj GLUTowych definicji. EDIT: parametry masz dobre, ale kurde, wedle gluta klawisz strzalki w lewo to faktycznie 100 - standardowo tak byc nie powinno O.o Tak czy siak wpisz tam GLUT_KEY_LEFT itp w kody klawiszy Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 28 Kwietnia 2010 Udostępnij Opublikowano 28 Kwietnia 2010 chyba kawalisz 'd' i tak powinno być według ascii http://en.wikipedia.org/wiki/ASCII#ASCII_p...able_characters i wszystko ma dobre parametry bo tego używam i mam już dużo zrobione a ten sposób co robię jest właśnie najbardziej glutowy EDIT: GLUT_KEY_LEFT i właśnie o to chodziło :thumbsup: EDIT 2: chwila pisze mi error że klawisz 100 już jest użyty a klawisz 100 to d ! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 28 Kwietnia 2010 Udostępnij Opublikowano 28 Kwietnia 2010 no akurat kody klawiszy != kodom znaków, dla tego znak 'd' to dla klawiatury klawisz numpad 4, zas znak 'D' to juz dla klawiatury takze klawisz D EDIT 2: chwila pisze mi error że klawisz 100 już jest użyty a klawisz 100 to d ! EDIT: no perfidnie cos sknociles. Piszesz w Visualu? jak tak to zapodaj projekcik na PW wraz z bibliotekami ktore uzywasz (GLUT itp) to przekompiluje u siebie i sprawdze dokladnie co nie gra Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 28 Kwietnia 2010 Udostępnij Opublikowano 28 Kwietnia 2010 tyle że problem powraca bo jak pisze GLUT_KEY_LEFT to akcja i tak się dzieje po naciśnięciu 'd' edit: zaraz wyśle edit 2: zaraz napisze nowy programik na tej samej zasadzie bo mój projekt byś trochę analizował... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 28 Kwietnia 2010 Udostępnij Opublikowano 28 Kwietnia 2010 a dla sprawdzenia, sprobuj z kodem 0x25 a potem 0x01 (pierwszy powinien zadzialac dla strzalki) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 28 Kwietnia 2010 Udostępnij Opublikowano 28 Kwietnia 2010 a gdzie (jak?) to się zmienia (zawsze używałem domyślnego 0x0 jeżeli chodzi o to co przy kompilacji się pokazuje) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 28 Kwietnia 2010 Udostępnij Opublikowano 28 Kwietnia 2010 te numery 0x25 to kod szesnastkowy, równie dobrze mozesz napisac 37 zamiast tego 0x25, daj to zamiast GLUT_KEY_LEFT :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 28 Kwietnia 2010 Udostępnij Opublikowano 28 Kwietnia 2010 nadal nic :crying: edit masz: #include <iostream> #include <stdlib.h> #include <GL/glut.h> using namespace std; float _ang=100.0f; void klawiatura(unsigned char key, int x, int y) { switch (key) { case 27: exit(0); break; case GLUT_KEY_LEFT: _ang+=10; break; } } void initRendering() { glEnable(GL_DEPTH_TEST); glClearDepth(1.0f); } void wielkosc(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0, (float)w / (float)h, 1.0, 200.0); } void rysuj() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.0f,0.0f,-5.0f); glRotatef(_ang,1.0f,0.0f,0.0f); glColor3f(0.0f,0.1f,0.0f); glBegin(GL_QUADS); glVertex3f(-0.7f, -0.5f, 0.0f); glVertex3f(0.7f, -0.5f, 0.0f); glVertex3f(0.4f, 0.5f, 0.0f); glVertex3f(-0.4f, 0.5f, 0.0f); glEnd(); glutSwapBuffers(); } void odswierz(int value) { glutPostRedisplay(); glutTimerFunc(25, odswierz, 0); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(400, 400); glutCreateWindow("BoB"); initRendering(); glutDisplayFunc(rysuj); glutKeyboardFunc(klawiatura); glutReshapeFunc(wielkosc); glutTimerFunc(25, odswierz, 0); glutMainLoop(); return 0; } sorry że tak długo ale miałem atak pseudo-wirusów EDIT: dobra problem rozwiązany Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się