![]() |
| | #1 (permalink) | ||
| Registered User Join Date: Sep 2003 Location: Bucuresti |
Buna. Mi-a venit o idee dar nu prea stiu cum s-o pun in practica. Sa zicem ca avem mai multe poligoane care sa intersecteaza. Cum fac ca prin click in interiorul unei suprafete inchise aceasta sa se coloreze cu o anumita culoare? Fara sa cunosc coordonatele ci doar bazat pe o imagine gen colorare in paint. Exista functii gata facute pt asa ceva? Puteti sa-mi dati un exemplu? Eu sunt incepatoare in lumea programarii jocurilor. Din cate am inteles pt 2D indicat ar fi directX, nu? Dar la noi in tara nu exista nici o carte pt game developers asa cum am vazut pe site-uri straine... Asa ca invatam de pe internet? Astept sugestii si va multumesc in avans. | ||
|
| | #5 (permalink) | ||
|
Ar fi bune cateva detalii - ce limbaj de programare folosesti, ce biblioteca grafica... Daca nu gasesti o functie in biblioteca respectiva poti sa incerci sa scrii tu functia (o varianta ineficienta, dar usor de inteles ar fi sa faci o functie recursiva care sa ia punctul de inceput si sa ii verifice vecinii).
__________________ Sticky: Proiect pentru copiii saraci! | |||
|
| | #9 (permalink) | ||
| Registered User Join Date: Jun 2003 Location: Pitesti |
in 2D un pixel are [CODE] 123 8*4 765 [/CODE] Dupa cum vezi... sunt 8 vecini ![]() Daca vrei un algoritm recursiv, poate fi destul de costisitor... Atentie, in exemplu, daca 2 cu 8 formeaza o linie neagra nu poti colora pe 1 daca el ar fi alb, chiar daca e vecin cu pixelul * (pentru ca 2 cu 8 formeaza o linie si separa planele).
__________________ Hide your face for ever... Dream and search for ever... Last edited by Arise; 19-10-2004 at 11:50.. | ||
|
| | #10 (permalink) | ||
| Guest |
In concluzie pt. fill apelezi fc. recurenta doar pt. 4 vecini... -1- 2*3 -4- Coordonatele astora is fix astea : dx={0,-1,1,0} dy={-1,0,0,1} Doar frigi o fc. recursiva puturoasa de genul : void fill(int x, int y) { if (x>=0&&y>=0&&x<=xmax&&y<=ymax) //ca sa nu-ti colorezi si boxele if (getcolor(x,y)==filledcolor) { setcolor(x,y,fillcolor); for (int i=0;i<4;i++) fill(x+dx[i],y+dy[i]); } } si gata (daca merge). PS: Totusi, in Romania, helicicultura si traforajul sunt alternative mult mai competitive decat productia de jocuri. | ||
|
![]() |
|
| Thread Tools | |
|
|