Page 7 of 17
Re: [Pandora rebirth] Fall to win
Posted: 21 Mar 2012, 23:17
by gigios
Allora, premetto che anche in questo caso non ho guardato il codice ma, l'effetto è abbastanza simile al primo screenshot inviato.
Praticamente ho la sovrapposizione di più muri.
Io proverei a tener conto, nella generazione dei muri, di un 'offset' minimo tra un muro e l'altro, in modo che ci sia lo spazio 'fisico' per far passare il personaggio.

Re: [Pandora rebirth] Fall to win
Posted: 21 Mar 2012, 23:43
by Farox
Io invece con la versione 0.37 ho modificato i tasti...
Code: Select all
//------------------menu
process menu()
private
int posizione;
begin
testo[1]=write(0,400,150,1,"Fall to win");
testo[2]=write_var(0,400,160,1,version);
sfondo(400,240,10);
logo(400,100,9);
fakemarco(260,220,8);
posizione=1;
x=400;y=340;
loop
switch (posizione)
case 1 : posizione=1;//-------------start
graph=41;
frame(500);
if (key(_DOWN)) posizione=2; end
if (key(_SPACE)); principale(); break; end
if (key(_END)); principale(); break; end //tasto B su Pandora
end //endcase
case 2 : posizione=2;//------------option
graph=42;
frame(500);
if (key(_UP)) posizione=1; end
if (key(_DOWN)) posizione=3; end
// if (key(_SPACE)); //menu opzioni ...........se abilito anche questa riga mi da errore!!!
if (key(_END)); //tasto B menu opzioni su Pandora
end
end //endcase
case 3 : posizione=3;//--------------Bonus
graph=43;
frame(500);
if (key(_UP)) posizione=2; end
if (key(_DOWN)) posizione=4; end
//if (key(_SPACE)); //menu BONUS...........se abilito anche questa riga mi da errore!!!
if (key(_END)); //tasto B menu Bonus su Pandora
end
end //endcase
case 4 : posizione=4;//--------------exit
graph=44;
frame(500);
if (key(_UP)) posizione=3; end
if (key(_SPACE))esci=1; end
if (key(_END)) esci=1; end //tasto B su Pandora
end //endcase
end //endswitch
frame;
end
end
ed anche
Code: Select all
//-------------------------marco----
Process marco(x,y,z)
private
//Variabili utilizzate per gestire gli id dei processi durante le collisioni (se servissero in altri processi, toglierli da qui e metterli globali)
muro idMuro;
fuoco idFuoco;
//Variabili private
int premuto;
int premuto2;
int premuto3;
int m_animazione;
int togliVita; //Usata per rimuovere una vita in caso di collisione
int startInvincibilita; //Memorizza l'inizio dell'invincibilità per disattivarla dopo un tempo fisso
begin
graph=10;
palla=0;
invincibile=0;
m_animazione=10;
loop
if(key(_left)) x=x-6; angle=+20000; else angle=0; end
if(key(_right)) x=x+6; angle=-20000; end
if(key(_up)) y=y-6; end
if(key(_down)) y=y+6; end
// if((get_timer()-last_time)>1000)
// if(key(_SPACE))
// last_time=get_timer();
// palla=1; graph=20;
// angle=0;
// frame;
// else palla=0; graph=10;
// end
// end //--appallottolamento
if(palla==0&&(get_timer()-last_time)>50)
graph=m_animazione; m_animazione+=1; frame;
last_time=get_timer();
if (m_animazione>11)
m_animazione=10;
end
end
//if((get_timer()-last_time)>500)
/// se abilito anche queste righe mi da errore nel compilare........
//if(key(_SPACE))
// last_time=get_timer();
// palla=1; graph=20;
// frame;
//else
// palla=0;
if(key(_CONTROL)) // tasto R su pandora
last_time=get_timer();
palla=1; graph=20;
frame;
else
palla=0;
end
//end //--appallottolamento
/// se abilito anche queste righe mi da errore nel compilare........
//if((key(_Z))&& premuto==0 &&palla==0 &&nfiamme>0) fiamme(x-27,y+12);premuto=1; nfiamme=nfiamme-1;end //sparafuoco
//if(!key(_Z)) premuto=0; end
//if((key(_C))&& premuto2==0 &&palla==0 &&nacqua>0) acqua(x+27,y+12);premuto2=1; nacqua=nacqua-1; end //sparaacqua
//if(!key(_C)) premuto2=0; end
//if((key(_X))&& premuto3==0 &&palla==0 &&nfiocco>0) fiocco(x,y+4);premuto3=1; nfiocco=nfiocco-1; end //sparafiocco
//if(!key(_X)) premuto3=0; end
////////////////pandora button
// X: Page Down
if((key(_PGDN))&& premuto==0 &&palla==0 &&nfiamme>0) fiamme(x-27,y+12);premuto=1; nfiamme=nfiamme-1;end //sparafuoco
if(!key(_PGDN)) premuto=0; end
// Y: Page Up
if((key(_PGUP))&& premuto2==0 &&palla==0 &&nacqua>0) acqua(x+27,y+12);premuto2=1; nacqua=nacqua-1; end //sparaacqua
if(!key(_PGUP)) premuto2=0; end
// A: Home
if((key(_HOME))&& premuto3==0 &&palla==0 &&nfiocco>0) fiocco(x,y+4);premuto3=1; nfiocco=nfiocco-1; end //sparafiocco
if(!key(_HOME)) premuto3=0; end
///////////////////////////////////////
if(y<15) y=15; end //limite_superiore
if(y>460) y=460; end //limite_inferiore
if(x<260) x=260; end //limite SX
if(x>540) x=540; end //limite DX
//-------------------------------------------------------------------------
togliVita = 0; //Resetta la variabile utilizzata per togliere una vita
//-------------------------------------------------------------------------
//Le collisioni vengono gestite solo se il personaggio non è invincibile
//Se è già avvenuta una collisione salta i controlli delle altre collisioni (può essere tolto il controllo se si vogliono gestire ad esempio animazioni particolari su più collisioni)
//-------------------------------------------------------------------------
//Collisione con muro
if(togliVita==0)
idMuro=collision(type muro);
if(idMuro)
//Se il muro non è già stato distrutto allora controlla la collisione
if(idMuro.distrutto==0)
if((idMuro.ghiacciato==1) && (palla==1))
//Rende il muro trasparente in quanto viene attraversato e indica che non è più 'pericoloro' ad eventuali passaggi successivi
idMuro.alpha = 50;
idMuro.distrutto = 1;
elseif(invincibile == 0)
//Se il personaggio non è invincibile toglie una vita
togliVita = 1;
end
end
end
end
//-------------------------------------------------------------------------
//Collisione con fuoco
if(togliVita==0)
idFuoco=collision(type fuoco);
if(idFuoco)
//Se il fuoco non è già stato distrutto allora controlla la collisione
if(idFuoco.distrutto==0)
if(idFuoco.spento==1)
//Rende il fuoco trasparente in quanto viene attraversato e indica che non è più 'pericoloro' ad eventuali passaggi successivi
idFuoco.alpha = 50;
idFuoco.distrutto = 1;
elseif(invincibile == 0)
//Se il personaggio non è invincibile toglie una vita
togliVita = 1;
end
end
end
end
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//Gestione Vita
if ((collision(type legno) && palla==0)
or (collision(type laser) && laserspento==0)
or togliVita == 1)
if(invincibile==0)
vite=vite-1; //diminuisce 1 vita
invincibile=1; //diventa invincibile
alpha=100; //trasparentizza
startInvincibilita=get_timer(); //Memorizza il tempo iniziale dell'invincibilità
end
else
//Check Invincibile
if(invincibile==1)
//Controlla per quanto tempo invincibile è a 1
if((get_timer()-startInvincibilita)>1000) //Dopo un secondo resetta l'invincibilità
invincibile=0; //ritorna normal
alpha=1000; //opacizza
end
end
end //Se sbatti col muro muori
//-------------------------------------------------------------------------
frame;
end
end
come potete vedere dai commenti Bennu non lo conosco granchè....infatti per compilare ho dovuto disabilitare la gestione tasti che viene usata da PC....perchè se no mi da errore.
Ah dimenticavo ho mappato i tasti cosi (versione di test e non definitiva..):
DPAD movimenti (che funzionava da sempre anche con le vecchie versioni)
Bottone R (post DX di Pandora) per accucciare ( ma puo andare bene anche B )
A : sparafiocco
X : sparafuoco
Y : spara acqua
B : conferma nei menu
Ancora manca la gestione dell'uscita pensavo di metterla nella gestione della pausa...cioè se in pausa e si preme ESC si esce dal gioco o si torna al menu...ho fatto una prova ma non funziona...
Re: [Pandora rebirth] Fall to win
Posted: 22 Mar 2012, 18:17
by Zip
ieri avevo gia aggiustato y guarda come è gestito ora

@ farox posta la tua versione completa per piacere e chiamala 0.37p e cosi la confronto con la 037 normale

(nella 040 ho aggiunto la possibilita di uscire premendo ESC se si è in pausa)
oppure rimappa usando questa 0041
edit: come puoi vedere gigios la generazione non sembra cosi casuale visto che il rand genera
sx
ssx
cx
ddx
dx
di seguito :/
riedit: ho aggiunto
dopo il begin in GENERA()
sembra essere migliorata la casualita, passo a fare scelta casuale tipi dei muri

Re: [Pandora rebirth] Fall to win
Posted: 22 Mar 2012, 18:29
by gigios
[OT]
Normalmente tutte le funzioni per generare numeri casuali, non sono tali!!!
Di solito, come hai fatto tu, si usa dare un 'seme' di partenza da cui partire a generare i vari numeri casuali.
Praticamente se applichi sempre lo stesso seme la sequenza di numeri generati sarà sempre la stessa, proprio perché non è realmente 'casuale'!
[/OT]
Appena posso provo l'ultima versione

Re: [Pandora rebirth] Fall to win
Posted: 22 Mar 2012, 18:37
by Zip
generazione di tipo casuale introdotta!!!
ora vedo di aggiungere le condizioni
se parte =100 200 300 ecc esce 1 laser
se parte> 400 iniziano a uscire i fuochi
e vedo di rimettere i pwup

per migliorare la casualita che dovrei fare allora?
Re: [Pandora rebirth] Fall to win
Posted: 22 Mar 2012, 18:52
by gigios
Per la casualità nulla!
Basta fare quello che hai fatto, ovvero passare come seed un valore sicuramente variabile, infatti sarà praticamente impossibile che il programma venga eseguito nello stesso giorno e alla stessa ora, con precisione del millisecondo

Praticamente con la tua istruzione di inizializzazione ti sei garantito che ad ogni riavvio dell'applicazione i livelli generati siano sicuramente differenti rispetto all'avvio precedente.
Re: [Pandora rebirth] Fall to win
Posted: 22 Mar 2012, 18:58
by Zip
ho introdotto la parte dei fuochi dopo una certa "parte"
ho notato delle cose da sisetmare!
praticamente i poter acqua ghiaccio fuoco e i rispettivi muri nemici.
se io colpisco con una goccia il fuoco esso si spegne, ok..
ma devevo fare leggere alla goccia la variabile "spento" di fuoco e fare si che se è spento la nuova goccia non si infranga contro il muro semitrasparente ma passi..
c'era un errore che ho corretto in goccie che ho corretto aggiungendo
Code: Select all
if (collision (type fuoco))
frame; break;
in pratica prima una goccia poteva spegnere tanti fuochi ora ho sistemato e si ferma al primo!
ma le nuove gocce non passano
devo sfruttate il pubblic che hai introdotto tu per "spento" ma non ci riesco :/ poi dai un occhiata tu magari
non subito perche devo aggiungere altro
io vedo di migliorare le condizioni legate a parte per aumentare la difficolta..
Re: [Pandora rebirth] Fall to win
Posted: 22 Mar 2012, 19:10
by Zip
come faccio a ottenere una condizione del genere:
dopo che parte ha superato 50
ogni 30 parti generate
genera un fuoco
end
oppure
se parti generate multiplo di 200 (200 400)
genera laser
end
Re: [Pandora rebirth] Fall to win
Posted: 22 Mar 2012, 19:13
by gigios
Ricapitolando, devo vedere il processo goccia, giusto?
Lo rendo come il muro e fuoco!
Re: [Pandora rebirth] Fall to win
Posted: 22 Mar 2012, 19:14
by Zip
aspetta prendi questo che ci sono anche i fuochi..
e se puoi dimmi come dovrei tradurre qulle condizioni