position_empty dove sbaglio?

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Avatar utente
sfigatto
Membro
Messaggi: 227
Iscritto il: 18/04/2014, 23:20
Uso: GM:Studio 1.4 Pro
Contatta:

position_empty dove sbaglio?

Messaggio da sfigatto »

salve ragazzi,
vengo subito al dunque.

Ho un timer che funziona come countdown, una volta che il conto alla rovescia arriva a zero si scatenano diversi situazioni (alcuni elementi spariscono, se ne creano di nuovi, aumenta lo score, etc etc.... ).
Il tutto funziona perfettamente.

ora però vorrei che quando 5 posizioni specifiche della room sono occupate il timer arrivi a zero.
Per fare questo ho usato il seguente codice:

in object_control

in step:

Codice: Seleziona tutto

if  !((position_empty (95,68) and position_empty (190,100) and position_empty (270,163) and position_empty (140,195) and position_empty (25,145))
{
global.countdown=0 // variabile del timer portata a zero
}

Purtroppo però quando il gioco parte è come se il timer fosse sempre a zero, come se le 5 posizioni siano tutte occupate, anche se ad inizio gioco sono liberi.

dove sbaglio secondo voi?

Avatar utente
Wolfrost
Membro super
Messaggi: 692
Iscritto il: 03/08/2014, 13:08
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Località: Una galassia lontana lontana...
Contatta:

Re: position_empty dove sbaglio?

Messaggio da Wolfrost »

sfigatto ha scritto:salve ragazzi,
vengo subito al dunque.

Ho un timer che funziona come countdown, una volta che il conto alla rovescia arriva a zero si scatenano diversi situazioni (alcuni elementi spariscono, se ne creano di nuovi, aumenta lo score, etc etc.... ).
Il tutto funziona perfettamente.

ora però vorrei che quando 5 posizioni specifiche della room sono occupate il timer arrivi a zero.
Per fare questo ho usato il seguente codice:

in object_control

in step:

Codice: Seleziona tutto

if  !((position_empty (95,68) and position_empty (190,100) and position_empty (270,163) and position_empty (140,195) and position_empty (25,145))
{
global.countdown=0 // variabile del timer portata a zero
}

Purtroppo però quando il gioco parte è come se il timer fosse sempre a zero, come se le 5 posizioni siano tutte occupate, anche se ad inizio gioco sono liberi.

dove sbaglio secondo voi?
Quando non ti funziona qualcosa prova diverse alternative, anche se è improbabilissimo potrebbe lontanamente essere...
prova così:

Codice: Seleziona tutto

if  (!position_empty (95,68) and !position_empty (190,100) and !position_empty (270,163) and !position_empty (140,195) and !position_empty (25,145))
{
global.countdown=0 // variabile del timer portata a zero
}
Immagine

Immagine

Avatar utente
gameplay_extreme
GMI VIP
Messaggi: 3824
Iscritto il: 13/11/2010, 16:23
Uso: GM:Studio 2
Contatta:

Re: position_empty dove sbaglio?

Messaggio da gameplay_extreme »

come se le 5 posizioni siano tutte occupate
no, secondo il code che hai scritto basta che una posizione sia occupata per fare si che il contenuto tra le graffe venga eseguito.
Immagine
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!

iscriviti qui gratuitamente a GMI !
Spoiler
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
sfigatto
Membro
Messaggi: 227
Iscritto il: 18/04/2014, 23:20
Uso: GM:Studio 1.4 Pro
Contatta:

Re: position_empty dove sbaglio?

Messaggio da sfigatto »


no, secondo il code che hai scritto basta che una posizione sia occupata per fare si che il contenuto tra le graffe venga eseguito.
Ok. questo è un primo passo avanti.
ci studierò un po' sopra.
Il problema è che anche con nessuna posizione occupata porta il timer a zero.

Avatar utente
pacmino
GMI Guru
Messaggi: 2569
Iscritto il: 03/06/2009, 16:38
Specialità: Scazzato cronico
Uso: GM:Studio 2
Località: Seconda stella a destra questo è il cammino e poi dritto, fino al mattino...
Contatta:

Re: position_empty dove sbaglio?

Messaggio da pacmino »

prova con

Codice: Seleziona tutto

if !position_empty(128, 128) and !position_empty(256, 128)
   {
   show_message("occupato")
   }
Immagine

Avatar utente
sfigatto
Membro
Messaggi: 227
Iscritto il: 18/04/2014, 23:20
Uso: GM:Studio 1.4 Pro
Contatta:

Re: position_empty dove sbaglio?

Messaggio da sfigatto »

grazie Pacmino con il tuo codice ottengo lo stesso risultato che ottengo con il mio.
è come se le posizioni siano occupate da subito, ance se in realtà sono vuote.

Il codice di Wolfrost invece funziona:

Codice: Seleziona tutto

if  (!position_empty (95,68) and !position_empty (190,100) and !position_empty (270,163) and !position_empty (140,195) and !position_empty (25,145))
{
global.countdown=0 // variabile del timer portata a zero
}
Il problema è che quando parte il gioco come tutti gli altri codici mi manda subito il timer a zero anche se le posizioni sono vuote, poi però se faccio ripartire il timer del gioco per tutte le volte successiva tutto funziona come dovrebbe, mentre con gli altri codici mi dava le posizioni sempre e costantemente occupate.

Purtroppo ora non ho tempo di provare, ma voglio provare ad aggiungere al codice una variabile true/false per vedere se riesco ad aggirare il problema dell'apertura del gioco in cui segnala le posizioni occupate anche se son libere.
domani vi farà sapere

Avatar utente
pacmino
GMI Guru
Messaggi: 2569
Iscritto il: 03/06/2009, 16:38
Specialità: Scazzato cronico
Uso: GM:Studio 2
Località: Seconda stella a destra questo è il cammino e poi dritto, fino al mattino...
Contatta:

Re: position_empty dove sbaglio?

Messaggio da pacmino »

non è possibile che con il mio codice ottenga lo stesso risultato
crea un progetto nuovo
crea un oggetto con il seguente codice create

Codice: Seleziona tutto

if !position_empty(128, 128) and !position_empty(256, 128)
   {
      global.countdown=0
   }
   else
   {
      global.countdown=100
   }
in draw disegna la variabile

crea un secondo oggetto e metti due istanze nelle posizioni controllate
la variabile dovrebbe stare a zero, ora togli una istanza o tutte e due e la variabile dovrebbe stare a 100
non è che per caso hai impostato che le variabili non inizializzate siano da considerarsi pari a zero? in GM 8 c'era questa opzione ma mi pare che tu usi studio e questa possibilità è stata tolta
Immagine

Avatar utente
sfigatto
Membro
Messaggi: 227
Iscritto il: 18/04/2014, 23:20
Uso: GM:Studio 1.4 Pro
Contatta:

Re: position_empty dove sbaglio?

Messaggio da sfigatto »

Uso la versione professional.

Pacmino prendo un nuovo progetto il tuo codice funziona perfettamente.
Però sul progetto che sto sviluppando non funziona.


Ho comunque risolto il mio problema aggirando il tutto. Nel senso che non uso più position_empty, ora ogni volta che una delle posizioni è occupata c'è una variabile globale che si incrementa di uno tramite la creazione degli oggetti, che appaiano nelle posizioni prestabilite, e quando arriva a 5 azzera il timer e quando parte un nuovo timer la variabile globale si azzera ed è pronta per ricominciare il suo conteggio.



Rimane da capire per pura curiosità perché il codice non funziona sul progetto....

non è che per caso hai impostato che le variabili non inizializzate siano da considerarsi pari a zero? in GM 8 c'era questa opzione ma mi pare che tu usi studio e questa possibilità è stata tolta
Il problema non è questo.

Se trovo qualche spiegazione in qualche neandro sperduto di internet vi farò sapere.

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 178 ospiti