• Benvenuto in Making Videogames!
  • Condividi la tua passione!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati



Valutazione discussione:
  • 3 voto(i) - 5 media
  • 1
  • 2
  • 3
  • 4
  • 5
Title: Guida ai comandi Dark Basic
Modi discussione
#1
Guida ai comandi Dark Basic realizzata da me circa due anni fa. Big Grin Purtroppo questa guida non l'ho mai completata visto che non é mai servito a nessuno ma da ottime basi ai comandi principali che allora ritenevo i più utili Smile Sono per il vecchio Dark Basic ma applicabili anche al Professional Cool Tuttavia ricorcate che per imparare un linguaggio ci vuole creatività e sopratutto volontà, ci sono poi anche degli esempi nella guida. Wink

Citazione:GUIDA AL DARK BASIC

Interamente scritto da Jonathan Archer

La copia è severamente punita

Copyright 2008 "Jonathan Archer Produzioni" Tutti i diritti riservati


|----------COME INCOMINCIARE----------|

Prima di iniziare a spiegare tutti i comandi bisogna fare una premessa: tutti i seguenti comandi dovranno essere scritti nell' editor di Dark Basic.Sulla sinistra verranno posizionati i comandi mentre sulla destra una sintesi del suo funzionamento.Il primo comando é PRINT che verrà usato spesso in questo manuale per fare esempi vari.

PRINT "(testo)" Scrive una stringa nello schermo

Es:
PRINT "Ciao a tutti!"

|----------VARIABILI E STRINGHE----------|

Le variabili sono dei numeri che possono essere espresse tramite un nome.

Es:
A=100

Teniamo conto che una ci sia una scatola etichettata A, questa contiene il numero 100. Print può essere utilizzato con le variabili.

Es:
A=88
B=12
NUMERO=33
PRINT A
PRINT B
PRINT NUMERO

E nello schermo ti apparirà, se eseguito: 88 e a capo 12.
Le variabili possono anche essere addizionate/sottratte/divise/moltiplicate. (*=moltiplicazione /=divisione)

Es:
A=10
B=5
C=15

PRINT A+B+C
PRINT A-B-C
PRINT A*B*C

Si premette che Dark Basic non visualizza nello schermo, tramite print, numero con la virgola.

Es:
Print 10/3

Non apparirà 3.333333333333333... ma solo 3


Le stringhe invece sono delle frasi che comprendono lettere,numeri,spaziatura etc. Esso si usa in modo uguale alle variabili sono che accanto al nome bisogna mettere il simbolo $.

Es:
NOME1$="Mario"
PRINT NOME1$

E nello schermo apparirà,se eseguito: Mario.

Le stringhe come le variabili possono essere addizionate (solo). Per fare un esempio invece che scrivere: PRINT "MARIO E LUIGI CONTRO DONKEY KONG" posso fare anche fare:

Es:
PROTAGONISTA$="MARIO"
AMICO$="LUIGI"
NEMICO$="DONKEY KONG"

PRINT PROTAGONISTA$+" E "+AMICO$+" CONTRO "+NEMICO$

Può capitare, però,che bisogna combinare variabili e stringhe.

Es:
STRINGA$="CIAO NUMERO "
NUM=1
PRINT STRINGA$+NUM

Questo però non si può fare. La variabile può essere immessa solo con un comando speciale: +STR$(VARIABILE)+

Es:
STRINGA$="CIAO NUMERO "
NUM=1
PRINT STRINGA$+STR$(NUM)

E nello schermo ti apparirà: CIAO NUMERO 1.


|----------DISTINGUERE COMANDI DA CONDIZIONI----------|

Un comando é un input diretto dato dal programmatore. Invece le condizioni sono degli eventi che se si dimostrano vere o false possono portare ad una conseguenza (altri comandi e condizioni). E per questo tutte le condizioni imposte da Dark Basic devono essere preceduti da comando IF.


REM Tutto quello che ci sarà accanto al comando REM verrà ignorato (serve a commentare)


IF Determina una condizione.


Il comando IF restituisce sempre 0 (falso) o 1 (vero) nelle sue condizioni.

Es:
NUM=100
IF NUM=100=1 THEN PRINT "OK"

oppure con la condizione negativa:

NUM=100
IF NUM=50=0 THEN PRINT "OK"

Il comando THEN permette di far seguire alla condizione dei comandi. Se devono essere seguiti più comandi dopo THEN bisogna dividerli con dei duepunti.

Es:
NUM=100
IF NUM=100=1 THEN PRINT "OK" : PRINT "ANCORA OK"

Ma in questo caso conviene l'uso di ENDIF. Bisogna inserire la condizione, inserire i comandi o eventuali altre condizioni (si può andare a capo), e terminare con ENDIF (THEN non deve essere usato).

Es:

NUM=100
IF NUM=100=1
PRINT "OK"
PRINT "ANCORA OK"
ENDIF

Tuttavià se non si vuole scrivere due condizioni (una stessa condizione che dovrebbere restituire 1 e un'altro 0) si può usare il comando ELSE. Quindi invece che scrivere:

Es:
NUM=10
IF NUM=10=1
PRINT "OK"
ENDIF
IF NUM=10=0
PRINT "NON OK"
ENDIF

Si può mettere tra IF ed ENDIF: ELSE:

Es:
NUM=10
IF NUM=10=1
PRINT "OK"
ELSE
PRINT "NON OK"
ENDIF

In modo da non sprecare spazio e guadagnare comodità.

Ma le condizioni non possono essere solo numeri e stringhe. Ci sono altre condizioni per specifiche occasioni. La condizione che segue restituisce 1 (vero) se il tasto sinistro del mouse viene premuto:

IF MOUSECLICK()=1 THEN PRINT "OK"

MOUSECLICK é una delle condizioni speciali, come ho accennato prima che può restituire: 1,2,4 e 8 per i rispettivi tasto sinistro, secondo tasto,terzo e quarto(comunque dipende tutto dal muose).

|----------BASIC----------|

Nonostante il suo nome i comandi BASIC sono i più difficili da comprendere per cui elencherò i più utilizzati.


REMSTART
...
REMEND Tutto ci che c'é tra questi due comandi sarà ignorato.


IF ENDIF THEN Determina una condizione


END Termina il programma


DO
...
LOOP Tutto ciò che é tra DO e LOOP verrà ripetuto all'infinito senza mai uscire. (Non fate caso al comando SYNC verrà spiegato in seguito.)

Es:
NUM=1
DO
IF NUM=1 THEN PRINT "OK"
SYNC
ENDIF


REPEAT
...
UNTIL (condizione) Funziona come DO e LOOP, solo che, tramite UNTIL più una condizione,ne può uscire.

Es:
CICLI=0
PRINT "ESEGUO 10 CICLI CON REPEAT E UNTIL POI ESCO..."
REPEAT
CICLI=CICLI+1
UNTIL CICLI=10
PRINT "CICLI é uguale a "+STR$(CICLI)
PRINT "Fine"


WHILE (condizione)
...
ENDWHILE Funziona come DO e LOOP,solo che,tramite WHILE più una condizione,ne può uscire.

Es:
CICLI=0
PRINT "ESEGUO 10 CICLI CON WHILE ED ENDWHILE POI ESCO..."
WHILE CICLI=10
CICLI=CICLI+1
ENDWHILE
PRINT "CICLI é uguale a "+STR$(CICLI)
PRINT "Fine"


GOTO Salta ad una etichetta. (Es: "Etichetta:" Non dimenticate i due punti)

Es:

NUM=0
GOTO SALTO1
DO
PRINT "BLOCCATO!"
LOOP
SALTO1:
PRINT "SONO SALTATO!"


SUSPEND FOR KEY Sospende l'esecuzione del programma fino a che non verrà premuto un tasto della tastiera.

Es:
PRINT "PREMI UN TASTO DELLA TASTIERA"
SUSPEND FOR KEY
END


SUSPEND FOR MOUSE Sospende l'esecuzione del programma fino a che non verrà premuto un tasto del mouse.

Es:
PRINT "PREMI UN TASTO DEL MOUSE"
SUSPEND FOR MOUSE
END


WAIT (Millisecondi) Attende per dei millisecondi. (1000 Millisecondi=1 secondo)

Es:
PRINT "ASPETTO 2 SECONDI"
WAIT 2000
END


SLEEP (Millisecondi) Identico al comando WAIT.


SYNC ON Imposta l'aggiornamento dello schermo automatico. (E' posto di solito all'inizio di ogni progetto)


SYNC RATE (numero) Imposta l'aggiornamento manuale. Accanto al comando bisoga fornire un numero che si comprende tra 1 e 1000 (Più il numero é alto più và veloce il gioco. 0 dà l'aggiornamento più veloce di tutti)


SYNC Aggiorna lo schermo. SYNC deve essere sempre messo tra DO e LOOP, WHILE ed ENDWHILE e REPEAT e UNTIL. (Di solido é messo alla fine prima di LOOP...)


|----------CONDIZIONI DEI COMANDI BASIC----------|

Le condizioni sono sempre precedute dal comando IF.

GET DATE$() Restituisce la data corrente in Mesi/Giorni/Anni.

Es:
PRINT GET DATE$()


GET TIME$ Restituisce l'ora corrente.

Es:
PRINT GET TIME$


|----------INPUT----------|

I comandi INPUT sono molti e di vario uso e gestiscono i file, la tastiera etc.


INPUT Scrive una stringa nello schermo (come il comando PRINT) e attende un INPUT tramite tastiera dall'utente. L'INPUT sarà salvata.

Es:
INPUT "INSERISCI IL TUO NOME> ",NOME$
PRINT "CIAO "+NOME$


HIDE MOUSE Nasconde il mouse.


SHOW MOUSE Mostra il mouse.


POSITION MOUSE Posiziona il mouse in specifiche coordinate X e Y.

Es:
REM POSIZIONA AL CENTRO DELLO SCHERMO IL PUNTATORE DEL MOUSE
POSITION MOUSE 320,240


DIR Elenca nello schermo i file e le cartelle nella directory corrente. (Standard: Directory in cui é il progetto)


DRIVELIST Elenca nello schermo i drive presenti nel conputer (A: , B: , C: , D: etc.)


PERFORM CHECKLIST FOR FILE Elenca nello schermo i file nella directory corrente.


SET DIR "(Directory)" Imposta una directory come corrente.

Es:
SET DIR "C:\"


MAKE FILE "(Directory/Nome File)" Crea un file vuoto. Se viene sono scritto il nome del file verrà creato nella directory corrente altrimenti bisogna specificarne un'altra.

Es:
REM CREA UN FILE VUOTO NELLA DIRECTORY CORRENTE
MAKE FILE "SUPERMARIO 94.DAT"

REM CREA UN FILE VUOTO IN UN' ALTRA DIRECTORY
MAKE FILE "C:\SUPERMARIO 94.DAT"


DELETE FILE "(Directory/Nome File)" Cancella un file. Se viene sono scritto il nome del file verrà cancellato nella directory corrente, se non nella directory corrente, bisogna specificarne un'altra.

Es:
REM CANCELLA UN FILE NELLA DIRECTORY CORRENTE
DELETE FILE "SUPERMARIO 94.DAT"

REM CANCELLA UN FILE IN UN'ALTRA DIRECTORY
DELETE FILE "SUPERMARIO 94.DAT"


COPY FILE "(Directory sorgente/Nome File sorgente)","Directory di destinazione/Nome di destinazione)" Copia un file.

Es:
COPY FILE "SUPERMARIO 94.DAT","C:\SUPERMARIO 94.DAT"


MOVE FILE "(Directory sorgente/Nome File sorgente)","Directory di destinazione/Nome di destinazione)" Sposta un file.

Es:
MOVE FILE "SUPERMARIO 94.DAT","C:\SUPERMARIO 94.DAT"


MAKE DIRECTORY "(Nome Directory)" Crea una directory.

Es:
MAKE DIRECTORY "LA MIA CARTELLA"


DELETE DIRECTORY "(Nome Directory)" Cancella una directory.


OPEN TO WRITE (Numero file),"(Nome file)" Crea un file (come il comando MAKE FILE) e lo tiene pronto per essere scritto. Bisogna specificare un numero file (come identificazione) e il suo nome.

Es:
OPEN TO WRITE 1,"SUPERMARIO 94.DAT"


OPEN TO READ (Numero file),"(Nome file)" Apre un file e lo tiene pronto per essere letto. Bisogna specificare un numero (come identificazione) e il suo nome.

Es:
OPEN TO READ 1,"SUPERMARIO 94.DAT"


CLOSE FILE (Numero file) Chiude un file che era stato aperto in precedenza con OPEN TO READ o OPEN TO WRITE. Bisogna specificare il numero (di identificazione) del file.

Es:
CLOSE FILE 1


WRITE FILE (Numero file),(Un numero qualsiasi) Scrive un numero in un file aperto in precedenza con OPEN TO WRITE.

Es:
OPEN TO WRITE 1,"SUPERMARIO 94.DAT"
WRITE FILE 1,100
CLOSE FILE 1


WRITE STRING (Numero fle),(Stringa$) Scrive una parola in un file aperto in precedenza con OPEN TO WRITE. (Nell'esempio: Come scrivere una stringa in un file con estenzione blocco note)

Es:
OPEN TO WRITE 1,"SUPERMARIO 94.TXT"
WRITE STRING 1,"STRINGA APRIBILE CON BLOCCO NOTE"
CLOSE FILE 1


READ FILE (Numero file),(variabile) Memorizza in una variabile il numero precedentemente scritto con il comando WRITE FILE. Il file deve essere prima aperto con OPEN TO READ.

Es:
OPEN TO READ 1,"SUPERMARIO 94.DAT"
READ FILE 1,A
CLOSE FILE 1
PRINT "IL NUMERO NEL FILE: "+STR$(A)


READ STRING (Numero file),(Stringa$) Memorizza in una stringa$ una riga del file scritto con il WRITE STRING. Il file deve essere prima aperto con OPEN TO READ. (Nell' esempio: Come leggere una riga da un file di blocco note o altro)

Es:
OPEN TO READ 1,"SUPERMARIO 94.TXT"
READ STRING 1,A$
CLOSE FILE 1
PRINT "LA STRINGA NEL FILE: "+A$


|----------CONDIZIONI DEI COMANDI INPUT----------|

MOUSEX() Restituisce la posizione X del mouse.

Es:
PRINT MOUSEX()
END

MOUSEY() Restituisce la posizione Y del mouse.

Es:
PRINT MOUSE Y
END


IF UPKEY()=1 Restituisce 1 (vero) se il tasto direzionale su é premuto.

Es:
SYNC ON
DO
IF UPKEY()=1 THEN PRINT "OK"
SYNC
LOOP


IF DOWNKEY()=1 Restituisce 1 se il tasto direzionale giù é premuto.


IF RIGHTKEY()=1 Restituisce 1 se il tasto direzionale destra é premuto.


IF LEFTKEY()=1 Restituisce 1 se il tasto direzionale sinistra é premuto.


IF CONTROLKEY()=1 Restituisce 1 se il tasto di Controllo (Ctrl) é premuto.


IF SHIFTKEY()=1 Restituisce 1 se il tasto Shift é premuto.


IF SPACEKEY()=1 Restituisce 1 se il tasto Spazio é premuto.


IF ESCAPEKEY()=1 Restituisce 1 se il tasto Esc é premuto. Di solito il tasto Esc permette di uscire immediatamente dall' eseguimento dell' applicazione. Per cui se non si vuole che venga premuto Esc il programma si termini automaticamente dovete usare il comando che segue in basso.


DISABLE ESCAPEKEY Permette di non uscire dall' applicazione se premuto Esc, in alternativa se volete uscire potete premere, su Dark Basic, F12. (Attenzione il seguente comando non é della sottosezione CONDIZIONI DEI COMANDI INPUT)


GET DIR$() Restituisce la directory corrente.

Es:
PRINT GET DIR$()


IF FILE EXIST("(Directory/Nome File)")=1 Restituisce 1 se il file esiste

Es:
IF FILE EXIST("SUPERMARIO 94.DAT")=1
PRINT "IL FILE ESISTE"
END
ELSE
PRINT "IL FILE NON ESISTE"
END
ENDIF


IF PATH EXIST("(Directory)")=1 Restituisce 1 se la cartella esiste.

Es:
IF PATH EXIST("LA MIA CARTELLA")=1
PRINT "LA CARTELLA ESISTE"
END
ELSE
PRINT "LA CARTELLA NON ESISTE"
END
ENDIF


|----------COMANDI MATEMATICI----------|

I comandi MATHS servono semplicemente a gestire una serie di operazioni matematiche.

INC Incrementa una variabile di 1

Es:
A=0
INC A
PRINT A


DEC Decrementa una variabile di 1

Es:
A=0
DEC A
PRINT A


RND(Numero) Serve per generare un numero casuale da 0 al numero che date voi.

Es:
PRINT RND()



|----------TESTI----------|

Per chi non volesse sempre usare PRINT può usare i comandi di TESTO che permettono di gestire font,carattere etc.

SET CURSOR X,Y Imposta il mouse in una posizione X e Y specifica dello schermo

Es:
REM IL PUNTATORE AL CENTRO DELLO SCHERMO
SET CURSOR 320,240


TEXT X,Y,"(Stringa)" Permette di scrivere una stringa in una posizione dello schermo

Es:
TEXT 100,100,"CIAO"


CENTER TEXT X,Y,"(Stringa)" Ha la stessa funzione di TEXT ma centra la frase alle coordinate specifiche

Es:
CENTER TEXT 320,240,"CIAO"


PERFORM CHECKLIST FOR FONTS Cerca la lista di tutti i Fonts installati nel vostro sistema.


SET TEXT FONT "(Nome font)" Imposta un font come standard.

Es:
PRINT "CIAO"
SET TEXT FONT "Comic Sans MS"
PRINT "CIAO"


SET TEXT SIZE (Dimensione) Imposta la dimensione standard del testo.

Es:
SET TEXT SIZE 72
CENTER TEXT 320,240,"CIAO"


|----------CONDIZIONI DEI COMANDI DI TESTO----------|

TEXT FONT$() Restituisce il font corrente

Es:
PRINT TEXT FONT$()


TEXT SIZE() Restituisce la dimensione standard del testo

Es:
PRINT TEXT SIZE()


TEXT WIDTH("(Stringa)") Restituisce la larghezza della stringa specificata

Es:
PRINT TEXT WIDTH("CIAO A TUTTI")


TEXT HEIGHT("(Stringa)") Restituisce l'altezza della stringa specificata

Es:
PRINT TEXT HEIGHT("CIAO A TUTTI")
 
Reply
#2
ma con sto Dark Basic cosa si può fare????
 
Reply
#3
Grazie può essere utile!

Gears DarkBasic è un linguaggio di programmazione, che ti permette di creare giochi in 3D in modo non molto difficile come il C++, ma certamente i risultati non saranno come quelli che puoi ottenere con Ogre3d + C++.
 
Reply
#4
ok capito...
sn stra difficili i linguaggi...
 
Reply
#5
Ma se si vuole fare qualcosa di serio e di personalizzabile al 100% ci serve perforza un linguaggio, e poi se c'è l'impegno nulla è difficile.
 
Reply
#6
Soul è facile a dirlo ma molto molto difficile a farlo...
a skola avevamo imparato le basi di vb.net con l'editor 2008 è già troppo complicato quello per me...
 
Reply
#7
Il Dark Basic non é cosi' difficile come sembra... io il C++ non l'ho provato quindi non posso dare giudizi ma nel Pro lo sfruttamento della Dx9 mi ha stupito molto. Si possono mettere effetti fuoco, ghiaccio, speculare e specchio e chissà quanti altri che non conosco. Sopratutto mi ha stupido di DB Pro quando può essere facile applicare un effetto ad esempio se vuoi fare un effetto fumo basta digitare una sola riga di codice cosa che nel vecchio DB era impensabile ò.O Big Grin
 
Reply
#8
Comunque i risultati che puoi ottenere con questo linguaggio sono moolto buoni, per me alla pari di Irrlicht e Ogre visto che poi le funzioni grafiche che arrivano a sfruttare sono le medesime...
 
Reply
#9
Il primo Dark Basic che sfruttava la dx7 era molto + complicato e potevi fare gioki semplici senza effetti. Giacché x fare un effetto tipo fumo dovevi scrivi + righe di codice mentre nel pro ora ne basta 1 sola Big Grin Poi c'è pure la mappa speculare che é veramente fica Smile
 
Reply
#10
Il pro si paga, e poi sinceramente io preferisco xna gratuito e più potente... Comunque anche questo è un buon linguaggio per creare giochi.
 
Reply
#11
Già (Y) Io al tempo Dark Basic Vecchio l'ho comprato 10 euro Big Grin
 
Reply
#12
Io ho comprato Dark Basic Bonanza che contiene :
DarkBASIC Professional, Dark Lights, Dark AI, Dark Physics, DarkBASIC Electronic, Dark Shader, eXtends, Treemagik G3, Plant Life, Cartography Shop, DarkMATTER 1, DarkVOICES, DarkGAME Studio
 
Reply
#13
Bell'offerta Smile
 
Reply
#14
potrsti spiegarmi gli arrays a cosa servono e come si creano???
please!!!
 
Reply
#15
Apri un Topic e te lo spiego volentieri Smile (Meglio tenere un pò di ordine ù.ù)
 
Reply
#16
Chiedo Scusa er la riesumazione ma è completa Big Grin?
 
Reply
#17
ormai johnatan non è più attivo su questo forum, se hai bisogno di aiuto apri un topic e vedrò di aiutarti
 
Reply
#18
Va bene zape è che devo moddare Fpscreator.. xD prima io e VG studiamo il DarkBasic poi moddiamo FPScreator..

Volevo Aggiungere qualche Feature Multyplayer..tipo qualche comando per far avere al player 3 4 armi iniziali con i caricatori già predisposti e il TeamDeathmatch... qualcosina di semplice Big Grin (per ora ahahah) (più armi iniziali anche nel single...)
 
Reply
#19
Ma questa guida è per dark basik o per dark basik pro???
 
Reply
#20
Hey grazie mille ma ha molte somiglianze col il linguaggio python Smile
 
Reply
#21
Ciao a tutti !

DarkBasic Pro e' molto piu' potente di come si possa immaginare , ed esistono anche tantissimi plugin gratuiti ( ed anche a pagamento ) che lo potenziano notevolmente . ( inoltre chiunque conosca il C puo crearsi dei propri plugin per DbPro )
Si possono usare anche degli script in Lua ( vi sono plugin free/ed a pagamento apposta per questo )
E' molto piu' semplice dei C .
Per fare una certa "cosa" occorrono molto meno righe di codice che in altri linguaggi.
Pensate che il nuovo ( ancora mooolto in versione beta ) FPSC Creator Reloaded e' scritto in DbPro.
 
Reply
  


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  Raga ma questa guida è per dark basic o per dark basic pro?? Nekra 2 2,295 22-07-2013, 03:36 PM
Ultimo messaggio: Jonathan Archer
  Guida ufficiale di dark basik pro! Nekra 0 1,582 18-11-2012, 05:12 PM
Ultimo messaggio: Nekra
Information Dark Basic Tax78 22 5,177 14-07-2011, 06:29 PM
Ultimo messaggio: Zapetino
  Download Dark Quake Riddick 3 1,754 12-02-2011, 07:15 PM
Ultimo messaggio: Jonathan Archer
  Dark Sv3 Engine Sweet Vengeance 32 4,388 08-02-2011, 07:52 PM
Ultimo messaggio: Jonathan Archer
  DarkBasic Professional vs Dark GDK Riddick 5 2,572 15-11-2010, 07:05 PM
Ultimo messaggio: Jonathan Archer
  A proposito di Dark Basic Pro ... VisualJump3D 7 2,370 29-08-2010, 05:12 PM
Ultimo messaggio: Jonathan Archer
  Easy Dark Basic Jonathan Archer 5 1,837 25-08-2010, 09:25 PM
Ultimo messaggio: Jonathan Archer
  Ruotare la visuale su Dark Basic Jonathan Archer 4 1,446 15-07-2010, 12:16 PM
Ultimo messaggio: Jonathan Archer

Vai al forum:


Browsing: 1 Ospite(i)