ďťż

Ładny brzuch

Poniższy kod powinien wyświetlać kolorwy znak na konsoli i powinno sie nim dac sterowac W,S,A,D (poczatkowa wersja Snake'a hehe), punkt ten pozostawia ślad bo nie czyszcze ekranu ale mniejsza o to. Dlaczego gdy poruszam myszką punkt się przesuwa ? Co to ma za związek. Czy ktoś mógłby znaleźć tutaj błąd ? Kompilowane pod Gcc (interfejs DevCpp). Może to wina że mam XP albo klawiature USB ??

#include <windows.h> #include <conio.h> #include <stdio.h> #include <time.h> ///////////////////////////////////////////uchwyt ekranu i klawiatury HANDLE m_Screen; HANDLE m_Keyboard; COORD SnakePosition[2000]; char  SnakeDirection; ////////////////////////////////////////////////////////funkcja sleep void sleep(unsigned int mseconds) {    clock_t goal = mseconds + clock();    while (goal > clock()); } //////////////////funkcja zwracajaca kod wcisnietego klawisza w ASCII int GetKey() {     DWORD Read; INPUT_RECORD Event;    ReadConsoleInput(m_Keyboard,&Event,1,&Read); if (Event.EventType == KEY_EVENT)   {   if (Event.Event.KeyEvent.bKeyDown)      {      return Event.Event.KeyEvent.wVirtualKeyCode;      }   }     return 0; } /////////////////////////////////////////////////////////funkcja MAIN main() { //////////////////////////////////////////////////ustawienie uchwytow m_Screen = GetStdHandle(STD_OUTPUT_HANDLE); m_Keyboard = GetStdHandle(STD_INPUT_HANDLE); ///////////////wypelnienie ekranu konsoli kolorem i zmiania nazwy okna FillConsoleOutputAttribute (m_Screen, 0 | 50, 80*25, SnakePosition[0], 0); FillConsoleOutputCharacter (m_Screen, ' ', 80*25, SnakePosition[0], 0); SetConsoleTitle("Snake by Gumis"); //////////////////////////////////////poczatkowe ustawienie zmiennych SnakeDirection = 2; SnakePosition[0].X = 40; SnakePosition[0].Y = 12; SetConsoleTextAttribute(m_Screen, 160 );///////////ustaw kolor tekstu while (1) {   if ( GetKey() == 87) SnakeDirection = 0; else  ///klawisz W if ( GetKey() == 83) SnakeDirection = 2; else  ///klawisz S if ( GetKey() == 65) SnakeDirection = 3; else  ///klawisz A if ( GetKey() == 68) SnakeDirection = 1;       ///klawisz D sleep(200); //////////////////////////////////////////////zmiana polozenia znaku if (SnakeDirection == 0) SnakePosition[0].Y = SnakePosition[0].Y - 1; if (SnakeDirection == 2) SnakePosition[0].Y = SnakePosition[0].Y + 1; if (SnakeDirection == 3) SnakePosition[0].X = SnakePosition[0].X - 1; if (SnakeDirection == 1) SnakePosition[0].X = SnakePosition[0].X + 1; SetConsoleCursorPosition(m_Screen, SnakePosition[0]); ///////////////////////////////////////////////////namaluj pusty znak printf(" ");       } return 0;       }

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •