Programme Darkbasic pro

Serge Adjo Message lu Posté le 21 Fév 2009 à 16:52 Bulle
Avatar de Serge Adjo
Explorateur

Messages : 47
GCPoints : 5503
-Comment bien programmer et s'organiser avec dbp et mener à bien son prog' de a à z, surtout quand il faut prévoir bcp de lignes code: grand programme ?
-un exemple, un modèle de programme réutilisable ou des tuts?

-type de prog: vue de profil, action
je pense aussi à un modèle réutilisable dont le but est d'éviter de partir de rien pour prog' :
-le modèle,
-le programme développé à partir du modèle.
:arrow:
Dernière édition le 24 Fév 2009 à 21:34
Image
corwin Message lu Posté le 21 Fév 2009 à 17:45 Bulle
Avatar de corwin
Membre Confirmé

Messages : 459
GCPoints : 63647
ton jeu tu veut qu'il soit en 3d ?

je peut te faire un modèle si tu veut :grin: en expliquant tout se qui faut mètre dan l'ordre
Serge Adjo Message lu Posté le 21 Fév 2009 à 17:52 Bulle
Avatar de Serge Adjo
Explorateur

Messages : 47
GCPoints : 5503
non, j'ai mon idée du truc, [WIP]: (bon tu peux poster le tien aussi svp? ou bien commenter le mien?)
Code :
rem * Titre  : programmer1
rem * Auteur : programmeur prog'
rem * Date   : 22/ 02/ 2009
`;
`###################################################################################
`|PROG PRINCIPAL "_prog.dba" ; "_prog-PRO.dbpro"///////////////////////////////////|
`################################################################################### #
`Débuter PROGRAMME PRINCIPAL ; déclarer les variables en premier;
`;
GOSUB Initialiser_GOS ;` commencer par déclarer variables ;
f_Initialiser_prog()  :` commencer le prog' par cette fonction ;
`;
FINIR_TOUT:
END :` FIN de TOUT LE PROGRAMME
`;
` =====================
` FIN
`;
remstart
;
; NOTER | Enregistrer sousI | Enregistrer sousII | Répertoire à structurer | INCLURE dans l'éxecutable | LIRE comme suit |
;
|***********************************************************|
NOTER; |************---------------------------------------||
|*********************************************************|||

-FONCTIONS préfixe 'f_'
-VARIABLES préfixe majuscule 'V_' = globale ; 'v_' = locale ; SUFFIXE Variables _E ; _# ; _$ (Entier ; réel ; caractères)
-numéroter variables globales 1,2 etc pour les différencier des locales déclarées dans des fonctions;
-TABLEAUX préfixes majuscule 'T_' = GLOBAL ; 't_' = LOCAL ; SUFFIXE Tableaux _E ; _# ; _$
-TYPES préfixes 'TYP_'
-ETIQUETTES suffixe majuscule '_GOT' = GOTO ; '_GOS' = GOSUB
-CHEMINS "\\" séparateur ; ".." dossier parent ;

|-------------------------------------------------------|
Enregistrer sousI '_Préférences.txt'; |----------------||
|-----------------------------------------------------|||

>enregistrer sous '_Préférences.txt'
>enregistrer sous '\\Bin32\\Données_0a\\_Préférences.txt' (<-préf. par défaut)

>Fichier '_Préférences.txt' ; contenu;
-résolution largeur. hauteur. profondeur. Vsync. Anti-aliasing;
1024
-
768
-
32
-
1
-
1
-Langue, 1 français, 2 Anglais;
1
-Qualité / performances 1=très bas, 2=bas, 3=Bon, 4=Très Bon, 5=Max élevé;
4
-Typo texte (s'assurer que la typo est installée sur votre disque dur) sinon laisser ARIAL;
Arial
-Taille Texte: 1,2 ou 3 pour améliorer la définition utilisée par les lettres du texte;
1
-demander confirmation avant de quitter le programme grâce à touche ECHAP ; 0=non ;1=oui ;
0

|--------------------------------------------------------|
Enregistrer sousII _initialisation.txt; |---------------||
|------------------------------------------------------|||

>enregistrer sous '\\Bin32\\Données_0a\\_initialisation.txt'

>Fichier '_initialisation.txt' ; contenu;
-fréquence d'images/seconde;
60
-Titre de barre de titre;
programme darkbasicpro
-Titre jeu;
"programme1"
-Auteur;
"programmeur prog'"
-année;
(c)2009
-Message d'erreur de base;
"erreur"


|--------------------------------------------------------|
Répertoires à structurer; |-----------------------------||
|------------------------------------------------------|||

->\\Repertoire Parent\\; *Exécutable.exe ; _prog-PRO.dbpro ; LisezMoi.txt ; _Préférences.txt*
___|->\\Aide_Help_Informations\\; * Aide.txt ; Auteur.txt ; Raccourci vers _Préférences.txt*
___|->\\_Cprog-PRO\\; * _Fprog.dba ; _Fprog-PRO.dbpro ; Lisez-Moi.txt *
___|->\\Bin32\\; *  *
______|->\\Données_0a\\; * _initialisation.txt ; _Préférences.txt (défaut)* 		-à zipper-protéger
______|->\\Données_0b\\; *  * 													-à zipper-protéger
______|->\\Données_001 (&++)\\; *  * 	 (\\Données_001 (&++)\\ ces répertoires sont à zipper-protéger)
______|->\\Algos\\; *(copie de) _prog-PRO.dbpro*
_________|->\\mes_Sources\\; *tutos.dba ; médias et icône.ico*
fin;
|__|__|__|
1__2__3__4 ème niveau

|-------------------------------------------------------|
INCLURE dans l'éxecutable; |---------------------------||
|-----------------------------------------------------|||

médias de base, icône, sprites ; données textuelles.

|*******************************************************|
LIRE comme suit; |**********************---------------||
|*****************************************************|||
;
------------------------------------------------
séparateur simple
------------------------------------------------
;
************************************************
séparateur plus
************************************************
;
__________________________________________________________
BOUCLE DO|________________________________________________|
;
__________________________________________________________
FIN LOOP|_________________________________________________|
;
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
CHANGEMENT DE REPERTOIRE DE TRAVAIL
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;
#################################################
|//////////////////////////////////////////////|
#################################################
début de fichier prog'
;
`__________________________________________________
`||||||||||||||||||||||||||||||||||||||||||||||||||
début et fin de fonction
`__________________________________________________
`||||||||||||||||||||||||||||||||||||||||||||||||||fin
;
remend
`;
`;
`#############################################################
`|"F_Initialisation.dba" |///////////////////////////////////|
`# (c) prog' ############################################ #############################
`But du programme; initialiser le programme, ajuster résolution et rafraîchissement de l'écran;
`;
`DéCLARER les variables du programme;
Initialiser_GOS:
` déclarer Variables globales d'erreurs;
    GLOBAL V_Erreur1_$ : GLOBAL V_Erreur2_$ : V_Erreur2_$=" Erreur  - presser ECHAP pour QUITTER ce programme. "
    GLOBAL V_Langue1_E :` VARIABLE GLOBALE LANGUE
remstart
` déclarer Variables globales de lecture;
    GLOBAL _LectureA$ : GLOBAL _LectureB$ : GLOBAL _LectureC$ : GLOBAL _LectureD$ : GLOBAL _LectureE$ : GLOBAL _LectureF$
` Crée/efface un memblock pour permmettre à SC_Collision de marcher;
    IF MEMBLOCK EXIST(1) THEN DELETE MEMBLOCK 1
remend
` Fin retour;
RETURN
`;
remstart
`__________________________________________________
`||||||||||||||||||||||||||||||||||||||||||||||||||
rem f_Deroulement() gère le bon déroulement de TOUT le programme;
FUNCTION f_Deroulement()
    f_Sequence_INTRO()
` FIN de la Fonction;
    GOTO FINIR_TOUT
ENDFUNCTION
`__________________________________________________
`||||||||||||||||||||||||||||||||||||||||||||||||||fin
remend
`;
`__________________________________________________
`||||||||||||||||||||||||||||||||||||||||||||||||||
rem f_Initialiser_prog() initialiser le prog., ajuster résolution, charger fichier "_préférences.txt"
FUNCTION f_Initialiser_prog()
remstart
ENDFUNCTION
` >>>>>>>> CHANGE LE REPERTOIRE DE TRAVAIL <<<<<<<<<<<< !!!
    SET DIR ".." : ` <<<<<<<<< !!!
        f_OPEN_TO_READ(1,"Données_0a\\Préférences.txt","Fichier introuvable: ''FPSute-New\\Bin32\\Données_0a\\Préférences.txt''") : ` Charger fichier "Préférences.txt" afin de changer résolution;
        READ STRING 1,_LectureA$ : ` lire 1 ligne intermédiaire;
        READ STRING 1,_LectureA$ : ` lire 3 lignes résolution LxHxProfondeur;
        READ STRING 1,_LectureB$ : READ STRING 1,_LectureC$ : READ STRING 1,_LectureD$ : READ STRING 1,_LectureE$ : READ STRING 1,_LectureF$
        SET DISPLAY MODE VAL(_LectureA$),VAL(_LectureB$),VAL(_LectureC$),VAL(_LectureD$),VAL(_LectureE$),VAL(_LectureF$)
        READ STRING 1,_LectureA$ : ` lire 1 ligne intermédiaire;
        READ STRING 1,_LectureA$ : _Langue1=VAL(_LectureA$) : ` lire 1, langue
        READ STRING 1,_LectureA$ : ` lire 1 ligne intermédiaire;
        READ STRING 1,_LectureA$ : SET TEXT FONT _LectureA$ : ` lire 1, Police texte
        READ STRING 1,_LectureA$ : SET TEXT SIZE VAL(_LectureA$) : ` lire 1, TAILLE texte
        READ STRING 1,_LectureA$ : ` lire 1 ligne intermédiaire;
        READ STRING 1,_LectureA$ : SYNC ON : SYNC RATE VAL(_LectureA$) : ` lire 1, fréquence d'image SYNC RATE;
        READ STRING 1,_LectureA$ : ` lire 1 ligne intermédiaire;
        READ STRING 1,_LectureA$ : SET WINDOW TITLE _LectureA$ : SET WINDOW OFF : ` lire 1, Titre du programme;
        READ STRING 1,_LectureA$ : ` lire 1 ligne intermédiaire;
        READ STRING 1,_LectureA$ : ` lire 1, Activer ECHAP Presto;
        IF 10=VAL(_LectureA$) THEN ENABLE ESCAPEKEY
        IF 0=VAL(_LectureA$) THEN DISABLE ESCAPEKEY : ` Sinon désactiver ECHAP ;
        ` <<<<<<<<<<<<< !!!!!! ECHAP !!! ^^^^
        READ STRING 1,_LectureA$ : _Erreur1$=_LectureA$ : ` message d'erreur
    CLOSE FILE 1
    BACKDROP ON
    COLOR BACKDROP RGB(64,64,64)
    AUTOCAM OFF
    SET NORMALIZATION ON
    null = MAKE VECTOR3(1) :` réglages pour fonctions distance entre 2 points ;
remend
    ` FIN DE FONCTION ;
ENDFUNCTION
`__________________________________________________
`||||||||||||||||||||||||||||||||||||||||||||||||||fin
`;
`;
`######################################################
`|"F_variées.dba" |///////////////////////////////////|
`# (c) prog' ############################################ #############################
`But du programme; plusieurs fonctions variées;
`;
`__________________________________________________
`||||||||||||||||||||||||||||||||||||||||||||||||||
`f_Message_erreur() prévenir le programme du plantage, afficher un message d'erreur, afficher menu QUITTER.
FUNCTION f_Message_erreur()
` informer Utilisateur du problème, proposer ECHAP pour QUITTER ;
    ENABLE ESCAPEKEY : ` <<<<<<<<<<<< !!!!! TOUCHE ECHAP ACTIVE !!!!!!!! 
    SET TEXT FONT "Arial"
    SET TEXT SIZE SCREEN WIDTH()/40
    SYNC RATE 60
    BACKDROP OFF
    CLS
    DO
        SET CURSOR 0,35
        PRINT TEXT FONT$()
        PRINT TEXT SIZE()
        PRINT _Langue1
        PRINT SCREEN FPS()
        PRINT SCREEN WIDTH()
        PRINT SCREEN HEIGHT()
        PRINT SCREEN DEPTH()
        TEXT 5,5,"message d'erreur"
        PRINT _Erreur1$
        PRINT _Erreur2$
        SYNC
    LOOP
ENDFUNCTION
`__________________________________________________
`||||||||||||||||||||||||||||||||||||||||||||||||||fin
`;
`__________________________________________________
`||||||||||||||||||||||||||||||||||||||||||||||||||
`f_QUITTER_ECHAP() permet de QUITTER grâce à la touche ECHAP;
FUNCTION f_QUITTER_ECHAP()
    IF KEYSTATE(1)=0 THEN GOTO FIN
    CLS
    DO
     	SET CURSOR 0,0
     	PRINT "VOUS POUVEZ QUITTER EN APPUYANT SUR ENTREE SINON ESPACE POUR CONTINUER"
     	IF RETURNKEY()=1 THEN END
     	IF SPACEKEY()=1 : WAIT 300  : EXIT : ENDIF
     	SYNC
    LOOP
    FIN:
ENDFUNCTION
`__________________________________________________
`||||||||||||||||||||||||||||||||||||||||||||||||||fin
`;
`__________________________________________________
`||||||||||||||||||||||||||||||||||||||||||||||||||
`f_OPEN_TO_READ_(id,nom_du_fichier,message_d'erreur) vérifie si fichier existe et l'ouvre ;
FUNCTION f_OPEN_TO_READ_(v_id_E,v_nom_$,v_Erreur_$)
    IF FILE EXIST (v_nom_$)=0 : V_Erreur1_$=v_Erreur_$ : f_Message_erreur() : ENDIF
    OPEN TO READ v_id_E,v_nom_$
ENDFUNCTION
`__________________________________________________
`||||||||||||||||||||||||||||||||||||||||||||||||||fin
`;
`__________________________________________________
`||||||||||||||||||||||||||||||||||||||||||||||||||
`f_Sequence_INTRO() affiche une Séquence_d'_Intro au début du programme;
FUNCTION f_Sequence_INTRO()
    CLS
`    SET CURSOR 0,5
    DO
        TEXT 0,5,"BIENVENUE DANS '';;;;;;'', LE JEU VIDEO DE ;;;;;;; (c);;;;; - "
        TEXT 0,50,"LE CONTENU PRESENTé DANS CE PROGRAMME N'EST PAS REEL."
        TEXT 0,95,"Cliquez POUR CONTINUER ou bien ECHAP POUR QUITTER"
        f_QUITTER_ECHAP()
        IF MOUSECLICK()=1 THEN EXIT
        SYNC
    LOOP
 
ENDFUNCTION
`__________________________________________________
`||||||||||||||||||||||||||||||||||||||||||||||||||fin
`;
`;

`#######################################################
`|"Conclusion.dba" |///////////////////////////////////|
`# (c) prog' ########################################### #############################
`Conclusion, notes finales;
`;
` faut Arranger le prog' comme suit;
`Initialiser_GOS ; commencer par déclarer variables;
`f_Initialiser_prog() : ` commencer le prog' par cette fonction ;
`f_Sequence_INTRO()

`;
`FINIR_TOUT: ` pour finir
`END :` FIN de TOUT LE PROGRAMME
`;
`-------------------------------
`pour charger des fichiers;
`f_OPEN_TO_READ_(id,nom_du_fichier,message_d'erreur)    `charger fichiers;
`;
`f_Message_erreur()                                     `message d'erreur ;
`f_QUITTER_ECHAP()                                      `Quitter ECHAP;
`;
`;
`;
`#CORBEILLE, à supprimer;
`f_Deroulement()                                        `gèrer le déroulement du programme ENTIER ;
`;
`;
`TODO liste;
` corriger variables
` ajouter des champs info, initialisation.txt
` lister les menus
` decrire les médias ;
`;
`;
remstart
edit: mis à jour
description: ce programme est complet et peut servir comme modèle.
le but de ce programme est:
-réunir tout les #inclus en un même fichier et baliser le programme pour repérer les #inclus pour les extraire aisément.
-à l'aide de remarques décrire tout le projet, y compris les fichiers et répertoires qui le composent:
décrire les médias: ou enregistrer les médias et fichiers, comment les enregistrer ?
-lister les fonction clés, la syntaxe et la méthode.
-faire marcher le programme sans média si possible et si des fichiers sont manquants les remplacer.
-servir de modèle à partir duquel on part pour écrire un programme complet tel que: jeux etc... :
-servir de ressource réutilisable et prêt pour l'emploi dans tout programme;
-demander un mot de passe à l'utilisateur pour démarrer (comme le fait un OS)
-informer/avertir l'utilisateur de la nature du contenu.
-introduire et présenter le programme.
-afficher un menu rapide d'accès permettant de découvrir le contenu, définir des préférences d'usage, modifier mot de passe de démarrage et permettre de quitter de manière sécurisé ..
-gérer les ressource utilisées par l'utilisateur et le programme pour un déroulement optimum: effacer de la mémoire toute donnée inutilisée et quitter le programme sans laisser de traces.
-faciliter la vie, travailler plus vite, avec méthode.

une fois compilé c'est un programme exécutable qui donne ces avantages:
-pas besoin de recompiler le programme pour le mettre à jour car il est prêt; (exception: soucis de compatibilité)
-mettre à jour le prog' par le biais de nouveaux médias et fichiers: pour un jeu, par exemple, ajouter de nouveaux levels et ainsi enrichir le contenu du jeu.
-possibilité d'ajout illimité de contenu & médias pour enrichir le programme...
-supporter des fichiers de musique et bande son de grande qualité, et les jouer.
-supporter des images en haute résolution et les afficher/traiter.
-supporter le rendu en haute définition.
-supporter des configurations différentes.
-supporter plusieurs langues et menus.

"fais-en ce que tu veux. ni plus ni moins"
"tout ce qu'il faut c'est une forte envie d'écrire ton propre programme"
remend
`;

edit: mis à jour
description: ce programme est complet et peut servir comme modèle.
le but de ce programme est:
-réunir tout les #inclus en un même fichier et baliser le programme pour repérer les #inclus pour les extraire aisément.
-à l'aide de remarques décrire tout le projet, y compris les fichiers et répertoires qui le composent:
décrire les médias: ou enregistrer les médias et fichiers, comment les enregistrer ?
-lister les fonction clés, la syntaxe et la méthode.
-faire marcher le programme sans média si possible et si des fichiers sont manquants les remplacer.
-servir de modèle à partir duquel on part pour écrire un programme complet tel que: jeux etc... :
-servir de ressource réutilisable et prêt pour l'emploi dans tout programme;
-demander un mot de passe à l'utilisateur pour démarrer (comme le fait un OS)
-informer/avertir l'utilisateur de la nature du contenu.
-introduire et présenter le programme.
-afficher un menu rapide d'accès permettant de découvrir le contenu, définir des préférences d'usage, modifier mot de passe de démarrage et permettre de quitter de manière sécurisé ..
-gérer les ressource utilisées par l'utilisateur et le programme pour un déroulement optimum: effacer de la mémoire toute donnée inutilisée et quitter le programme sans laisser de traces.
-faciliter la vie, travailler plus vite, avec méthode.

une fois compilé c'est un programme exécutable qui donne ces avantages:
-pas besoin de recompiler le programme pour le mettre à jour car il est prêt; (exception: soucis de compatibilité)
-mettre à jour le prog' par le biais de nouveaux médias et fichiers: pour un jeu, par exemple, ajouter de nouveaux levels et ainsi enrichir le contenu du jeu.
-possibilité d'ajout illimité de contenu & médias pour enrichir le programme...
-supporter des fichiers de musique et bande son de grande qualité, et les jouer.
-supporter des images en haute résolution et les afficher/traiter.
-supporter le rendu en haute définition.
-supporter des configurations différentes.

"fais-en ce que tu veux. ni plus ni moins"
"tout ce qu'il faut c'est une forte envie d'écrire ton propre programme"
:grin:
Dernière édition le 24 Fév 2009 à 23:10
Image
Serge Adjo Message lu Posté le 05 Juin 2009 à 12:38 Bulle
Avatar de Serge Adjo
Explorateur

Messages : 47
GCPoints : 5503
salut ! voilà ça y'est ce modèle de programme à fait ses preuves car il sert actuellement de "framework" pour la démo de "TIREUR D' ELITE" ! :smile: http://game-corp.net/topic-958.html Allez-y tester la démo !
Image
Oli Message lu Posté le 05 Juin 2009 à 22:41 Bulle
Avatar de Oli
Nouveau Membre

Messages : 9
GCPoints : 2610
j'ai l'impression que ça simplifie pas tant les choses ce truc modèle mais le "TIREUR D'ELITE" et bien commencé : ça me fait déjà rêver donc bonne chance et continuations ! :tongue: (je suis fans de FPS, et forsaken est super mais vieux :wink: )
Serge Adjo Message lu Posté le 12 Juin 2009 à 16:46 Bulle
Avatar de Serge Adjo
Explorateur

Messages : 47
GCPoints : 5503
voici le programme de tireur d'elite, langage: DBPro U7.4 beta ; SPARKY COLLISION v2.05
notez que médias et programme sont fournis dans le sujet: http://www.game-corp.net/login-32-958-0.html

PROGRAMME:
REM * Titre : programmer1
REM * Auteur : programmeur prog'
REM * Date : 01/ 06/ 2009
REM ;
REM ###################################################################################
REM |PROG PRINCIPAL "_prog.dba" ; "_prog-PRO.dbpro"///////////////////////////////////|
REM ################################################################################### #

IF FILE EXIST("util.txt")=1 THEN f_Util()
// f_Util()
REM Débuter PROGRAMME PRINCIPAL ; déclarer les variables en premier;
REM f_Débuter()
f_DECLARER_VARIABLES()

f_INITIALISER()
f_INTRO()
f_MENU()

f_PREPARE_SCENE()
REM f_NETTOYER()
REM f_QUITTER()

JOUER_LA_SCENE_Zgot:
REM BOUCLE ////////////////////////

DO

SET CURSOR 0,0
PRINT V_Joueur_X_#
PRINT V_Joueur_Y_#
PRINT V_Joueur_Z_#


// CONTROL CAMERA USING ARROWKEYS 0,0.1,1
f_CONTROLES()
POSITION MOUSE SCREEN WIDTH()/2,SCREEN HEIGHT()/2
SYNC
LOOP
REM ___ F I N ____/////////////////
FINIR_TOUT:
END

REMSTART
; NOTER | Enregistrer sousI | Enregistrer sousII | Répertoire à structurer | INCLURE dans l'éxecutable | LIRE comme suit |
;
|***********************************************************|
NOTER; |************---------------------------------------||
|*********************************************************|||

-FONCTIONS préfixe 'f_'
-VARIABLES préfixe majuscule 'V_' = globale ; 'v_' = locale ; SUFFIXE Variables _E ; _# ; _$ (Entier ; réel ; caractères)
-numéroter variables globales 1,2 etc pour les différencier des locales déclarées dans des fonctions;
-TABLEAUX préfixes majuscule 'T_' = GLOBAL ; 't_' = LOCAL ; SUFFIXE Tableaux _E ; _# ; _$
-TYPES préfixes 'TYP_'
-ETIQUETTES suffixe majuscule '_GOT' = GOTO ; '_GOS' = GOSUB
-CHEMINS "\\" séparateur ; ".." dossier parent ;
-COLONNES PUIS LIGNES / LARGEUR / HAUTEUR
|-------------------------------------------------------|
Enregistrer sousI '_Préférences.txt'; |----------------||
|-----------------------------------------------------|||

>enregistrer sous '_Préférences.txt'
>enregistrer sous '\\Bin32\\Données_0a\\_Préférences.txt' (<-préf. par défaut)

>Fichier '_Préférences.txt' ; contenu;
-résolution largeur. hauteur. profondeur. Vsync. Anti-aliasing;
1024
-
768
-
32
-
1
-
1
-Langue, 1 français, 2 Anglais;
1
-Qualité / performances 1=très bas, 2=bas, 3=Bon, 4=Très Bon, 5=Max élevé;
4
-Typo texte (s'assurer que la typo est installée sur votre disque dur) sinon laisser ARIAL;
Arial
-Taille Texte: 1,2 ou 3 pour améliorer la définition utilisée par les lettres du texte;
1
-demander confirmation avant de quitter le programme grâce à touche ECHAP ; 0=non ;1=oui ;
0

|--------------------------------------------------------|
Enregistrer sousII _initialisation.txt; |---------------||
|------------------------------------------------------|||

>enregistrer sous '\\Bin32\\Données_0a\\_initialisation.txt'

>Fichier '_initialisation.txt' ; contenu;
-fréquence d'images/seconde;
60
-Titre de barre de titre;
programme darkbasicpro
-Titre jeu;
"programme1"
-Auteur;
"programmeur prog'"
-année;
(c)2009
-Message d'erreur de base;
"erreur"
REMEND
Rem ***** Included Source File *****
REM * Titre : programmer1
REM * Auteur : programmeur prog'
REM * Date : 01/ 06/ 2009
REM ;
REM ###################################################################################
REM |***** Included Source File ***** "_prog.dba" ; "_prog-PRO.dbpro"///////////////////////////////////|
REM ################################################################################### #


REM /////// CONTROLES /////////////
FUNCTION f_CONTROLES()

REM AVANT / ARRIERE
IF UPKEY()=1 THEN INC V_Avance_#,0.1 ELSE V_Avance_#= 0
IF DOWNKEY()=1 THEN INC V_Recul_#,0.1 ELSE V_Recul_#= 0
IF V_Avance_# > V_Recul_#
IF V_Recul_#>0 THEN DEC V_Recul_#, 0.1
ENDIF
IF V_Avance_# < V_Recul_#
IF V_Avance_#>0 THEN DEC V_Avance_#, 0.1
ENDIF

REM DROITE / GAUCHE
IF RIGHTKEY()=1 THEN INC V_Droite_#,0.1 ELSE V_Droite_#= 0
IF LEFTKEY()=1 THEN INC V_Gauche_#,0.1 ELSE V_Gauche_#= 0
IF V_Droite_# > V_Gauche_#
IF V_Gauche_#>0 THEN DEC V_Gauche_#, 0.1
ENDIF
IF V_Droite_# < V_Gauche_#
IF V_Droite_#>0 THEN DEC V_Droite_#, 0.1
ENDIF

REM Enregistre coordonnées joueur axe xyz
V_OldJoueur_X_# = CAMERA POSITION X()
V_OldJoueur_Y_# = CAMERA POSITION Y()
V_OldJoueur_Z_# = CAMERA POSITION Z()

V_OldCameraY_# = V_CameraY_#
V_OldCameraX_# = V_CameraX_#

REM CAMERA / SOURIS
V_CameraY_# = WrapValue(V_CameraY_#+MousemoveX()*V_Camera_Vitesse_#)
V_CameraX_# = WrapValue(V_CameraX_#+MousemoveY()*V_Camera_Vitesse_#)
V_CameraZ_# = Camera angle Z()

Rem Control pour camera
IF V_Avance_#>0 AND V_Gauche_#=0 AND V_Droite_#=0
MOVE CAMERA V_Joueur_Vitesse_#
V_Joueur_X_# = CAMERA POSITION X()
V_Joueur_Y_# = CAMERA POSITION Y()
V_Joueur_Z_# = CAMERA POSITION Z()
ENDIF

IF V_Recul_#>0 AND V_Gauche_#=0 AND V_Droite_#=0
MOVE CAMERA 0-V_Joueur_Vitesse_#
V_Joueur_X_# = CAMERA POSITION X()
V_Joueur_Y_# = CAMERA POSITION Y()
V_Joueur_Z_# = CAMERA POSITION Z()
ENDIF

IF V_Gauche_#>0 AND V_Avance_#=0 AND V_Recul_#=0
V_Joueur_X_# = Newxvalue(V_Joueur_X_#,Wrapvalue(V_CameraY_#-90),V_Joueur_Vitesse_#)
V_Joueur_Z_# = Newzvalue(V_Joueur_Z_#,Wrapvalue(V_CameraY_#-90),V_Joueur_Vitesse_#)
ENDIF

IF V_Droite_#>0 AND V_Avance_#=0 AND V_Recul_#=0
V_Joueur_X_# = Newxvalue(V_Joueur_X_#,Wrapvalue(V_CameraY_#+90),V_Joueur_Vitesse_#)
V_Joueur_Z_# = Newzvalue(V_Joueur_Z_#,Wrapvalue(V_CameraY_#+90),V_Joueur_Vitesse_#)
ENDIF

REM DIAGONALES: AVANCER.
IF V_Gauche_#>0 AND V_Avance_#>0
YROTATE CAMERA CAMERA ANGLE Y()-45
MOVE CAMERA V_Joueur_Vitesse_#
V_Joueur_X_# = CAMERA POSITION X()
V_Joueur_Y_# = CAMERA POSITION Y()
V_Joueur_Z_# = CAMERA POSITION Z()
ENDIF

IF V_Droite_#>0 AND V_Avance_#>0
YROTATE CAMERA CAMERA ANGLE Y()+45
MOVE CAMERA V_Joueur_Vitesse_#
V_Joueur_X_# = CAMERA POSITION X()
V_Joueur_Y_# = CAMERA POSITION Y()
V_Joueur_Z_# = CAMERA POSITION Z()
ENDIF
REM DIAGONALES: RECULER.
IF V_Gauche_#>0 AND V_Recul_#>0 AND V_Avance_#=0
YROTATE CAMERA CAMERA ANGLE Y()+45
MOVE CAMERA 0-V_Joueur_Vitesse_#
V_Joueur_X_# = CAMERA POSITION X()
V_Joueur_Y_# = CAMERA POSITION Y()
V_Joueur_Z_# = CAMERA POSITION Z()
ENDIF

IF V_Droite_#>0 AND V_Recul_#>0 AND V_Avance_#=0
YROTATE CAMERA CAMERA ANGLE Y()-45
MOVE CAMERA 0-V_Joueur_Vitesse_#
V_Joueur_X_# = CAMERA POSITION X()
V_Joueur_Y_# = CAMERA POSITION Y()
V_Joueur_Z_# = CAMERA POSITION Z()
ENDIF

Rem Tourne camera
// V_CameraTest_X_#=WrapValue(V_CameraX_#-180)
// if V_CameraTest_X_# > 225 then V_CameraX_#=45
// if V_CameraTest_X_# < 135 then V_CameraX_#=315
V_CameraTest_X_#=WrapValue(V_CameraX_#-180)
if V_CameraTest_X_# > 270 then V_CameraX_#=90
if V_CameraTest_X_# < 90 then V_CameraX_#=270

YRotate camera CurveAngle(V_CameraY_#,V_OldCameraY_#,24)
XRotate camera CurveAngle(V_CameraX_#,V_OldCameraX_#,24)

Rem REPositionne Camera
// V_Joueur_Y_# = Get ground height(1,V_Joueur_X_#,V_Joueur_Z_#)+35
Position Camera V_Joueur_X_#,V_Joueur_Y_#,V_Joueur_Z_#
f_CollisionGlissante(V_OldJoueur_X_#,V_OldJoueur_Y_#,V_OldJoueur_Z_#,V_Joueur_X_#,V_Joueur_Y_#,V_Joueur_Z_#,V_TailleJoueur_#,V_Niveau_E)

Rem Position Listener
Position Listener V_Joueur_X_#,V_Joueur_Y_#,V_Joueur_Z_#
Rotate Listener 0,V_CameraY_#,0
ENDFUNCTION

REM /////// COLLISION GLISSANTE /////////////

FUNCTION f_CollisionGlissante(X1#,Y1#,Z1#,X2#,Y2#,Z2#,Radius#,Obj)

C = sc_SphereSlide(Obj,X1#,Y1#,Z1#,X2#,Y2#,Z2#,Radius#,0)

IF C > 0

V_Joueur_X_# = sc_getCollisionSlideX()
V_Joueur_Y_# = sc_getCollisionSlideY()
V_Joueur_Z_# = sc_getCollisionSlideZ()

POSITION CAMERA V_Joueur_X_#, V_Joueur_Y_#, V_Joueur_Z_#

Position Listener V_Joueur_X_#, V_Joueur_Y_#, V_Joueur_Z_#
Rotate Listener 0,V_CameraY_#,0
ENDIF
REM Sliding Collision with Sparky's Collision dll
REM By RUCCUS ----- Email/MSN: Ask-RUCCUS@hotmail.com
ENDFUNCTION

REM ////// INITIER /////////////////

FUNCTION f_DECLARER_VARIABLES()

GLOBAL V_Joueur_# : V_Joueur_#= 0
GLOBAL V_TailleJoueur_# : V_TailleJoueur_#=2

GLOBAL V_OldJoueur_X_# : V_OldJoueur_X_#= 5
GLOBAL V_OldJoueur_Y_# : V_OldJoueur_Y_#= 3
GLOBAL V_OldJoueur_Z_# : V_OldJoueur_Z_#= 4
GLOBAL V_Joueur_X_# : V_Joueur_X_#= V_OldJoueur_X_#
GLOBAL V_Joueur_Y_# : V_Joueur_Y_#= V_OldJoueur_Y_#
GLOBAL V_Joueur_Z_# : V_Joueur_Z_#= V_OldJoueur_Z_#

GLOBAL V_Joueur_Vitesse_# : V_Joueur_Vitesse_#= 0.1
GLOBAL V_Camera_Vitesse_# : V_Camera_Vitesse_#= 0.2
GLOBAL V_Avance_# : V_Avance_#= 0
GLOBAL V_Droite_# : V_Droite_#= 0
GLOBAL V_Recul_# : V_Recul_#= 0
GLOBAL V_Gauche_# : V_Gauche_#= 0

GLOBAL V_OldCameraY_#
GLOBAL V_OldCameraX_#
GLOBAL V_CameraY_#
GLOBAL V_CameraX_#
GLOBAL V_CameraTest_X_#

REM VARIABLE D'USAGE ET DE LECTURE
GLOBAL V_LECTURE1_# : GLOBAL V_LECTURE2_# : GLOBAL V_LECTURE3_#
// GLOBAL V_COL_E
// GLOBAL V_LIN_E


REM CHEMINS ET NOM$
GLOBAL V_Niveau_E : V_Niveau_E = 2
GLOBAL V_Niveau_JEU_$ : V_Niveau_JEU_$ = "1"


ENDFUNCTION

FUNCTION f_Débuter()

ENDFUNCTION

FUNCTION f_INITIALISER()
AUTOCAM OFF : SYNC ON : SYNC RATE GET DISPLAY REFRESH RATE( )
SET DISPLAY MODE 1024,768,32,1 : MAKE OBJECT CUBE 1,1 : POSITION OBJECT 1,-2,-2,-5 : HIDE OBJECT 1
RANDOMIZE TIMER()
ENDFUNCTION

REM /////// SCENE //////////////////

FUNCTION f_PREPARE_SCENE()
SET DIR "BIN32" : SET DIR V_Niveau_JEU_$

IF FILE EXIST(V_Niveau_JEU_$+".dbo") = 0
LOAD OBJECT V_Niveau_JEU_$+".x",V_Niveau_E : SAVE OBJECT V_Niveau_JEU_$+".dbo",V_Niveau_E : DELETE OBJECT V_Niveau_E : LOAD OBJECT V_Niveau_JEU_$+".dbo",V_Niveau_E
ELSE
LOAD OBJECT V_Niveau_JEU_$+".dbo",V_Niveau_E
ENDIF

REM Met le niveau dans le groupe 0 avec collision complexe polygone (type 0) 2 facesPerNode
SC_SETUPCOMPLEXOBJECT V_Niveau_E,0,2 : SC_allowObjectScaling V_Niveau_E : SCALE OBJECT V_Niveau_E,100,100,100 : SC_updateObject V_Niveau_E
REM CHARGER 3 NIVEAUX....

POSITION CAMERA V_Joueur_X_#,V_Joueur_Y_#,V_Joueur_Z_#
MAKE OBJECT CUBE 200,4 : POSITION OBJECT 200,2,2,5
// DIM T_lecture_E(1) : LOAD ARRAY "CD",T_lecture_E() : V_LECTURE1_#=T_lecture_E(0) : V_LECTURE2_#=T_lecture_E(1)
// LOCAL DIM T_CARTEB_E(V_LECTURE1_#,V_LECTURE2_#) AS BYTE
// LOAD ARRAY "CB",T_CARTEB_E()
// FOR V_COL_E=0 TO V_LECTURE1_#
// FOR V_LIN_E=0 TO V_LECTURE2_#
// T_CARTEB_E(V_COL_E,V_LIN_E)=RGBR(POINT(V_COL_E,V_LIN_E))
// IF T_CARTEB_E(V_COL_E,V_LIN_E)=255
// ENDIF
// NEXT V_LIN_E
// NEXT V_COL_E
ENDFUNCTION

REM ///////

FUNCTION f_NETTOYER()

ENDFUNCTION

FUNCTION f_QUITTER()

ENDFUNCTION


FUNCTION f_INTRO()

ENDFUNCTION

FUNCTION f_MENU()

ENDFUNCTION

REM /////////////////////////////////
Rem ***** Included Source File *****
REM * Titre : programmer1
REM * Auteur : programmeur prog'
REM * Date : 01/ 06/ 2009
REM ;
REM ###################################################################################
REM |***** Included Source File ***** "_prog.dba" ; "_prog-PRO.dbpro"///////////////////////////////////|
REM ################################################################################### #


REM ////////// UTILITAIRES ////////////
FUNCTION f_Util()

V_Niveau_JEU_$ = SAVE FILE DIALOG(GET DIR$(),".","NUMERO DU NIVEAU: 1,2,3... ")
SYNC
WAIT 350

IF FILE EXIST(V_Niveau_JEU_$+".X") = 1 AND FILE EXIST(V_Niveau_JEU_$+".DBO") = 0
V_LECTURE1_$ = SAVE FILE DIALOG(GET DIR$(),"","NOMBRE TEXTURES : 1,2,3... ")
// V_LECTURE3_$ = ""
V_Niveau_E = 1

LOAD OBJECT V_Niveau_JEU_$+".x",V_Niveau_E
SAVE OBJECT V_Niveau_JEU_$+".dbo",V_Niveau_E : DELETE OBJECT V_Niveau_E

// SAVE OBJECT V_Niveau_JEU_$+".dbo",V_Niveau_E : DELETE OBJECT V_Niveau_E : LOAD OBJECT V_Niveau_JEU_$+".dbo",V_Niveau_E
// DELETE FILE V_Niveau_JEU_$+".x"




// OPEN FILE BLOCK V_Niveau_JEU_$,1
// perform checklist for file block data 1
// for i = 1 to checklist quantity( )
// // print "file " + str$( i ) + " = " + checklist string$( i )
// IF RIGHT$(checklist string$(i),4) = ".bmp"
// print "IMAGE " + str$( i ) + " = " + checklist string$( i )
// ELSE
// print "OBJET " + str$( i ) + " = " + checklist string$( i )
// ENDIF
// // extract file from block 1, checklist string$( i ), dir$
// next i
// TEXTURE OBJECT 100,2

WAIT KEY

// ELSE
// LOAD OBJECT V_Niveau_JEU_$+".dbo",V_Niveau_E
ENDIF




// LOAD BITMAP "1A.BMP",1 : SET CURRENT BITMAP 1 : V_LECTURE1_#=BITMAP WIDTH(1) : V_LECTURE2_#=BITMAP HEIGHT(1)
// GLOBAL DIM T_CARTEA_E(V_LECTURE1_#,V_LECTURE2_#) AS BYTE
// LOCK PIXELS
// FOR V_COL_E=0 TO V_LECTURE1_#
// FOR V_LIN_E=0 TO V_LECTURE2_#
// T_CARTEA_E(V_COL_E,V_LIN_E)=RGBR(POINT(V_COL_E,V_LIN_E))
// NEXT V_LIN_E
// NEXT V_COL_E
// SAVE ARRAY "CA",T_CARTEA_E(0)
// UNLOCK PIXELS : DELETE BITMAP 1
//
// LOAD BITMAP "1B.BMP",1 : SET CURRENT BITMAP 1 : V_LECTURE1_#=BITMAP WIDTH(1) : V_LECTURE2_#=BITMAP HEIGHT(1)
// GLOBAL DIM T_CARTEB_E(V_LECTURE1_#,V_LECTURE2_#)
// LOCK PIXELS
// FOR V_COL_E=0 TO V_LECTURE1_#
// FOR V_LIN_E=0 TO V_LECTURE2_#
// T_CARTEB_E(V_COL_E,V_LIN_E)=RGBR(POINT(V_COL_E,V_LIN_E))
// NEXT V_LIN_E
// NEXT V_COL_E
// SAVE ARRAY "CB",T_CARTEB_E(0)
// DIM T_lecture_E(1) : T_lecture_E(0)=V_LECTURE1_# : T_lecture_E(1)=V_LECTURE2_# : SAVE ARRAY "CD",T_lecture_E(0)
// UNLOCK PIXELS : DELETE BITMAP 1

END
ENDFUNCTION
REM
Image
Serge Adjo Message lu Posté le 19 Juin 2009 à 12:58 Bulle
Avatar de Serge Adjo
Explorateur

Messages : 47
GCPoints : 5503
Voici la dernière version de TIREUR D'ELITE, les contrôles ont été raffinées:

REM * Titre : programmer1
REM * Auteur : programmeur prog'
REM * Date : 01/ 06/ 2009
REM ;
REM ###################################################################################
REM |PROG PRINCIPAL "_prog.dba" ; "_prog-PRO.dbpro"///////////////////////////////////|
REM ################################################################################### #

IF FILE EXIST("util.txt")=1 THEN f_Util()
// f_Util()
REM Débuter PROGRAMME PRINCIPAL ; déclarer les variables en premier;
REM f_Débuter()
f_DECLARER_VARIABLES()

f_INITIALISER()
f_INTRO()
f_MENU()

f_PREPARE_SCENE()
REM f_NETTOYER()
REM f_QUITTER()

JOUER_LA_SCENE_Zgot:
REM BOUCLE ////////////////////////

DO

SET CURSOR 0,0
PRINT V_Joueur_X_#
PRINT V_Joueur_Y_#
PRINT V_Joueur_Z_#


// CONTROL CAMERA USING ARROWKEYS 0,0.1,1
f_CONTROLES()
POSITION MOUSE SCREEN WIDTH()/2,SCREEN HEIGHT()/2
SYNC
LOOP
REM ___ F I N ____/////////////////
FINIR_TOUT:
END

REMSTART
; NOTER | Enregistrer sousI | Enregistrer sousII | Répertoire à structurer | INCLURE dans l'éxecutable | LIRE comme suit |
;
|***********************************************************|
NOTER; |************---------------------------------------||
|*********************************************************|||

-FONCTIONS préfixe 'f_'
-VARIABLES préfixe majuscule 'V_' = globale ; 'v_' = locale ; SUFFIXE Variables _E ; _# ; _$ (Entier ; réel ; caractères)
-numéroter variables globales 1,2 etc pour les différencier des locales déclarées dans des fonctions;
-TABLEAUX préfixes majuscule 'T_' = GLOBAL ; 't_' = LOCAL ; SUFFIXE Tableaux _E ; _# ; _$
-TYPES préfixes 'TYP_'
-ETIQUETTES suffixe majuscule '_GOT' = GOTO ; '_GOS' = GOSUB
-CHEMINS "\\" séparateur ; ".." dossier parent ;
-COLONNES PUIS LIGNES / LARGEUR / HAUTEUR
|-------------------------------------------------------|
Enregistrer sousI '_Préférences.txt'; |----------------||
|-----------------------------------------------------|||

>enregistrer sous '_Préférences.txt'
>enregistrer sous '\\Bin32\\Données_0a\\_Préférences.txt' (<-préf. par défaut)

>Fichier '_Préférences.txt' ; contenu;
-résolution largeur. hauteur. profondeur. Vsync. Anti-aliasing;
1024
-
768
-
32
-
1
-
1
-Langue, 1 français, 2 Anglais;
1
-Qualité / performances 1=très bas, 2=bas, 3=Bon, 4=Très Bon, 5=Max élevé;
4
-Typo texte (s'assurer que la typo est installée sur votre disque dur) sinon laisser ARIAL;
Arial
-Taille Texte: 1,2 ou 3 pour améliorer la définition utilisée par les lettres du texte;
1
-demander confirmation avant de quitter le programme grâce à touche ECHAP ; 0=non ;1=oui ;
0

|--------------------------------------------------------|
Enregistrer sousII _initialisation.txt; |---------------||
|------------------------------------------------------|||

>enregistrer sous '\\Bin32\\Données_0a\\_initialisation.txt'

>Fichier '_initialisation.txt' ; contenu;
-fréquence d'images/seconde;
60
-Titre de barre de titre;
programme darkbasicpro
-Titre jeu;
"programme1"
-Auteur;
"programmeur prog'"
-année;
(c)2009
-Message d'erreur de base;
"erreur"
REMEND
Rem ***** Included Source File *****
REM * Titre : programmer1
REM * Auteur : programmeur prog'
REM * Date : 01/ 06/ 2009
REM ;
REM ###################################################################################
REM |***** Included Source File ***** "_prog.dba" ; "_prog-PRO.dbpro"///////////////////////////////////|
REM ################################################################################### #


REM /////// CONTROLES /////////////
FUNCTION f_CONTROLES()

REM AVANT / ARRIERE
IF UPKEY()=1 THEN INC V_Avance_#,0.1 ELSE V_Avance_#= 0
IF DOWNKEY()=1 THEN INC V_Recul_#,0.1 ELSE V_Recul_#= 0
IF V_Avance_# > V_Recul_#
IF V_Recul_#>0 THEN DEC V_Recul_#, 0.1
ENDIF
IF V_Avance_# < V_Recul_#
IF V_Avance_#>0 THEN DEC V_Avance_#, 0.1
ENDIF

REM DROITE / GAUCHE
IF RIGHTKEY()=1 THEN INC V_Droite_#,0.1 ELSE V_Droite_#= 0
IF LEFTKEY()=1 THEN INC V_Gauche_#,0.1 ELSE V_Gauche_#= 0
IF V_Droite_# > V_Gauche_#
IF V_Gauche_#>0 THEN DEC V_Gauche_#, 0.1
ENDIF
IF V_Droite_# < V_Gauche_#
IF V_Droite_#>0 THEN DEC V_Droite_#, 0.1
ENDIF

REM Enregistre coordonnées joueur axe xyz
V_OldJoueur_X_# = CAMERA POSITION X()
V_OldJoueur_Y_# = CAMERA POSITION Y()
V_OldJoueur_Z_# = CAMERA POSITION Z()

V_OldCameraY_# = V_CameraY_#
V_OldCameraX_# = V_CameraX_#

REM CAMERA / SOURIS
// V_CameraY_# = WrapValue(V_CameraY_#+MousemoveX()*V_Camera_Vitesse_#)
// V_CameraX_# = WrapValue(V_CameraX_#+MousemoveY()*V_Camera_Vitesse_#)
// V_CameraZ_# = Camera angle Z()

V_CameraX_# = V_CameraX_#+((mousemovey()+0.0)/5.0)
V_CameraY_# = V_CameraY_#+((mousemovex()+0.0)/5.0)
V_CameraZ_# = Camera angle Z()
// rotate camera camera angle x()+((mousemovey()+0.0)/2.0),camera angle y()+((mousemovex()+0.0)/2.0),0
Rem Control pour camera
IF V_Avance_#>0 AND V_Gauche_#=0 AND V_Droite_#=0
MOVE CAMERA V_Joueur_Vitesse_#
V_Joueur_X_# = CAMERA POSITION X()
V_Joueur_Y_# = CAMERA POSITION Y()
V_Joueur_Z_# = CAMERA POSITION Z()
ENDIF

IF V_Recul_#>0 AND V_Gauche_#=0 AND V_Droite_#=0
MOVE CAMERA 0-V_Joueur_Vitesse_#
V_Joueur_X_# = CAMERA POSITION X()
V_Joueur_Y_# = CAMERA POSITION Y()
V_Joueur_Z_# = CAMERA POSITION Z()
ENDIF

IF V_Gauche_#>0 AND V_Avance_#=0 AND V_Recul_#=0
V_Joueur_X_# = Newxvalue(V_Joueur_X_#,Wrapvalue(V_CameraY_#-90),V_Joueur_Vitesse_#)
V_Joueur_Z_# = Newzvalue(V_Joueur_Z_#,Wrapvalue(V_CameraY_#-90),V_Joueur_Vitesse_#)
ENDIF

IF V_Droite_#>0 AND V_Avance_#=0 AND V_Recul_#=0
V_Joueur_X_# = Newxvalue(V_Joueur_X_#,Wrapvalue(V_CameraY_#+90),V_Joueur_Vitesse_#)
V_Joueur_Z_# = Newzvalue(V_Joueur_Z_#,Wrapvalue(V_CameraY_#+90),V_Joueur_Vitesse_#)
ENDIF

REM DIAGONALES: AVANCER.
IF V_Gauche_#>0 AND V_Avance_#>0
YROTATE CAMERA CAMERA ANGLE Y()-45
MOVE CAMERA V_Joueur_Vitesse_#
V_Joueur_X_# = CAMERA POSITION X()
V_Joueur_Y_# = CAMERA POSITION Y()
V_Joueur_Z_# = CAMERA POSITION Z()
ENDIF

IF V_Droite_#>0 AND V_Avance_#>0
YROTATE CAMERA CAMERA ANGLE Y()+45
MOVE CAMERA V_Joueur_Vitesse_#
V_Joueur_X_# = CAMERA POSITION X()
V_Joueur_Y_# = CAMERA POSITION Y()
V_Joueur_Z_# = CAMERA POSITION Z()
ENDIF
REM DIAGONALES: RECULER.
IF V_Gauche_#>0 AND V_Recul_#>0 AND V_Avance_#=0
YROTATE CAMERA CAMERA ANGLE Y()+45
MOVE CAMERA 0-V_Joueur_Vitesse_#
V_Joueur_X_# = CAMERA POSITION X()
V_Joueur_Y_# = CAMERA POSITION Y()
V_Joueur_Z_# = CAMERA POSITION Z()
ENDIF

IF V_Droite_#>0 AND V_Recul_#>0 AND V_Avance_#=0
YROTATE CAMERA CAMERA ANGLE Y()-45
MOVE CAMERA 0-V_Joueur_Vitesse_#
V_Joueur_X_# = CAMERA POSITION X()
V_Joueur_Y_# = CAMERA POSITION Y()
V_Joueur_Z_# = CAMERA POSITION Z()
ENDIF
REM MOUVEMENT DE HAUT EN BAS :
V_Joueur_Y_# = V_Joueur_Y_#+MOUSEMOVEZ()/100
// V_Joueur_Y_# = CURVEVALUE (V_Joueur_Y_#+MOUSEMOVEZ()/90,0,0.01)
Rem Tourne camera
// V_CameraTest_X_#=WrapValue(V_CameraX_#-180)
// if V_CameraTest_X_# > 225 then V_CameraX_#=45
// if V_CameraTest_X_# < 135 then V_CameraX_#=315
V_CameraTest_X_#=WrapValue(V_CameraX_#-180)
if V_CameraTest_X_# > 270 then V_CameraX_#=90
if V_CameraTest_X_# < 90 then V_CameraX_#=270

YRotate camera CurveAngle(V_CameraY_#,V_OldCameraY_#,24)
XRotate camera CurveAngle(V_CameraX_#,V_OldCameraX_#,24)
// rotate camera camera angle x()+((mousemovey()+0.0)/2.0),camera angle y()+((mousemovex()+0.0)/2.0),0
Rem REPositionne Camera
// V_Joueur_Y_# = Get ground height(1,V_Joueur_X_#,V_Joueur_Z_#)+35
Position Camera V_Joueur_X_#,V_Joueur_Y_#,V_Joueur_Z_#
f_CollisionGlissante(V_OldJoueur_X_#,V_OldJoueur_Y_#,V_OldJoueur_Z_#,V_Joueur_X_#,V_Joueur_Y_#,V_Joueur_Z_#,V_TailleJoueur_#,V_Niveau_E)

Rem Position Listener
Position Listener V_Joueur_X_#,V_Joueur_Y_#,V_Joueur_Z_#
Rotate Listener 0,V_CameraY_#,0
ENDFUNCTION

REM /////// COLLISION GLISSANTE /////////////

FUNCTION f_CollisionGlissante(X1#,Y1#,Z1#,X2#,Y2#,Z2#,Radius#,Obj)

C = sc_SphereSlide(Obj,X1#,Y1#,Z1#,X2#,Y2#,Z2#,Radius#,0)

IF C > 0

V_Joueur_X_# = sc_getCollisionSlideX()
V_Joueur_Y_# = sc_getCollisionSlideY()
V_Joueur_Z_# = sc_getCollisionSlideZ()

POSITION CAMERA V_Joueur_X_#, V_Joueur_Y_#, V_Joueur_Z_#

Position Listener V_Joueur_X_#, V_Joueur_Y_#, V_Joueur_Z_#
Rotate Listener 0,V_CameraY_#,0
ENDIF
REM Sliding Collision with Sparky's Collision dll
REM By RUCCUS ----- Email/MSN: Ask-RUCCUS@hotmail.com
ENDFUNCTION

REM ////// INITIER /////////////////

FUNCTION f_DECLARER_VARIABLES()

GLOBAL V_Joueur_# as float : V_Joueur_#= 0
GLOBAL V_TailleJoueur_# as float : V_TailleJoueur_#=2

GLOBAL V_OldJoueur_X_# as float : V_OldJoueur_X_#= 2.5
GLOBAL V_OldJoueur_Y_# as float : V_OldJoueur_Y_#= 3
GLOBAL V_OldJoueur_Z_# as float : V_OldJoueur_Z_#= 2.5
GLOBAL V_Joueur_X_# as float : V_Joueur_X_#= V_OldJoueur_X_#
GLOBAL V_Joueur_Y_# as float : V_Joueur_Y_#= V_OldJoueur_Y_#
GLOBAL V_Joueur_Z_# as float : V_Joueur_Z_#= V_OldJoueur_Z_#

GLOBAL V_Joueur_Vitesse_# : V_Joueur_Vitesse_#= 0.2
GLOBAL V_Camera_Vitesse_# : V_Camera_Vitesse_#= 0.2
GLOBAL V_Avance_# : V_Avance_#= 0
GLOBAL V_Droite_# : V_Droite_#= 0
GLOBAL V_Recul_# : V_Recul_#= 0
GLOBAL V_Gauche_# : V_Gauche_#= 0

GLOBAL V_OldCameraY_#
GLOBAL V_OldCameraX_#
GLOBAL V_CameraY_#
GLOBAL V_CameraX_#
GLOBAL V_CameraTest_X_#

REM VARIABLE D'USAGE ET DE LECTURE
GLOBAL V_LECTURE1_# : GLOBAL V_LECTURE2_# : GLOBAL V_LECTURE3_#
// GLOBAL V_COL_E
// GLOBAL V_LIN_E


REM CHEMINS ET NOM$
GLOBAL V_Niveau_E : V_Niveau_E = 2
GLOBAL V_Niveau_JEU_$ : V_Niveau_JEU_$ = "1"


ENDFUNCTION

FUNCTION f_Débuter()

ENDFUNCTION

FUNCTION f_INITIALISER()
AUTOCAM OFF : SYNC ON : SYNC RATE GET DISPLAY REFRESH RATE( )
SET DISPLAY MODE 1024,768,32,1,4,0 : MAKE OBJECT CUBE 1,1 : POSITION OBJECT 1,-2,-2,-5 : HIDE OBJECT 1
RANDOMIZE TIMER()
ENDFUNCTION

REM /////// SCENE //////////////////

FUNCTION f_PREPARE_SCENE()
SET DIR "BIN32" : SET DIR V_Niveau_JEU_$

IF FILE EXIST(V_Niveau_JEU_$+".DBO") = 0
LOAD OBJECT V_Niveau_JEU_$+".x",V_Niveau_E : SAVE OBJECT V_Niveau_JEU_$+".dbo",V_Niveau_E : DELETE OBJECT V_Niveau_E : LOAD OBJECT V_Niveau_JEU_$+".dbo",V_Niveau_E
ELSE
LOAD OBJECT V_Niveau_JEU_$+".dbo",V_Niveau_E
ENDIF

SET OBJECT LIGHT V_Niveau_E, 0
REM Met le niveau dans le groupe 0 avec collision complexe polygone (type 0) 2 facesPerNode
SC_SETUPCOMPLEXOBJECT V_Niveau_E,0,2 : SC_allowObjectScaling V_Niveau_E : SCALE OBJECT V_Niveau_E,100,100,100 : SC_updateObject V_Niveau_E
REM CHARGER 3 NIVEAUX....

POSITION CAMERA V_Joueur_X_#,V_Joueur_Y_#,V_Joueur_Z_#
MAKE OBJECT CUBE 200,4 : POSITION OBJECT 200,2,2,5


// DIM T_lecture_E(1) : LOAD ARRAY "1Z",T_lecture_E() : V_LECTURE1_#=T_lecture_E(0) : V_LECTURE2_#=T_lecture_E(1)
// LOCAL DIM T_CARTEB_E(V_LECTURE1_#,V_LECTURE2_#) AS BYTE
// LOAD ARRAY "CB",T_CARTEB_E()
// FOR V_COL_E=0 TO V_LECTURE1_#
// FOR V_LIN_E=0 TO V_LECTURE2_#
// T_CARTEB_E(V_COL_E,V_LIN_E)=RGBR(POINT(V_COL_E,V_LIN_E))
// IF T_CARTEB_E(V_COL_E,V_LIN_E)=255
// ENDIF
// NEXT V_LIN_E
// NEXT V_COL_E
ENDFUNCTION

REM ///////

FUNCTION f_NETTOYER()

ENDFUNCTION

FUNCTION f_QUITTER()

ENDFUNCTION


FUNCTION f_INTRO()

ENDFUNCTION

FUNCTION f_MENU()

ENDFUNCTION

REM /////////////////////////////////
Rem ***** Included Source File *****
REM * Titre : programmer1
REM * Auteur : programmeur prog'
REM * Date : 01/ 06/ 2009
REM ;
REM ###################################################################################
REM |***** Included Source File ***** "_prog.dba" ; "_prog-PRO.dbpro"///////////////////////////////////|
REM ################################################################################### #


REM ////////// UTILITAIRES ////////////
FUNCTION f_Util()

V_Niveau_JEU_$ = SAVE FILE DIALOG(GET DIR$(),".","NUMERO DU NIVEAU: 1,2,3... ")
SYNC
WAIT 350

IF FILE EXIST(V_Niveau_JEU_$+".X") = 1 AND FILE EXIST(V_Niveau_JEU_$+".DBO") = 0
V_LECTURE1_$ = SAVE FILE DIALOG(GET DIR$(),"","NOMBRE TEXTURES : 1,2,3... ")
// V_LECTURE3_$ = ""
V_Niveau_E = 1

LOAD OBJECT V_Niveau_JEU_$+".x",V_Niveau_E
SAVE OBJECT V_Niveau_JEU_$+".dbo",V_Niveau_E : DELETE OBJECT V_Niveau_E

ENDIF


DIM T_CARTEZ_E(1) AS INTEGER

LOAD BITMAP "1A.BMP",1 : SET CURRENT BITMAP 1 : V_LECTURE1_#=BITMAP WIDTH(1) : V_LECTURE2_#=BITMAP HEIGHT(1)
DIM T_CARTEA_E(V_LECTURE1_#-1,V_LECTURE2_#-1) AS BYTE : T_CARTEZ_E(0) = V_LECTURE1_# : T_CARTEZ_E(1) = V_LECTURE2_#
LOCK PIXELS
FOR V_COL_E=0 TO V_LECTURE1_#-1
FOR V_LIN_E=0 TO V_LECTURE2_#-1
T_CARTEA_E(V_COL_E,V_LIN_E)=RGBR(POINT(V_COL_E,V_LIN_E))
NEXT V_LIN_E
NEXT V_COL_E
SAVE ARRAY "1A",T_CARTEA_E() : SAVE ARRAY "1Z",T_CARTEZ_E()
UNLOCK PIXELS
DELETE BITMAP 1






UNDIM T_CARTEA_E() : DIM T_CARTEA_E(V_LECTURE1_#-1,V_LECTURE2_#-1) AS BYTE
LOAD ARRAY "1A",T_CARTEA_E()
CREATE BITMAP 1,V_LECTURE1_#,V_LECTURE2_# : SET CURRENT BITMAP 1
FOR V_COL_E=0 TO V_LECTURE1_#-1
FOR V_LIN_E=0 TO V_LECTURE2_#-1
rem T_CARTEA_E(V_COL_E,V_LIN_E)=RGBR(POINT(V_COL_E,V_LIN_E))
dot V_COL_E,V_LIN_E,rgb(T_CARTEA_E(V_COL_E,V_LIN_E),0,0)
NEXT V_LIN_E
NEXT V_COL_E


DO
COPY BITMAP 1,0
// SET CURSOR 0,0
// FOR C=0 TO V_LECTURE1_#-15
// PRINT C
// NEXT C

SYNC
LOOP
// LOAD BITMAP "1B.BMP",1 : SET CURRENT BITMAP 1 : V_LECTURE1_#=BITMAP WIDTH(1) : V_LECTURE2_#=BITMAP HEIGHT(1)
// GLOBAL DIM T_CARTEB_E(V_LECTURE1_#,V_LECTURE2_#)
// LOCK PIXELS
// FOR V_COL_E=0 TO V_LECTURE1_#
// FOR V_LIN_E=0 TO V_LECTURE2_#
// T_CARTEB_E(V_COL_E,V_LIN_E)=RGBR(POINT(V_COL_E,V_LIN_E))
// NEXT V_LIN_E
// NEXT V_COL_E
// SAVE ARRAY "CB",T_CARTEB_E(0)
// DIM T_lecture_E(1) : T_lecture_E(0)=V_LECTURE1_# : T_lecture_E(1)=V_LECTURE2_# : SAVE ARRAY "CD",T_lecture_E(0)
// UNLOCK PIXELS : DELETE BITMAP 1

END
ENDFUNCTION
REM
Image
Serge Adjo Message lu Posté le 19 Juin 2009 à 13:03 Bulle
Avatar de Serge Adjo
Explorateur

Messages : 47
GCPoints : 5503
Ce programme permet de convertir tout les fichiers d'un repertoire, ".x" pour ".dbo" :



Citation :

// FUNCTION

V_numero_E = 1
V_TOTAL_E = 0
V_FICHIER_$ = ""

SYNC ON : SYNC RATE 60
MAKE DIRECTORY "_1"
PERFORM CHECKLIST FOR FILES

FOR Z= 1 TO CHECKLIST QUANTITY()
// PRINT LEFT$( CHECKLIST STRING$(Z), LEN(CHECKLIST STRING$(Z))-2 )
IF RIGHT$(CHECKLIST STRING$(Z),2) = ".x" OR RIGHT$(CHECKLIST STRING$(Z),2) = ".X"
V_FICHIER_$ = LEFT$( CHECKLIST STRING$(Z), LEN(CHECKLIST STRING$(Z))-2 )
IF FILE EXIST(V_FICHIER_$+".dbo") = 0 OR FILE EXIST(V_FICHIER_$+".DBO") = 0
LOAD OBJECT CHECKLIST STRING$(Z),V_numero_E : SAVE OBJECT "_1"+V_FICHIER_$+".dbo",V_numero_E : DELETE OBJECT V_numero_E
INC V_TOTAL_E,1
ENDIF
ENDIF
NEXT Z
DO
SET CURSOR 0,0
PRINT "ECHAP POUR QUITTER"
PRINT "CONVERSION TERMINEE:"
PRINT V_TOTAL_E," FICHIER(S) SUR ",CHECKLIST QUANTITY()
PRINT "DANS LE REPERTOIRE '_1'"
SYNC
LOOP
WAIT KEY
PRINT "CONVERSION TERMINEE"
// ENDFUNCTION


Dernière édition le 20 Juin 2009 à 01:07
Image
Répondre
GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 1.1871 secondes