jak zaprogramować kliknięcie

0

Witajcie. Piszę sobie aplikacje puzzle i mam problem z obsługą kliknięcia myszki w Allegro 4. Mam tablicę dwuwymiarową [10][10] i chcę zrobić że jak kliknę na puzzel np. w pozycji tablicy [0][0] a później kliknę sobie w pozycję tablicy[2][2] to chcę żeby puzzel z pozycji tablicy[0][0] zniknął i pojawił się w pozycji tablicy[2][2]. Puzzel to kwadratowa Bitmapa na tablicy[10][10].

0

jak odzdzielisz logikę od widoku to uprościsz sobie życie:

int puzzle[2][2]; // logika. int to id puzzla. Może być np. indeksem do rysunkiPuzzli, a jak np -1 to brak puzla
Bitmap* rysunkiPuzzli[10]; // grafika - Bitmap* zastap czyms co jest w allegro do rysowania

void zamienPuzzle(int x1, int y1, int x2, int y2) // logika - x,y współrzędne w zakresie 0-1
{
  swap(puzzle[x1][y1], puzzle[x2][y2]);
}

void rysujPlansze()
{
  czyscEkran();
  for (int x = 0; x < 2; x++)
    for (int y = 0; y < 2; y++)
      {
        int xp = przeliczWspolrzednaX(x); // przelicza logicznego x na x na ekranie - musisz sobie napisac
        int yp = przeliczWspolrzednaY(y); // jak wyzej tyle ze y
        rysujPuzzel(xp, yp, rysunkiPuzzli[puzzle[x][y]]); // rysuje puzzel na ekranie w punkcie xp, yp, trzeci parametr to bitmapa - ta funkcja powinna byc w allegro
      }
  // tutaj narysuj sobie czas, zycia, itp
}

i jak masz zestaw takich funkcji to kod juz prosto napisac. jak jeszcze dodasz jakies klasy, struktury, enumy dla uproszczenia to bedziesz miec calkiem przyjemny kod

1 użytkowników online, w tym zalogowanych: 0, gości: 1