et sinon y´a des trucs speciaux a faire dans le render to texture ?
D´abord est-ce que c´est bien la texture que tu as créée avec le render to texture que tu as appliqueé à ton objet? Il ne le fait pas automatiquement. Après avoir fait " render" dans le render to texture, tu dois créer un matériau où tu mets la texture que tu viens de créer dans diffuse, et pour être sûr qu´elle apparaisse telle quelle tu peux mettre du self-illumination à 100 pourcent, puis tu l´appliques à ton objet pour remplacer le matériau d´origine. Il faut bien faire attention à ce que le map channel du modifieur qui s´est ajouté ( automatic flatten UV) corresponde à celui de l´image en diffuse. Vérifie que la texture s´affiche bien quand tu fais un rendu.
Ensuite dans le panda exporter, pour qu´il exporte les textures il faut que " materials" et " mapping coordinates" soient cochées, et dans l´onglet " texture" coche " copy texture map". Dans DarkBasic, n´oublie pas de commencer par mettre la commande suivante pour que les textures s´affichent:
SET AMBIENT LIGHT 100
Voilà, si tu fais tout ça correctement ça devrait marcher.
Aïe en me relisant j´ai l´impression que je ne suis pas forcément très didactique dans mes explications. Si quelqu´un a besoin d´explications plus simples ou plus en détail, qu´il n´hésite pas à me demander.
Timorite, j´avance dans la traduction du tuto. Je le conseille vivement à tout les débutants. Il est vraiment bien fait, que ceux qui ne parle pas très bien l´anglais sois rassuré, ce n´est pas très compliqué ( du moins où j´en suis! ) . En plus, on apprend vraiment les trucs essentiels de la programmation.
bonne continuaton de ton forum !
A l´aise. Dis donc tu le traduis en retranscrivant tout, ou alors juste mentalement? Parce que pour un site de création de jeux dont je fais partie on aurait justement besoin d´une traduction de ce tutoriel. Voilà l´URL, n´hésite pas à aller poster dans les forums.
http://membres.lycos.fr/dxtgamecreating/
Salut,
j´ai un pote qui apprend darkbasic et j´arrive pas a l´aider pour un truc alors voici le code de départ :
LOAD IMAGE " eau2.jpg", 1
LOAD IMAGE " neige.jpg", 2
LOAD IMAGE " nds_is_here.jpg", 3
PRINT " Appuyez sur une touche pour démarrer le programme"
wait key
MAKE SNOW PARTICLES 1, 2, 50, 10, 50, 30, 50, 50, 50
MAKE OBJECT CUBE 1, 100
DO
TEXT 75, 75, " Bienvenue dans le monde de la Nintendo DS"
TEXTURE OBJECT 1, 3
YROTATE OBJECT 1, OBJECT ANGLE Y(1)+0.1
LOOP
donc un truc assez simple t a un cube qui tourne avec des particules
mais le prob c´est quand on ajoute un objet 3d quelque soit le format ( x ou 3DS) quand je le place tout en haut et ben ca me fait quitter le logiciel quelque seconde apres avoir lancé l´executable alors je comprends pas trop pourquoi ca quite et y a un ecran noir plus rien ne marche ni le texte pour appuyer sur une touche , ni le cube qui tourne ni l´objet 3d que l´on voudrait rajouter dedans
merci d´avance ++
C´est bizarre que ca quite comme ca encore si il ne faisait rien et qu´il laissait le cube tourner mais la il laisse rien . ..
Salut, en fait je n´ai jamais essayé les particules, d´ailleurs je ne savais même pas que la commande existait vu qu´elle n´est pas dans mon lexique ( donc déjà merci pour l´info )
Mais si tu l´a mis tout en haut de ton code et que ça plante avant même que le message s´affiche, ça veut dire que le problème vient sans doute du fichier 3D. Tu l´as testé dans un autre code plus simple pour voir s´il fonctionnait? Mais bon peut-être que le message et l´objet 3D ne sont pas visibles et qu´en fait ça plante après que tu aies poussé sur la touche. Je vais aller essayer et je te répondrai tout à l´heure ou demain.
Effectiveemnt c´était une erreur de model je suppose
Bon merci beaucou pour ton aide mais comment eviter des bug d´exportation , j utilise penda exporter
bon j´ai un autre petit probleme alors j´ai mon model 3d qui marche dedans il tourne ect . ..
mais j´ai un probleme j´ai fai une autre texture et puis ca marche pas voici le code :
LOAD IMAGE " eau2.jpg", 1
LOAD IMAGE " neige.jpg", 2
LOAD IMAGE " nds_is_here.jpg", 3
LOAD IMAGE " Boîte02.jpg",4
load object " personage.x",15
PRINT " Appuyez sur une touche pour démarrer le programme"
wait key
MAKE SNOW PARTICLES 1, 2, 50, 10, 50, 30, 50, 50, 50
MAKE OBJECT CUBE 1, 100
DO
SET AMBIENT LIGHT 100
TEXT 75, 75, " Bienvenue dans le monde de la Nintendo DS"
SCALE OBJECT 15,5,5,5
TEXTURE OBJECT 15,4
TEXTURE OBJECT 1, 3
YROTATE OBJECT 1, OBJECT ANGLE Y(1)+0.1
YROTATE OBJECT 15, OBJECT ANGLE Y ( 1)+0.1
LOOP
Pour les bugs d´exportation, je ne sais pas encore régler ça. C´est un exporter assez capricieux, il faut essayer de voir ce qui marche et ce qui marche pas au cas par cas selon le modèle. Parfois ce qui ne marche pas en faisant " export" marche en faisant " export selected" et inversément, en collapsant le stack ou non ou juste une partie, et puis en essayant les différents réglages dans l´exporter. Désolé j´ai pas l´impression qu´il y ait vraiment de solution qui marche à tous les coups.
Pour ta scène à priori je ne vois pas ce qui cloche, essaye quand même en mettant les SCALE OBJECT et TEXTURE OBJECT avant le DO LOOP, mais à priori ça ne doit pas faire planter juste ralentir. Tu es sure que ton objet a des coordonnées de mapping? Tu as quoi comme message d´erreur?
Timorite,
je le retranscrit tout en français. Donc si ça te dis je te le passe.
mais vu que je n´ai pas beaucoup de temps, mais je m´efforce de le rendre le plus compréhensible possible. En tout cas je te le passe volontier et tu peux changer des passages si tu pense que cela serait nécessaire. Vu que j´ai des base en BASIC, le début est assez simple à traduire. On verra par la suite... Enfait, tu préfère que je te l´envois " par vagues" sur les forums, ou bien en entier quand j´aurai terminé pour que tu puisse l´intégrer dans le site?
Autrement, j´ai deux petites questions:
1: Avec DarkBasic, tu peux faire des jeux multijoueur ( le support technique en français m´a dit qu´il ne savait pas).
2: Blender ( www.blender3d.org)permet de créer des images 3D et il est graduit. De plus il y a un tutorial pour apprendre à modéliser, animer, etc... Le problème, c´est que je ne sait pas quel est format des images et donc, si elle sont compatible avec DarkBasic. Je sais que tu n´utilise pas ce logiciel, mais au cas où...
voila, c´est tout
Nan mais ce n´est pas qu´il plante c´est juste qu´il n´execute pas le Scale et le texture object il fait rotate et tout mais les 2 trucs il ne les executent pas .
Comment ca des coordonnés de mapping ?
prog_debutant, c´est vachement cool, tu peux les mettre sur ce forum comme ça ça fera profiter les gens de ce forum aussi. Je les posterai sur le notre après ( s´ils sont bien traduits ) . Et a part ça, ouais tu peux faire des jeux multi-joueurs avec DB, d´ailleurs c´est ce que suis en train de faire, mais à plusieurs sur un même ordi, pas en réseau, genre un jeu de combat clavier+clavier ou bien clavier+joystick. Aucun problème. Et apparemment Blender est compatible, tu peux exporter en . X à ce qu´il parraît. Je ne peux pas te le garantir comme je ne l´ai jamais testé mais je l´ai entendu dire.
the_huntress, bizard pour le scale, normalement ça devrait marcher, désolé je vais y réfléchir. Pour la texture, les coordonnées de mapping sont les infos pour la projection de texture. Elles sont créées par exemple en mettant un UVMap dans 3D Max, ou un render to texture. Avant d´exporter vers DarkBasic il faut le collapser dans le stack pour que les coordonnées de mapping fassent partie de l´objet.
oui blender exporte bien en . x
Timorite,
je te le poste dans une ou deux heures, le temps de le relire ( et de voir si ce que j´ai écrit a un sens!)
donc, patience!
INTRODUCTION
Bienvenu dans la communeauté Dark Basic, le plus puissant langage de programmation BASIC de la planète. Dark Basic ne requiert pas de connaissance en programmation antérieurs. Tout ce qu’ils vous faut, c’est une bonne imagination et le plaisir de créer vos jeux. Le reste, vous pouvez l’apprendre.
Dark Basic permet de créer n’importe quoi, d’un simple programme en mode texte à un jeu à rendu 3D complet . Une seul commande vous donne accès au son, à la musique, à l’ animation, au text et au graphismes avec une aisance incroyable. Vous pouvez utiliser et contrôler les périphériques tel qu’un joystick. Le temps dont vous disposez et votre talent seront les seules choses qui donneront ou non à votre jeu une qualité comerciale.
Il y a deux possibillités qui s’ouvrent à vous. Il se peut que vous choisissiez une voie académique pour apprendre en détails les différents aspects du Basic et que vous créiez un studio dans lequelle vous pouvez dévelloperez vos logiciels. Alternativement, vous allez peut-être opter pour la vois rapide, vous donnant un avant goût du métier de programmeur en moins de 15 minutes.
LES BASES DE LA PROGRAMMATION
L’objectif de ce chapitre d’aide est d’apprendre comment écrire votre propre programme BASIC. BASIC est un acronyme de Beginners All-purpose Symbolic Instruction Code. DARK est un dérivé du terme ´Dark Horse´ ( go ahead, look it up/ avance, cherche ) . Le programme est une suite de tâches exécutées par l’ordinateur. La tâche est decrite à l’ordinateur en utilisant les instructions DARK BASIC.
Les instructions de votre programme sont écrites en respectant certaines règles, la sintaxe. Vous devez suivre ces règles si vous écrivez des programmes. En procédant cependant dans l’ordre ce qui est expliqué dans les sous-chapitres suivants, vous serez certain de comprendre les règles du BASIC en général, et comment les appliquer au mieux pour programmer.
1) Types de données, variables et tableaux 5
2) Opérateurs arithmétiques, relationnels et logiques 9
3) instructions communes 11
4) fonctions comunes courament utilisées 17
5) mots reservés, remarques et espaces 19
6) Erreurs et avertissements 21
Types de données, variables et tableaux
Types de données
Nous avons établis ces instructions indispensables pour écrire un programme. Une instruction peut-être remplacée par une commande et sa donnée. La commande est une opération ( si …et bien, afficher…)qui est executée par l’ordinateur. La donnée doit être utilisée par la commande pour complèter l’opération. La donnée peut aussi stocker vos parramètres.
Il y a trois types de données que vous pouvez utiliser.Les nombres entiers relatifs, les nombres réels et les chaînes. Chaque type de données contient des valeurs légérement différentes.
Nombres entiers relatifs
Un nombre entier relatif peut contenir un nombre entier, mais pas décimaux. Pour rendre la valeur négative, vous devez placer un symbole trait d’union ( -) avant la valeur. Vous ne devez pas utiliser de virgules sous peine de générer une erreur de syntaxe. Exemples de nombres entiers relatifs corrects:
42
10000
-233000
-100
Nombres réels
Un nombre réel peut contenir un nombre entier ou un nombre décimal qui utilise le point ( remplaçant la virgule). Pour que la valeur soit négative, vous devez placer le symbole trait d’union ( -) avant la valeur. Exemples de nombres réels corrects :
20.0005
99.9
-5000.12
-9999.9991
Chaîne ( de caractères)
Ce type de donnée n’est pas numérique, mais stockent des caractères. Chaque chaîne stocke les caractères écrits entre guillemets. Les chaînes peuvent stocker des symboles numériques mais ils seront traités comme un texte. Exemples corrects :
" A"
" Hello World"
" Telephone"
" I am 99 years old"
" 1.2.3.4.5.6.7.8.9"
Chaque chaîne peut contenir 255 caractères. Vous pouvez aussi avoir une chaîne sans données repésentant une paire vide sans guillemets.
VARIABLES
Le meilleur moyen de démontrer ce qu’est une variable est d’utiliser un exemple. Faites le calcul:
A = 3 + 4
Une variable est utilisée pour stocker une valeur. C’est simple. Une variable peut contenir n’importe quel type de donnée. Le programme suivant démontre comment les données d’une variable peuvent être affichée à l’écran:
A = 3 + 4
PRINT A
Maintenant, prenez l’exemple suivant pour comprendre comment les variables peuvent être uilisées librement comme des nombres:
A = 2
B = 8
C = A + B
PRINT C
Dans l’exemple précédent, 2 est stocké dans la variable A,8 est stocké dans la variable B et C donne la somme de A et B. Le calcul est basé sur les valeur contenuent dans les variables et donne ici C = 2 + 8. Le résultat, 10, est retenu comme nouvelle valeur de de C et et peut éventuellement être affichée à l’écran.
Jusqu’ici , nous avons vu les variables utilisée pour stocker de valeurs entières. Les variables peuvent aussi stocker des nombres réels ou des chaînes. Pour permettre à une variable de stocker ces autres types de données, vous devez faire la différence entre les différents types de variables comme une variable entière ( relative), réel de type chaîne. Pour nomer un variable réel, vous devez ajouter un caractère ( #) comme dernier caractère de votre variable. Si vous voulez que votre variable stocke des caractères, vous devez ajouter un caractère dollar ( $) comme dernier caractère. Voici un exemple de variable utilisée pour variables des valeur réels:
mydata#=42.5
PRINT mydata#
En ajoutant le symbole ( #), nous avons créé une variable de type variable réel. La même règle s’applique aussi pour les variables chaînes
myname$="Lee"
PRINT myname$
Tout les noms de variables peuvent être écrit en minuscule ou en majuscule, une variable appelée NAME$ peut s’écrire name$ ou Name$. Les variables chaînes sont limitée pour les maths. L’exemple suivant ajoute deux chaînes et le resultat est l’enchaînement des deux données des varibles:
a$="Hello"
b$="World"
c$=a$+b$
print c$
Dans cet exemple, le text " HelloWorld" apparaît à l’écran. Etes vous capable de placer un espace entre " Hello" et " World"?
Tableaux
Les tableaux vont être très important dans vos programmes. Ils permettent de stocker une grande quantité de données sous un seul nom. Vous pouvez avoir accès aux donnée par un index numérique plutôt que par le seul nom .
Si vous voulez stocker tous les numéros de loterie gagnants de la semaine, écrire 52 noms de variables est long, dure à maintenire est plutôt dur à gérer. Les tableaux vous permettent de créer une forme spéciale de variable qui peut stocker d’avantage de données qu’un élément de donnée. Vous pourriez commencer votre programme ainsi :
lottery1$="43,76,12,34,12,11"
lottery2$="76,12,34,12,11,44"
lottery3$="12,34,12,02,05,07"
etc..
Deux heures plus tard, vous réalisez que vous pouvez l’écrire comme ça:
DIM lottery$(52)
lottery$(1)="43,76,12,34,12,11"
lottery$(2)="76,12,34,12,11,44"
lottery$(3)="12,34,12,02,05,07"
etc..
Nous préparont un tableau en utilisant une commande DIM avant le nom de notre tableau. Comme pour les variables, quand nous introduisons un simbole ( $), nous ordonons au programme d’utiliser un tableau pour stocker nos chaînes. Ensuite nous in indiquons entre parenthèses combien de données nous voulons stocker dans le tableau. Le tableau fonctionne presque comme une variable, mais vous devez aussi fournir la position à l’intérieur du tableau où vous voulez stocker les données.
Vous vous demandez sûrement où est le gain de temps d’utiliser les tableaux. Si vous voulez afficher les 52 numéros de loterie à l’écran avec la 1ère méthode vous devrez écrire le nom de chaque variable qui va s’afficher pour chacune des 52 variables:
PRINT lottery1$
PRINT lottery2$
PRINT lottery3$
etc..
Mais si vous vous avez utilisé la seconde approche, le code sera:
PRINT lottery$(1)
PRINT lottery$(2)
PRINT lottery$(3)
etc..
Dans un tableau, vous n’avez plus besoin d’utiliser le nom de la variable. Vous pouvez trouver la donnée en utilisant un nombre de position. Accéder aux données de cette manière offre mille avantages, que vous allez apprendre à utiliser. Un exemple pour clarifier le sujet :
FOR T=1 TO 52
PRINT lottery$(T)
NEXT T
Ce code remplace 52 instructions PRINT en seulement 3 instructions. Dans cet exemple, T est incrémenté de 1 à 52 à l’intérieur d’une boucle qui affiche le contenu du tableau à chaque passage.
Les tableaux peuvent aussi stocker différentes “niveaux” de données ( par exemple une semaine à 6 jours, donc 1.1, 1.2 etc…) ce qui donne un tableau comme ça:
DIM lottery(52,6)
Sans symbole dollar ( $), nous créons un tableau qui stocke des nombres entiers. Il y a un second nombre de position séparé par un point. Ce qui signifie que pour chaqune des 52 positions de 1 à 52, il y a 1 à 6 sous-éléments dans lequels les donnée peuvent être stockée. Ces tableaux sont comme des classeur dans lequels les numéros de 1 à 52 sont eux-mêmes séparés en 6 « boîtes ». Vous pouvez stocker un valeur dans chaque boîte. En tout, ce sont 312 valeurs(52X6). Vous pouvez avoir d’avantage de dimensions dans votre tableau, lequel devient très gros ( 1,2,3,4,5). Toutefois, soyez prudent, car ce genre de tableau occupe une grande place dans la mémoire est ralentit votre programme.
Introiduire de nouvelle donnée dans notre tableau devient élémentaire:
lottery(1,1)=43
lottery(1,2)=76
lottery(1,3)=12
lottery(1,4)=34
lottery(1,5)=12
lottery(1,6)=11
lottery(2,1)=43
lottery(2,2)=76
lottery(2,3)=12
lottery(2,4)=34
lottery(2,5)=12
lottery(2,6)=11
Vous êtes maintenant capable de donner accès à d’avantage de données à votre programme. Contrairement à l’utilisation de chaînes, vous pouvez demander à votre programme de compter la fréquence d’apparition d’un certain nombre.
Il faut penser à choisir le type du tableau que vous voulez créer ( nombre entier, réel…). Vous pouvez avoir différents type dans un tableau.
Opérateurs arithmétiques, relationnels et logiques
Nous avons déjà utilisé un opérateur dans un exemple antérieur. Opérateur est le terme donné au symbole mathématique utilisé dans tous les calculs. La plupart des opérateurs sont des operateurs arithmetiques et sont facilement identifiables. Tous les opérateurs requierent deux opérandes séparées par l’oppérateur.
OPÉRATEURS ARITHMÉTIQUES
Un oppérateur arithmétique peut représenter une addition, une soustraction, une mutiplication ou une division, respectivement, les symboles : ( +) ( -) ( *) ( /).
Le signe plus(+) signifie que la valeur de droite doit être additionée à la valeur de gauche. Quelques exemples :
3 + 4 égale 7
A + B égale la valeur de A additionée à la valeur de B
Le signe moins(-) signifie que la valeur de droite doit être retranchée de la valeur de gauche:
3 - 4 égale -1
A - B égal la valeur de B soustraite à la valeur de A
L’astérisque(*) signifie que la valeur de droite est multipliée par la valeur de gauche:
3 * 4 égale 12
A * B égale la valeur de A multipliée par la valeur de A
Le slash(/) signifie que la valeur à droite du slash et divisée par la valeur de gauche:
10 / 2 égale 5
A / B égale la valeur de A divisée par la valeur de B
OPERATEURS RELATIONNELS ( < ou > ou < > ou = ou > = ou < =)
Ces opérateurs sont moins communs, à moins que vous n’ayez déjà programmé. Ces opérateurs représentent des conditions qui sont appliquées aux données. Ces conditions sont : égal à, plus grand que, moins grand que, plus grand ou égal à, plus petit ou égal à et non égal à. Le but de ces conditions est de comparer des valeurs. Le résultat d’une condition est une valeur 1 ou 0. Si elle est fausse, le résultat est 0. Si elle est vrai, le résultat est 1. Regarder les exemples suivants :
10 = 9 le résultat est 0 car 10 n’est pas égal à 9
10 = 10 le résutat est 1 car 10 est égal à 10
10 > 9 le résultat est 1 car 10 est supérieur à 9
100 > = 100 le résultat est 1 car 100 est est égal ou plus grand que 100
Ces opérateur peuvent être utilisé pour comparer des nombres entiers, réels, ou des chaînes Vous pouvez comparer deux chaînes pour savoir si elles sont les mêmes, ou savoir si une chaîne est plus grande que l’autre.
OPERATEURS LOGIQUES
Les opérateurs logiques représentent le derniers type d’opérateur. Bien qu’en général il en existe quatre sortes, DARK BASIC en utilise deux: AND et OR. Ils permettent à votre programme d’exécuter des opérations logiques sur vos données.
L’opérateur AND ( et) fonctionne avec toutes les valeurs entières, mais pour la démonstration, voici la règle utilisée par votre opérateur:
0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1
Regardez la logique de l’opérateur exprimée ci-dessus. Le résultat est 1 seulement si les deux données opérandes de l’opérateur AND sont 1. Tous les autre donne 0. Pour voir comment cette logique fonctione en réalité, regardez l’exemple suivant:
A=5
B=25
( A > 10) AND ( B > 20) quel sera le résultat?
Nous pouvons déterminer le résultat des opérations entre parenthèses. Nous pouvons constater que l’opérateur relationnel nous donne le résultat suivant :
( A > 10) donne 0, car 5 n’est pas plus grand que 10
( B > 20) donne 1, car 25 est plus grand que 20
Le résultat de ce calcul donne quelque chose comme cela:
( 0) AND ( 1) donne 0 car notre table dit 0 AND 1 = 0
La logique dit que la valeur n’est 1 que dans le cas où les deux opérandes sont 1. Que se passerait-il si nous faisions passez A à 15 ?
L’opérateur OR ( ou) fonctionne de manière similaire, mais il utilise la table qui suit. Si l’une ou l’autre des valeurs est 1, le résultat et
0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1
Arriver à écrire ces conditions dans des programmes en plus des autres opérations sera de plus en plus imporatant dès que vous écrirez des programmes complexes.
niek! niek!
en voila encore!