
(paint roeleert btw)
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
| #define CBM_MAX_OBJ 64 // blablabla class cVierkant { public: int x, y, w, h; }; cVierkant Object[CBM_MAX_OBJ] int VergInt(const void *p, const void *q) { return *(int *)p < *(int *)q ? -1 : *(int *)p > *(int *)q; } // -------------------------------------------------------------------- // Opdelen // vierkant array bevat dus al de waarden die je in de afbeelding ziet // -------------------------------------------------------------------- int xs = 0; int ys = 0; int xsplit[1024]; int ysplit[1024]; for( int i = 0; i < CBM_MAX_OBJ; i++ ) { if( Object[i] != NULL ) { // X / X+W if( !IsInArray(xsplit,1024,Object[i]->x) ) { xsplit[xs] = Object[i]->x; xs++; } if( !IsInArray(xsplit,1024,Object[i]->x+Object[i]->w) ) { xsplit[xs] = Object[i]->x+Object[i]->w; xs++; } // Y / Y+H if( !IsInArray(ysplit,1024,Object[i]->y) ) { ysplit[ys] = Object[i]->y; ys++; } if( !IsInArray(ysplit,1024,Object[i]->y+Object[i]->h) ) { ysplit[ys] = Object[i]->y+Object[i]->h; ys++; } } } // Sorteer de arrays qsort(xsplit,xs,sizeof(*xsplit),VergInt); qsort(ysplit,ys,sizeof(*ysplit),VergInt); // En nu hebben we een huge piece of memory waar alles al in gesplit is, en delen we dit grote blok op in de kleinere stukken zoals je in t 2e plaatje ziet // ......................... |
2 vierkantjes welke elkaar overlappen (1e plaatje). Nu heb ik dus geen zin om teveel naar het scherm te tekenen, dus heb ik iets gefixt wat het scherm met de objecten in stukken opdeeld (2e plaatje+source).
Heel leuk allemaal, maar verder in het programma wil ik kijken op welk cVierkant de muis staat. Aangezien de source een array met alle blokken afleverd, zou ik vanuit daar de coordinaten van de muis kunnen gaan vergelijken, maar ja als ik niet weet welke stukken allemaal bij een bepaald cVierkant horen.... Dus had ik het idee om bij het splitsen niet alleen de coordinaten op te slaan, maar ook een pointer naar het cVierkant waar deze splitsing bij hoort. Nu zit ik al een paar dagen te prutsen/denken/slapen etc. maar ik komt er niet uit.
Ik hoop dat het een beetje duidelijk is, anders roept u maar
Zou iemand een kleine hand kunnen toesteken?
Alvast bedankt voor de moeite nemen om deze lap te lezen