Problema variabili

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Sharkiller
Newbie
Messaggi: 8
Iscritto il: 06/09/2017, 12:37
Uso: GameMaker 8.1
Contatta:

Problema variabili

Messaggio da Sharkiller »

Salve a tutti, sono nuovo del forum, ma sono anni che uso gamemaker. Ho sempre fatto giochini per passatempo e ora vorrei fare qualcosa di più articolato.
Sto creando un gioco con vista dall'alto dove un omino deve prendere gemme, bombe e chiavi. Sto usando la score per quanto riguarda i punti con le gemme,mentre per le bombe vorrei si potesse fare che quando ne prendo una aumenti la variabile fino a un massimo di 6 e che quando le uso, ovviamente, scenda. In più vorrei che comparisse lo sprite in alto a una coordinata specifica e che sparisca quando la variabile e uguale a zero. Sono riuscito a far si che quando uso le bombe distrugga un oggetto specifico, ma sono a destra, non riesco a far si che "l'esplosione" avvenga tenendo premuto un tasto più la direzione del muro. So che sto chiedendo tanto ma proprio non riesco. Sto provando sia con lo script che con i "mattoncini" ma nulla. Grazie in anticipo.

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 variabili

Messaggio da Simsure »

Ciao Sharkiller,proviamo ad andare per step:
Potresti usare i drag&drop (che credo tu chiami "mattoncini") come penso tu faccia avendo nominato lo score,però anche per iniziare ad impratichirti,il che ti tornerà utile,ti mostrerò come farlo in codice.

Lascia perdere gli score,puoi gestire tutti e 3 gli elementi:chiavi,gemme(punti) e bombe con delle variabili.
Per renderle facilmente utilizzabili da ogni oggetto nel tuo gioco e per semplificare un attimo,le renderemmo globali,ti basterà quindi crearle in un oggetto per poi poterle usare ovunque.

Prendiamo ad esempio il tuo giocatore,per ora puoi dichiarare qui le variabili usando questo codice nell'evento CREATE:

Codice: Seleziona tutto

globalvar gemme;
globalvar bombe;
globalvar chiavi;

gemme = 0
bombe = 0
chiavi = 0

Adesso hai 3 variabili per tenere il conteggio di tutto.

Per modificarle ti basterà dire quando il giocatore tocca una gemma o una bomba o altro,questo:

Codice: Seleziona tutto

bombe += 1
oppure

Codice: Seleziona tutto

bombe -= 1
Cosi diminuisci o aumenti il contatore delle bombe,e se come hai detto vuoi porre un limite quando ne ottieni 6,ti basta usare un "IF"

Codice: Seleziona tutto

if bombe < 6
{bombe += 1}
Cioè se le tue bombe sono meno di 6,allora aggiunge una,altrimenti niente.


Per disegnare lo sprite ti conviene creare un oggetto apposito che gestisca l'interfaccia di gioco,io per esempi lo chiamo sempre "obj_HUD",al suo interno devi creare un evento "DRAW GUI" che serve apposta per scrivere o disegnare sopra lo schermo diciamo,partendo dalle coordinate (0,0) che corrisponde al punto in alto a sinistra nello schermo,quindi per disegnare per esempio lo sprite della bomba nell'angolo e a fianco il numero di bombe che possiedi puoi fare cosi:

Codice: Seleziona tutto

draw_sprite(spr_bomba,0,0,0)
draw_text(32,0,bombe)
Il primo disegna il frame 0 dello sprite bomba alle coordinate (0,0)
Il secondo scrive il numero della variabile "bomba" piu a destra dello sprite ma alla stessa altezza
Queste sono le funzioni che ho usato,se vuoi vedertele meglio
https://docs.yoyogames.com/source/dadio ... prite.html
https://docs.yoyogames.com/source/dadio ... _text.html

Per far si che tutto questo venga disegnato a schermo solo se hai almeno una bomba basta usare un'altro IF

Codice: Seleziona tutto

if bombe > 0
{
draw_sprite(spr_bomba,0,0,0)
draw_text(32,0,bombe)
}
Spero che questo ti sia utile per capire o approfondire meglio i concetti di variabili e condizioni e ti aiuti nel tuo gioco ;)

Vorrei aiutarti anche per la questione di dove avviene l'esplosione,ma non ho capito bene cosa intendi,puoi spiegarmi meglio cosa succede o cosa vuoi che succeda quando usi una bomba?
Immagine
Spoiler
Immagine

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 144 ospiti