Programme Darkbasic pro
| Serge Adjo |
Posté le 21 Fév 2009 à 16:52
|
|
![]() 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.
Dernière édition le 24 Fév 2009 à 21:34
|
|
| corwin |
Posté le 21 Fév 2009 à 17:45
|
|
![]() Messages : 459 GCPoints : 63647 |
ton jeu tu veut qu'il soit en 3d ? je peut te faire un modèle si tu veut |
|
| Serge Adjo |
Posté le 21 Fév 2009 à 17:52
|
|
![]() 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"
Dernière édition le 24 Fév 2009 à 23:10
|
|
| Serge Adjo |
Posté le 05 Juin 2009 à 12:38
|
|
![]() 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" ! |
|
| Oli |
Posté le 05 Juin 2009 à 22:41
|
|
![]() 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 ! |
|
| Serge Adjo |
Posté le 12 Juin 2009 à 16:46
|
|
![]() 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 |
|
| Serge Adjo |
Posté le 19 Juin 2009 à 12:58
|
|
![]() 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 |
|
| Serge Adjo |
Posté le 19 Juin 2009 à 13:03
|
|
![]() Messages : 47 GCPoints : 5503 |
Ce programme permet de convertir tout les fichiers d'un repertoire, ".x" pour ".dbo" : Citation :
Dernière édition le 20 Juin 2009 à 01:07
|
|



