Problema con il comando della rotella

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Avatar utente
MagicFool64
Membro
Messaggi: 77
Iscritto il: 17/12/2018, 22:26
Uso: GM:Studio 1.4 Pro
Contatta:

Problema con il comando della rotella

Messaggio da MagicFool64 »

Inizio con il dire che uso GM: Studio 1
Vorrei fare che lo sprite dei colori nella GUI cambiano, mentre scorro la levetta del mouse. Ma non funziona. Ecco come ho fatto:

Codice: Seleziona tutto

///CREATE EVENT
colore = 0
image_speed = 0
image_index = 0

///MOUSE WHEEL UP
if colore = 0
    {colore = 1}
if colore = 1
    {colore = 2}
if colore = 2
    {colore = 0}
    
///MOUSE WHEEL DOWN
if colore = 0
    {colore = 2}
if colore = 2
    {colore = 1}
if colore = 1
    {colore = 0}
    
///DRAW GUI
if colore = 0
    {draw_sprite(spr_colori, 0, 32, 32)}
if colore = 1
    {draw_sprite(spr_colori, 1, 32, 32)}
if colore = 2
    {draw_sprite(spr_colori, 2, 32, 32)}
Dove ho sbagliato?
PS: Vi ricordo che gli sprite dei colori devono apparire nella GUI
L'ignoranza è la via per l'autodistruzione

Avatar utente
Simsure
Membro
Messaggi: 223
Iscritto il: 13/09/2013, 21:54
Specialità: Programmazione
Uso: GM:Studio 2
Località: dietro di te...
Contatta:

Re: Problema con il comando della rotella

Messaggio da Simsure »

Una cosa fondamentale nella programmazione é che il codice viene eseguito dall'alto verso il basso. Se prima metti un IF che controlla se colore=0 e se é vero fa diventare colore = a 1,ma poi subito sotto metti un altro IF che controlla se colore=1 e se vero lo fai diventare 2 anche questo verrà eseguito perché si trova subito sotto al primo controllo.
In pratica il tuo codice é un loop e colore parte da 0 ma poi diventa nello stesso istante 1, 2 e poi di nuovo 0.
Puoi risolvere facilmente con una cosina matematica.

Codice: Seleziona tutto

colore = (colore+1) mod 3
Questa nell'evento wheel up aumenterà colore di 1 e MOD che sta per modulo farà si che se supera 2 torni a 0.
In questo modo il codice é anche piu elegante ed breve.

Un'altro consiglio é che puoi anche nel draw gui sintetizzare cosi.

Codice: Seleziona tutto

draw_sprite(spr_colori, colore, 32, 32) 
Se lo sprite deve cambiare frame in base al valore della variabile colore però questa corrisponde al numero del frame puoi direttamente scrivere questo senza nessun controllo IF. Se colore sarà 0 draw_sprite metterà il frame 0 e cosi via.
Immagine
Spoiler
Immagine

Avatar utente
MagicFool64
Membro
Messaggi: 77
Iscritto il: 17/12/2018, 22:26
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Problema con il comando della rotella

Messaggio da MagicFool64 »

Simsure ha scritto:Una cosa fondamentale nella programmazione é che il codice viene eseguito dall'alto verso il basso. Se prima metti un IF che controlla se colore=0 e se é vero fa diventare colore = a 1,ma poi subito sotto metti un altro IF che controlla se colore=1 e se vero lo fai diventare 2 anche questo verrà eseguito perché si trova subito sotto al primo controllo.
In pratica il tuo codice é un loop e colore parte da 0 ma poi diventa nello stesso istante 1, 2 e poi di nuovo 0.
Puoi risolvere facilmente con una cosina matematica.

Codice: Seleziona tutto

colore = (colore+1) mod 3
Questa nell'evento wheel up aumenterà colore di 1 e MOD che sta per modulo farà si che se supera 2 torni a 0.
In questo modo il codice é anche piu elegante ed breve.

Un'altro consiglio é che puoi anche nel draw gui sintetizzare cosi.

Codice: Seleziona tutto

draw_sprite(spr_colori, colore, 32, 32) 
Se lo sprite deve cambiare frame in base al valore della variabile colore però questa corrisponde al numero del frame puoi direttamente scrivere questo senza nessun controllo IF. Se colore sarà 0 draw_sprite metterà il frame 0 e cosi via.
Potresti fare un altro esempio. Perdonami, abbi pazienza
L'ignoranza è la via per l'autodistruzione

Avatar utente
GMI
Admin
Messaggi: 70
Iscritto il: 29/07/2013, 13:28
Contatta:

Re: Problema con il comando della rotella

Messaggio da GMI »

ciao magicfool, ti basta aggiungere gli else altrimenti mette sempre il colore 2

Codice: Seleziona tutto

if colore = 0
    {colore = 1}
else if colore = 1
    {colore = 2}
else if colore = 2
    {colore = 0}
- Tiz (scusate ero loggato con questo)

PS: fai un salto nella chat discord, siamo tutti lì di solito https://discord.gg/0wKBBPIbX2r3S32a
Brutto! ★☆☆☆☆

Avatar utente
MagicFool64
Membro
Messaggi: 77
Iscritto il: 17/12/2018, 22:26
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Problema con il comando della rotella

Messaggio da MagicFool64 »

GMI ha scritto:ciao magicfool, ti basta aggiungere gli else altrimenti mette sempre il colore 2

Codice: Seleziona tutto

if colore = 0
    {colore = 1}
else if colore = 1
    {colore = 2}
else if colore = 2
    {colore = 0}
- Tiz (scusate ero loggato con questo)

PS: fai un salto nella chat discord, siamo tutti lì di solito https://discord.gg/0wKBBPIbX2r3S32a
Funziona, grazie :cappa:
L'ignoranza è la via per l'autodistruzione

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 37 ospiti