[Pandora rebirth] Fall to win

Spazio dedicato al linguaggio BennuGD per programmare videogiochi sulle nostre openconsole
User avatar
gigios
Newser OC.it
Newser OC.it
Posts: 851
Joined: 4 May 2011, 9:08
Console open: Wiz; Caanoo
Location: Lombardia

Re: [Pandora rebirth] Fall to win

Post by gigios »

Allora, ho provato a modificare il processo acqua nel seguente modo:

Code: Select all

//-------------------------------------------°°Acqua
process acqua(x,y)
private
fuoco idFuoco;
begin
	graph=8;
	loop   
		y=y+4; 
		if(y>480) break;end
		
		idFuoco = collision (type fuoco);
		if ((idFuoco) && (idFuoco.spento==0))
			frame;
			break;
		end 
		
		frame; 
	end
end
Ovvero prendo l'ID del processo fuoco con cui la goccia va in collisione, a questo punto se c'è collisione e la variabile spento del fuoco è 0, allora la goccia deve morire, altrimenti può attraversare il muro di fuoco!
Il problema è che funziona, ma ogni tanto la goccia non muore ma attraversa comunque il fuoco ancora acceso.
Secondo me il problema è legato a come l'engine di bennu analizza i vari processi, probabilmente il fuoco si accorge che è in collisione con una goccia e, quindi, si spegne, poi la goccia si accorge che è in collisione con il fuoco ma che questo è già spento!
La soluzione sarebbe quella di gestire le collisioni del fuoco direttamente in un solo processo, magari settando una variabile pubblica nell'altro x farlo morire (oppure usando signal(idAcqua,s_kill);)
Prova a vedere tu se trovi la causa a questo problema, secondo me, ripeto, è legato alla gestione delle collisioni in due processi diversi.

Per la domanda relativa a come controllare i valori multipli, potresti utilizzare il resto di una divisione, ovvero usando l'operatore % ottieni il modulo, ovvero il resto, della divisione.
es: 200 % 100 = 0 ovvero 200 è divisibile per 100, quindi è un suo multiplo!
Nel caso del laser diventerebbe:

Code: Select all

if((parte%200)==0)
        genera laser
end
Image
User avatar
gigios
Newser OC.it
Newser OC.it
Posts: 851
Joined: 4 May 2011, 9:08
Console open: Wiz; Caanoo
Location: Lombardia

Re: [Pandora rebirth] Fall to win

Post by gigios »

Confermo che se modifico fuoco in questo modo, per segnalare al processo acqua di morire, tutto funziona correttamente.

Code: Select all

//--------------------------------------------##FUOCO
process fuoco(x,y)
private
acqua idAcqua;
begin
    graph=4;
    walls=walls+1;
    loop
		y=y-3;                                       			//SAli!
		
		//se superi il bordo superiore muori
		if(y<1)
			walls=walls-1;
			score=score+15;
			break;
		end
		
		//se ti tocca l'acqua muori(fuoco)
		idAcqua=collision(type acqua);
		if(idAcqua)
			if(spento==0)
				signal(idAcqua, s_kill);
			end
			score=score+25;
			alpha=50;
			spento=1;
		end
		
		frame;
    end
end
Praticamente se il fuoco è in collisione con la goccia, ed è ancora acceso, ovvero spento==0, allora segnalo al processo acqua di morire e poi cambia la sua trasparenza e si spegne.
Se così non ti piace possiamo pensare a definire in tutti i processi, o almeno inizialmente in acqua, una variabile public 'kill' da utilizzare per segnalare al processo in esame di 'morire'.
La differenza rispetto alla gestione con signal è che potresti far eseguire del codice all'interno del processo prima di ucciderlo effettivamente (ad esempio impedire che muoia x qualche altro motivo).
Image
Farox
Cavaliere OC.it
Cavaliere OC.it
Posts: 812
Joined: 4 May 2011, 20:48
Console open: GP2X-F200 bianca, Caanoo (bianca),
Pandora (First Batch 256MB RAM) nera,
JXD S7300B nera, Rpi model B
Location: Umbria
Contact:

Re: [Pandora rebirth] Fall to win

Post by Farox »

rieccomi...
Ho adattato i tasti alla versione 0.43...
ora sono
B ...per la conferma delle opzioni del menu
durante il gioco:
B oppure R (bottone post dx) per appallottolare il personaggio
Y (Page up)...sparafuoco
A (Home) .....sparaacqua
X (Page down)..sparafiocco
testato anche che ora il gioco (se messo in pausa) esce correttamente premendo ESC (Fn+Q).
Attachments
ftw_p043.zip
(5.62 KiB) Downloaded 460 times
Image
User avatar
Zip
Site Admin
Posts: 3100
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Re: [Pandora rebirth] Fall to win

Post by Zip »

grazie gigios, quale delle 2 soluzioni consigli? anzi quale è quella che si puoi implementare piu velocemente?

grazie anche a te farox, per quanto riguarda il PND sei riuscito a capire come creare un PND o gli consegnamo il gioco compilato?

io avevo pensato per il map tasting questa configurazione:
Y acqua
A fuoco

X fiocco
B appallottola

considera che appallottolarsi sara essenziale quale viene meglio come posizione da schiacciare sempre? B o X?

Y e A devi invertirli cosi hanno lo stesso verso di come escono dalle mani di marco

edit: ho inventato un nuovo vocabolo e me ne sono accorto solo ora
"map tasting" significa "button mapping" :D :D

riedit:
@farox quindi il joy button() joy set() ecc non serve a un cavolo?
per uscire dal menu pausa magari mettiamo "e" o vedi tu
User avatar
gigios
Newser OC.it
Newser OC.it
Posts: 851
Joined: 4 May 2011, 9:08
Console open: Wiz; Caanoo
Location: Lombardia

Re: [Pandora rebirth] Fall to win

Post by gigios »

Sicuramente la più veloce attualmente è quella che ti ho postato sopra, ovvero usare signal x notificare al processo di 'morire'.
La più elegante forse è l'altra, ma a noi in questo momento non interessa l'eleganza ;)
Image
Farox
Cavaliere OC.it
Cavaliere OC.it
Posts: 812
Joined: 4 May 2011, 20:48
Console open: GP2X-F200 bianca, Caanoo (bianca),
Pandora (First Batch 256MB RAM) nera,
JXD S7300B nera, Rpi model B
Location: Umbria
Contact:

Re: [Pandora rebirth] Fall to win

Post by Farox »

Zip wrote: grazie anche a te farox, per quanto riguarda il PND sei riuscito a capire come creare un PND o gli consegnamo il gioco compilato?
Tu dimmi quello che preferisci...va bene sia PND che semplice compilazione con runtime..non ho problemi nel crearli... :)
Zip wrote: io avevo pensato per il map tasting questa configurazione:
Y acqua
A fuoco

X fiocco
B appallottola

considera che appallottolarsi sara essenziale quale viene meglio come posizione da schiacciare sempre? B o X?

Y e A devi invertirli cosi hanno lo stesso verso di come escono dalle mani di marco

edit: ho inventato un nuovo vocabolo e me ne sono accorto solo ora
"map tasting" significa "button mapping" :D :D

riedit:
@farox quindi il joy button() joy set() ecc non serve a un cavolo?
per uscire dal menu pausa magari mettiamo "e" o vedi tu
Bene ho provato a giocare con la disposizione che hai indicato...cioè
Y acqua
A fuoco
X fiocco
B appallottola ( oppure R )

e poi... ho cambiato in:

Y acqua
A fuoco
B fiocco
X appallottola (oppure R)
cosi si gioca un po meglio (anche se raggiungere la Y non sempre è cosi immediato)
Certo la soluzione migliore sarebbe quella di poter lasciare al giocatore i tasti da usare...ma anche cosi non è male....io lascerei la doppia opzione per appallottolarsi sia con X che con R magari qualcuno la trova confortevole.

Per quanto riguarda joy button() joy set() io non li ho trovati nel codice...dove sono ? e cmq penso che non servano ( o forse per il pad...non so) dimmi come disabilitarli e faccio delle prove.

Anche per l'uscita direi che va bene così senza aggiungere un tasto in piu...uno mette in pausa e poi se preme p ritorna a giocare se no se preme esc esce dal gioco.
Image
User avatar
Zip
Site Admin
Posts: 3100
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Re: [Pandora rebirth] Fall to win

Post by Zip »

@farox
-il joy set ecc erano in 0029p credevo che per mapare i controlli bisognava usare quelli come per caanoo, ma sembra quindi che per pandora bisogna solo impostare i tasti come una tastiera normale :)

-meglio un pnd secondo me se parte subito a primo colpo

-anzi farox ho pensato a questa altra disposizione:
L=fuoco
R= acqua
X=appallottola
B=fiocco..
come ti sembra?


@ gigios cerco di capire bene e implementare la tua soluzione allora :)
devo toccare solo fuoco quindi? gli altri sono invariati come processi?
User avatar
gigios
Newser OC.it
Newser OC.it
Posts: 851
Joined: 4 May 2011, 9:08
Console open: Wiz; Caanoo
Location: Lombardia

Re: [Pandora rebirth] Fall to win

Post by gigios »

Si! Ho toccato solo fuoco (in precedenza avevo provato a lavorare su acqua ma ho riscontrato il problema che ti ho detto, ovvero che a volte l'acqua non muore perché trova il fuoco già spento, anche se è stata lei a spegnerlo).
Le operazioni che ho fatto sono:

- Definire una variabile privata di tipo acqua

Code: Select all

private
acqua idAcqua;
- Sostituire la gestione della collisione in questo modo:

Code: Select all

      idAcqua=collision(type acqua);
      if(idAcqua)
         if(spento==0)
            signal(idAcqua, s_kill);
         end
         score=score+25;
         alpha=50;
         spento=1;
      end
Ovvero l'istruzione collision ritorna l'ID del processo con cui si è in collisione, in questo modo è poi possibile chiamare l'istruzione signal passando direttamente questo id x terminare il processo.
Image
User avatar
Zip
Site Admin
Posts: 3100
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Re: [Pandora rebirth] Fall to win

Post by Zip »

non funziona :/
devo levare il break; da acqua forse?
edit: si infatti ok!
User avatar
Zip
Site Admin
Posts: 3100
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Re: [Pandora rebirth] Fall to win

Post by Zip »

ecco la 0046

Code: Select all

//CHANGELOG:
//0046 introdotti PWUP scoperto nuovo bug laser T_T bisogna dichiarare laserspento public credo..
//0045 frame portato a 5000; aggiustato break acqua in modo che le goccie oltrepassino fuoco spento, DA FARE: FIOCCHI & MURI
//0044 introdotte condizioni per fuoco e laser
il laser sembra essere impazzito! sembra che non muoia dopo 5 colpi e i laser successivi nascono spenti T_T
credo bisogna dichiarare laserspento pubblic perche ora sara global

ho implementato il fatto di mandare il segnale a acqua tutto ok,
ma devo fare lo stesso con fiocco che pero deve leggere anche se il muro è stato ghiacciato e abbattuto!

forse il signal bisogna metterlo anche in laser (fiamme)?

introdotti i Pwup!

ora dobbiamo studiare come fare uscire fuoco laser e pwup nel senso ogni quante parti :/

Ho commentato tutto il commentabile nell funzione genera (come mi ha insegnato il sommo gigios)
per far capire come ho lavorato a tutti
Attachments
ftw0_046.zip
(58.77 KiB) Downloaded 466 times
Post Reply