Iscriviti ora!   
 
Cura-Calvizie.NET  Cura-Calvizie.NET      Game Maker - Come disegnare in stile... 
 



 Menù

Forum
Chat
Calvizie: domande e...

 Ultimi post forum

differenza di età...
allora la storia è questa.mi piace un...

dimensione pagina...
Normal 0 14 ciao premetto che sono...

elfa oscura
questo è il mio primo e vero "capolavoro"(si...

Creare Videogioco...
Salve,mi piacerebbe dare un'occhiata a...

Yu Gi Ho- Il gioco...
Riapro la discussione, visto che la...

Droga... tutta...
Esistono droghe leggere e pesanti oppure...

Il Leviatano di...
Cosa pensate del pensiero di Hobbes e del...

ARANCIA MECCANICA
Gran film, uno dei miei preferiti, assieme a...

Ricordare: si, ma...
Vi piacerebbe poter dimenticare tutte le...

come leggere un...
Ho creato un programma che in vb6 che crea...

La città più bella...
Qual è la città più bella dell'Irlanda? Ho...

 


Game Maker - Come disegnare in stile "strumento matita" di paint


 
Game Maker - Come disegnare in stile

Per farvi capire velocemente cosa sto per andare a spiegare ci basterà aprire paint, selezionare lo strumento matita (dovrebbe comunque essere già selezionato) e disegnare una linea.

Sembra semplicissimo, ma l'azione nasconde un bel procedimento dietro.

Ho notato un problema molto comune nell'imitazione di questa funzione con Game Maker: rimangono dei buchi nella linea disegnata, perché il mouse muovendosi a velocità superiori di 1 ("pixel per step", o non saprei come chiamarla) salta dei pixel.

La soluzione è molto semplice: al posto de punti bisogna disegnare linee.

Devo dire che io stesso prima di raggiungere questa soluzione ho dovuto spremermi un po le meningi: avevo trovato una soluzione, purtroppo non abbastanza professionale da poterci scrivere sopra un tutorial, così sono arrivato all'idea delle linee sfruttate dai primitive.


PROCEDIMENTO: 


Dovremmo utilizzare i primitive ed aggiungere un vertice nella posizione del mouse_x e mouse_y, ma dobbiamo fare in modo che ciò avvenga solo quando il mouse è spostato altrimenti, quando teniamo fermo il mouse, si creeranno un sacco di vertici nello stesso punto.
Dunque andiamo nel "create" e impostiamo:

-------------------------------------------------
oldx = mouse_x;
oldy = mouse_y;
point_x = ds_map_create ();
point_y = ds_map_create ();
vertex_count = 0;
-------------------------------------------------

Ora passiamo allo step e mettiamo:

-------------------------------------------------
if mouse_x! = oldx or mouse_y! = oldy
&& mouse_check_button (mb_left)
{
ds_map_add (point_x, ds_map_size (point_x) +1, mouse_x);
ds_map_add (point_y, ds_map_size (point_y) +1, mouse_y);
oldx = mouse_x;
oldy = mouse_y;
}
-------------------------------------------------

Infine nel draw digitiamo:

-------------------------------------------------
draw_primitive_begin (pr_linestrip);
if ds_map_size (point_x) > 0
for (i = 1; i< = ds_map_size (point_x); i+ = 1)
{
xpoint = ds_map_find_value (point_x, i);
ypoint = ds_map_find_value (point_y, i);
if draw_vertex (xpoint, ypoint)
vertex_count + = 1;
}
draw_primitive_end ();
--------------------------------------------------

Ora le spiegazioni:

per creare vertici solo al movimento del mouse dobbiamo servirci di due variabili che rappresentano le mouse_x e mouse_y ma
si aggiornano solo quando il cursore è in una posizione diversa da quella memorizzata e riassumono i valori mouse_x e mouse_y.
Quando ciò avviene, possiamo aggiungere il vertice ma lo faremo in modo indiretto, ovvero creando due map (point_x e point_y) dove memorizzeremo le coordinate dei punti che dovremo aggiungere come vertici. Nel "draw" con un "for" troveremo i valori salvati sulla mappa e li utilizzeremo per disegnare i vertici.

Super_Slascio della Freank-Expo



Autore: Freank

 Commenti
LEGGI TUTTI

News di attualità

Fate disoccupate,...
Nel campo dell'immagine succede sempre più...

Troppo affetto...
E' di poche settimane fa la sentenza della...

Forex: un mercato...
Il Forex (Foreign Exchange Market) è un...

3) Un RPG in XNA -...
Non c'è molto da dire su questo argomento,...

Libertà: siamo...
Libertà, essere liberi, cosa significa?...

 




pubblicità | siti partner | regole | visione | diritti | ufficio stampa | donazioni | scrivici
© 1999-2012 - P.IVA 02284690035 - Grafica, layout e contenuti sono di esclusiva proprietà di Cura-Calvizie.NET.

Web Design by ArcadiA Club

Powered by:
Spazi pubblicitari di alto livello