Jump to content

Aiuto Con Dark Basic


Recommended Posts

Salve a tutti, sto creando un videogioco in Dark Basic, piu precisamente un RPG in stile jappo. Premetto che utilizzo il Dark da circa 10 giorni e non ho conoscenze in campo di programmazione, e sono qui per chidere qualche aiuto:

1. Come faccio a creare in Dark Basic uno script per il salvataggio\caricamento della partita?

2. Come faccio a fare uno script che mi permette di passare da una mappa a un' altra? Cioè un trasporto in un' altra mappa, mi hanno parlato di ID ma non so come settarli.

3. Sono riuscito a far muovere il mio modello, ma quando premo ad esempio freccia giu piu freccia destra il personaggio si gira verso destra e cammina in diagonale, come faccio a far si che premendo questi due tasti insieme il personaggio si volti in diagonale? per il movimento il mio script è questo

do

if upkey()=1 then yrotate object 1,0 : move object 1,0.25

if downkey()=1 then yrotate object 1, 180 : move object 1,0.25

[...]

loop

Per adesso mi servono queste tre cose, vi prego è molto importante! Il linguaggio lo sto capendo grazie ai tutorial inseriti in dark basic, ma su queste cose non ho trovato nulla, nè sul tutorial nè su google. Grazie a tutti anticipatamente

PS: se qualcuno esperto ha un pò di tempo e mi passasse il suo msn per aiuto sul progetto lo ringrazio XD Ciao

Link to post
Share on other sites

Ciao,

questo è un messaggio generato automaticamente.

Se hai ricevuto questo messaggio è perché la tua discussione è stata spostata e messa nella sezione più appropriata.

Quando crei una discussione ti preghiamo di far attenzione ad inserirla nella sezione corretta in modo che sia più facile per tutti consultare il forum.

grazie per la collaborazione

lo staff di Treddi.com

"La potenza è nulla senza controllo" del mouse.

Link to post
Share on other sites

Premetto che non conosco darkbasic, ma da come sono messi gli if direi che succede questa cosa qui.

hai postato i tasti su e giù, comunque immagino che anche per destra e sinistra sia simile.

Premi UP: Il primo if ha successo l'oggetto viene ruotato di 0 gradi (in pratica non viene ruotato) ma viene spostato, il secondo if fallisce

Premi RIGHT: il primo if fallisce, il secondo invece ha successo l'oggetto viene ruotato e spostato

Premi contemporaneamente UP e RIGHT: Entrambi gli if hanno successo, quindi viene prima ruotato di zero gradi e spostato, viene ruotato un'altra volta e rispostato. Quindi la rotazione finale è sempre impostata dall'ultimo if che trova (o forse si somma), mentre lo spostamento è sommato.

Dovresti controllare prima che stati sono premuti e dopo che sai tutti i tasti premuti sposti e giri.

Una cosa del genere.

Te lo scrivo in C++ visto che conosco solo quello, non dovrebbe essere difficile tradurlo in darkbasic

unsigned int direzione = 0;


if(upkey())

  direzione &= 1;

if(rightkey())

  direzione &= 2;

if(downkey())

  direzione &= 4;

if(leftkey())

  direzione &= 8;


//Adesso analizzi tutte le combinazioni

switch(direzione)

{

case 1: // avanti

(ruota e muovi)

break;

case 2: // destra

(ruota e muovi)

break;

case 3: //avanti + destra

(ruota e muovi)

break;

case 4: //indietro

(ruota e muovi)

break;

case 5: // indietro + avanti

Non fare niente

break;

case 6: // indietro + destra

(ruota e muovi)

break;

case 7: // avanti + indietro + destra

Non fare niente

break;

case 8: // sinistra

(ruota e muovi)

break;

case 9: // sinistra + avanti

(ruota e muovi)

break;

case 10: // sinistra + destra

Non fare niente

break;

case 11: // sinistra + destra + avanti

Non fare niente

break;

case 12: // sinistra + indietro

(ruota e muovi)

break;

case 13: // sinistra + indietro + avanti

Non fare niente

break;

case 14: // sinistra + indietro + destra

Non fare niente

break;

case 15: // sinistra + indietro + avanti + destra (l'utente si è addormentato sulla tastiera)

Non fare niente

break;

}

Naturalmente per i casi strani (avanti + indietro) è consigliabile non fare niente.

Ciao!!!

Link to post
Share on other sites

Ciao, per quanto riguarda il caricamento o salvataggio della partita...

presumo si tratti semplicemente di memorizzare i valori importanti della partita, che possono poi essere reimpostati sotto la mascheratura del caricamento.

mi spiego meglio...

faccio un esempio con uno sparatutto.

colpi in canna

colpi nel caricatore

residuo vita

ultima posizione sulla mappa

target completati

nemici uccisi

etc etc etc

se crei delle variabili# ti è possibile immagazzinare queste informazioni, quindi salvarle, e poi successivamente caricarle.

quindi se imposti questa funzione ad esempio sul tasto f5, (magari in numero limitato)...o anche se impostassi un salvataggio automatico, dovresti semplicemente dire a darkbasic di memorizzare quei dati importanti in alcune variabili. (che verranno immagazzinate in un file txt)

se poi vuoi caricarle, semplicemente, premendo ad esempio f8, ti verrranno caricate le variabili contenute nel file txt, e verranno sovrascritte alle variabili in lettura nel gioco, così facendo ricrei l'ultima situazione in cui si trovava il character.

questo è ovviamente solo lo schema concettuale, sono al lavoro e non uso dark basic da troppo, ma credo che questo sia il concetto...

che ne pensi?

ciao

Link to post
Share on other sites

hey ho letto bene ora il tuo mex...il mio msn lo trovi nella mia pagina profilo in treddi, e per il problema della rotazione, risolvi con un comando semplicissimo che non ricordo, quando torno a casa lo cerco, ma è davvero roba di pochi cmq in orizzontale.

aggiungimi pure se vuoi che stasera ne parliamo

Link to post
Share on other sites
  • 2 months later...
Salve a tutti, sto creando un videogioco in Dark Basic, piu precisamente un RPG in stile jappo. Premetto che utilizzo il Dark da circa 10 giorni e non ho conoscenze in campo di programmazione, e sono qui per chidere qualche aiuto:

1. Come faccio a creare in Dark Basic uno script per il salvataggio\caricamento della partita?

2. Come faccio a fare uno script che mi permette di passare da una mappa a un' altra? Cioè un trasporto in un' altra mappa, mi hanno parlato di ID ma non so come settarli.

3. Sono riuscito a far muovere il mio modello, ma quando premo ad esempio freccia giu piu freccia destra il personaggio si gira verso destra e cammina in diagonale, come faccio a far si che premendo questi due tasti insieme il personaggio si volti in diagonale? per il movimento il mio script è questo

do

if upkey()=1 then yrotate object 1,0 : move object 1,0.25

if downkey()=1 then yrotate object 1, 180 : move object 1,0.25

[...]

loop

Per adesso mi servono queste tre cose, vi prego è molto importante! Il linguaggio lo sto capendo grazie ai tutorial inseriti in dark basic, ma su queste cose non ho trovato nulla, nè sul tutorial nè su google. Grazie a tutti anticipatamente

PS: se qualcuno esperto ha un pò di tempo e mi passasse il suo msn per aiuto sul progetto lo ringrazio XD Ciao

Ciao , sono DarkTy , il programmatore numero 1 in Italia in DarkBasic :-) Non esagero vero :blink2:

Ecco le risposte:

1) Devi creare un file di testo all'evento SALVA, e in SCRITTURA Sequenziale memorizzi i valori delle tue variabili di stato da poter poi LEGGERE per l'importazione del livello e degli stati dell'entità e della scena(dall'equipaggiamento, all'ambiente e a tutto ciò che vuoi reimpostare) per questo vedi i comandi:

-Open file for read

-Open file for write

e i comandi relativi a questi

per cose semplici puoi utilizzare i comandi DATA all'interno del sorgente e leggere i dati con il comando READ

(Vedi esempio/tutorial "Gnack in the gnackland world" di DarkTy su Treddi)

2) Semplicemente cancellando o nascondendo la "mappa corrente" e caricando la "mappa desiderata"

3) Premendo i tasti giu' e a destra contemporaneamente con il codice che hai scritto:

if upkey()=1 then yrotate object 1,0 : move object 1,0.25			 :Rem La rotazione dell'oggetto è a 0 gradi

if downkey()=1 then yrotate object 1, 180 : move object 1,0.25	 :Rem La rotazione dell'oggetto è a 180 gradi
aggiungi questa riga
if UpKey()=1 and DownKey()=1 then YRotateObject 1,45:move object 1,0.25 :Rem L'oggetto è orientato a nord-est e avanza di 0.25 unità
stessa cosa dovresti fare per le altre diagonali , ma in questo modo il tuo oggetto avrà soltanto 4 orientazioni + 4 in diagonale, quindi potresti rivedere la tua strategia di controllo del personaggio cambiando la logica del controllo del personaggio cioè: Tasti : Freccia Su = Avanza Freccia Giu = Retrocede o frena Freccia Sx = Ruota in senso Antiorario Freccia Dx = Ruota in senso Orario E quindi :
Rem ===================

Rem Controllo del Personaggio 1

Rem ===================

If UpKey()=1 Then Move Object 1,0.25

If DownKey()=1 Then Move Object 1,-0.25						   :Rem Nota il segno meno 0.25

If LeftKey()=1 Then Yrotate Object 1,(Object Angle Y(1),-1)   :Rem Gira di un grado in senso AntiOrario (metti un numero piu' grande di 1 , cioè -3 o -5 o -10 o -15 , se metti -45 gira a scatti di 45 gradi come nel tuo esempio

If RightKey()=1 Then Yrotate Object 1,(Object Angle Y(1),1)   :Rem Gira di un grado in senso Orario (metti un numero piu' grande di 1 , cioè 3 o 5 o 10 o 15 , se metti 45 gira a scatti di 45 gradi come nel tuo esempio

Text 20,20,"Angolo Y corrente = " + Str$(Object Angle Y(1))  :Rem Visualizza il testo con il valore dell'angolo corrente del tuo personaggio

Rem ===================

CIAO! :-)

Edited by DARKTy
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Per garantire la migliore esperienza di navigazione possibile questo sito utilizza cookie tecnici, statistici e di terze parti. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all'uso dei cookie. Privacy Policy - Cookie Policy