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].
- Rejestracja:prawie 16 lat
- Ostatnio:6 miesięcy
- Postów:2514
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
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.