AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 [Logiciel] OniDev

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7, 8, 9  Suivant
AuteurMessage
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

MessageSujet: Re: [Logiciel] OniDev   Jeu 6 Déc 2012 - 19:39

Citation :
~250ms sur mon ordi (2.50GHz)

Oui mais quel processeur ?
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Jeu 6 Déc 2012 - 20:24

AMD Athlon 64 X2 Dual
Bref même les ordis de la fac on de meilleurs proc x)

_________________
                 
Revenir en haut Aller en bas
Morwenn
Très bonne participation
avatar

Messages : 151
Projet Actuel : Icare

MessageSujet: Re: [Logiciel] OniDev   Sam 8 Déc 2012 - 16:41

Après, les casts peuvent aussi être implicites, ça ne gêne généralement pas. Ou alors il faut faire un système pour les signatures de fonctions qui autorise les casts lors de l'appel à la fonction. Du genre, signature n'autorisant pas les casts :
Code:

string operator+(string a, string b);

Signature autorisant les casts sur tous les membres :
Code:

string operator+(string a, string b) cast;

Signature autorisant les casts sur le second membre :
Code:

string operator+(string a, cast string b);

Ce ne sont que des idées. Après, faudrait faire comme en C++ : regarder toutes les fonctions qui ont le même nom et décider d'une règle pour choisir la fonction la plus appropriée en fonction des paramètres donnés. Il y a des règles assez complexes, mais tu peux en faire des plus simples.

_________________

Dur Dabla, pour qui voudrait écouter un brin de metal celtique.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Dim 9 Déc 2012 - 15:33

Bah il y a cast implicite entre entiers et flottants déjà. Je ne pense pas ça intéressant de l'ajouter aux strings, ce ne serais que source d'erreurs chez les débutants.

_________________
                 
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Mar 19 Fév 2013 - 17:49

Hop, petite avancée de l’interpréteur:
mediafire.com ?lta0f34455w88lh

Désormais il gère les type int et float.
J'ajouterais le type string par la suite, et les fonctions.

Si vous trouvez des bugs merci de m'en faire part Smile


Code:
{
   int i;
   
   // Exemple de calcul de la racine de 2
   {
      float a = 2, r = a;
      
      for(i=0; i<10; i++)
      {
         r = 1.0/2 * (r + a/r);
      }
      print(r);
   }
   
   // factoriel de 5
   {
      int fac = 1;
      for(i=0; i<5; i++) {
         fac *= i;
      }
      print(fac);
   }
   
   // Suite de fibonnaci terme 10
   int a, b, c;
   a = 0;
   b = 1;
   for(i=0; i<10; i++) {
      c = a + b;
      a = b;
      b = c;
   }
   print(c);
   
   // Demonstrations boucles
   c = 0;
   while(c < 10) {
      c++;
   }
   
   for(;;) {
      c--;
      if(c <= 0) {
         break;
      }
   }
   
   a = 1;
   for(i=0; i<10; i++)
   {
      a *= -1;
      if(a == -1)
      {
         continue;
      }
      print(a);
   }
   
   // Portée des variables
   int v = 1;
   
   {
      int v = 2;
      print(v);
   }
   print(v);
}

Citation :
>od
1.414214
120
89
1
1
1
1
1
2
1

_________________
                 
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Jeu 21 Fév 2013 - 22:35

J'ai bien avancé ce soir, l’interpréteur gère désormais les affectations de variables dans les expressions.

http://host-a.net/u/onilink_/Interpreteur_odl_r4.7z

On vois pas une grande différence avec la précédente version, mais en interne y a eu beaucoup de changements, et surtout j'ai viré un oubli qui ralentissait énormément l'interprétation :b
Niveau vitesse d'interprétation, c'est a peu près 3x plus lent que GM6, mais vu que j'ai pas encore fait d'optimisations, il est au plus bas de sa forme mrgreen2

Si vous trouvez des bugs, merci de m'en faire part (again) :p

_________________
                 
Revenir en haut Aller en bas
alpha
Modérateur
avatar

Messages : 5030
Projet Actuel : Me taper la tête sur le mur.

MessageSujet: Re: [Logiciel] OniDev   Sam 23 Fév 2013 - 17:27

Franchement oni, c'est impressionnant a quel point t'es motivé, pour continuer a faire avancer ce projet après tant de temps.
Perso, au bout de quelques semaines j'ai déjà du mal a continuer. mrgreen2
Revenir en haut Aller en bas
http://www.perdu.com/
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Sam 23 Fév 2013 - 18:11

C'est sur que c'est pas facile, mais quand j'imagine les possibilités du truc une fois finis, je me dit que je n'ai pas le droit de faire marche arrière mrgreen2

Puis bon je l'ai peut être pas encore dit, mais je compte sortir une version 'pro' plusieurs années après la version que je prépare actuellement, donc je pourrais surement me faire un peu d'argent, et ça aussi c'est motivant :b
Et ne vous en faites pas, ça n’enlèveras quasiment pas de possibilités pour la version 'lite' qui seras gratuite et très complète.
Dans la pro j'ajouterais juste des moteurs long a dev genre physique/lumière/pantins (un système a la ubiart) qui augmenterons grandement les possibilités.

Après le seul truc qui me manque c'est le temps, donc forcément c'est un projet a long terme.
Chaque semaine j'avance petit a petit, d'ici le mois prochain je pense que j'aurais un langage interprété presque complet, donc ça va ça avance vite :b

En ce moment je bosse sur l'ajout du type string, les arrays, et les fonctions.
Après ça ce seras presque prêt, il suffiras de coder le système d'instance, et je pourrais commencer a faire l'ui, qui elle va être un gros boulot.


Et aussi, j'aurais besoins de testeurs pour mon interpréteur, donc si y en a qui ont du temps a perdre, et qui sont doués pour trouver des erreurs biscornues ... pensez a moi Razz

_________________
                 
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: [Logiciel] OniDev   Sam 23 Fév 2013 - 18:15

On va pouvoir coter le cbna en bourse mrgreen2
Mais pour l'instant, on peut 'que' faire des opérations simples ou on peut déjà utiliser certaines fonctions ?
En tous cas bon courage, j'ai hâte que tu nous sorte une version alpha avec un peu de gui Smile
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Sam 23 Fév 2013 - 18:22


Pour l'instant tu peut créer des variables int et float, les assigner/modifier.
Y a pas de fonctions mais y a un mot clé print pour afficher des valeurs.
Et j'ai implémenté les blocs d'instructions, if, else, while, for, break, continue.
De plus ma pile d’exécution est complète, le plus dur est fait.

_________________
                 
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Mer 27 Fév 2013 - 19:11

Grosse avancée aujourd'hui, on peut enfin utiliser des tableaux!
Une seule dimension pour l'instant, mais vu que j'ai réussi a trouver comment gérer le truc proprement implémenter les tableaux 2d ne seras pas un soucis.
Par contre, je ne pense pas qu'il seras possible de traiter les tableaux a n dimensions (mais ce n'est pas sur a 100%).

Bref petit exemple de code:
Code:
{
int size=16, i;
int[size] t;

for(i=0; i<size; i=i+1)
{
   t[i] = i*i;
}

for(i=0; i<size; i=i+1)
{
   print(t[i]);
   print("\n");
}
}

Qui affiche:
Citation :
1
4
9
16
25
36
49
64
81
100
121
144
169
196
225
256

J'ai aussi fait une belle optimisation qui traite les lignes comme des expressions.
C'est pour ça qu'il n'y a plus le i++ (pour l'instant, je le ré-implémente la).

On pourras donc coder vraiment comme en C like. Des trucs du genre serons possibles:
1+2+3; // ne sert a rien
if(T[i++]) { ... }
etc

guns

_________________
                 
Revenir en haut Aller en bas
alpha
Modérateur
avatar

Messages : 5030
Projet Actuel : Me taper la tête sur le mur.

MessageSujet: Re: [Logiciel] OniDev   Mer 27 Fév 2013 - 19:52

Je me demandais, tu compte implémenter des structures plus complexes comme les hashmap / les listes chaînées ou ça sera à l'utilisateur de les créer ? gnii
Revenir en haut Aller en bas
http://www.perdu.com/
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Mer 27 Fév 2013 - 20:41

Toutes les structures de base importantes telles que les listes, arbres, piles, queue, etc sont au programme.
Resteras juste a voir si j'arriverais a tout faire quoi :b

Puis après si vous avez des idées n'hésitez pas a les proposer, faut en profiter que je construit le langage, car une fois finis je bosserais sur tout autre chose (lib standard, ui...)


Mais déjà je compte faire un système plus 'objet' que GM pour les trucs de bases genre string, list & co.

Genre on pourra faire (encore une fois, si je m'en sort mrgreen2 ):
string s = "mille";
for(i=0; i<s.length(); i++) { print(s[i]); }

par exemple.

Je préparerais une liste des objets standards prévus par la suite :b

_________________
                 
Revenir en haut Aller en bas
alpha
Modérateur
avatar

Messages : 5030
Projet Actuel : Me taper la tête sur le mur.

MessageSujet: Re: [Logiciel] OniDev   Jeu 28 Fév 2013 - 14:43

Okay, il te reste beaucoup de boulot pour faire tout ça alors. gnii
Revenir en haut Aller en bas
http://www.perdu.com/
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Jeu 28 Fév 2013 - 17:04

Ahah oui, surtout que pour chaque 'objet' il faudra que je le code pour chaque type, donc en général j'ai triple boulot minimum xD (int float string)

Sinon vu que je suis en plein dans l'implémentation des arrays, je commençais a réfléchir a quelles méthodes leur ajouter.

Pour les arrays (1d, 2d) je pensais a ces fonctions:

=> Tableaux
int[] float[] string[]
-Méthodes:
operator[] : obtenir un element
at(pos) : obtenir un element
front() : obtenir le 1ier element
back() : obtenir le dernier element
fill(value) : remplir le tableau d'une valeur
sort() : met le tableau dans l'ordre
shuffle(float power) // melange un tableau (plus power est fort, plus il est mélangé)
randomize(start, end) // remplis de valeurs aléatoires entre start et end
noise(type, ..) : générer un bruit cohérent (par exemple un bruit de perlin)

_________________
                 
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: [Logiciel] OniDev   Jeu 28 Fév 2013 - 17:13

Tu peux aussi rajouter une fonction qui te retourne un des valeurs du tableau aléatoirement. Et aussi une fonction add qui ajoute une valeur à la fin ou à la position passée en paramètre (donc une fonction surchargée) et une fonction remove(int id) qui supprime la case id (et qui fait descendre les autres valeurs, histoire qu'il n'y ai pas de trou).
Sinon, des trucs de math : plus grande valeur, plus petite, moyenne, médiane,etc...

Et si vraiment t'as du temps, tu peux faire toutes les fonctions là : http://fr2.php.net/manual/fr/book.array.php
C'est le genre de truc facile à implémenter et qui fait gagner du temps au devs. happy1
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Jeu 28 Fév 2013 - 23:10

Ouai le coup de push_back/pop_back je comptait les mettre mais j'ai oublié de l'écrire ici :b
Faudrait aussi une fonction resize, histoire de pouvoir libérer de la mémoire.

Sinon ouai j'avoue que la doc php seras une bonne source d'idées, mais je ne compte par contre pas mettre mille fonctions car
1) ça alourdiras le runner
2) ce n'est pas forcément très utile/adapté pour le dev de jeux

Donc je pense qu'y en a pas mal que j'ajouterais vers la fin, après avoir codé des engines d'exemples.
Si des fonctions paraissent vraiment utiles je les rajouterais :b

Sinon pour les fonctions genre remove et insert c'est vraiment a éviter dans un tableau donc je ne les implémenterais probablement pas.
Par contre elles seront dans les listes (quand je les ferais mrgreen2 ).


Si vous avez des idées de trucs vraiment utile dans le dev de jv hésitez pas a les poster :b

_________________
                 
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: [Logiciel] OniDev   Ven 1 Mar 2013 - 9:20

Ouais bien sûr, dans un premier temps c'est vraiment pas indispensable, on est d'accord ; mais quand tu fera les tableaux associatif, là je pense que tu pourra mettre pas mal de fonctions, parce que l'avantage du php, c'est qu'avec toutes les fonctions qu'il y a, tu peux vraiment coder des systèmes réutilisables à fond en très peu de temps : par exemple pour mon forum, au niveau de l'éditeur de texte, en deux ligne tu pouvais rajouter une balise BBcode, j'utilisais des arrays associatif du genre : tab["gras"]="b", et j'utilisais à la fois l'index et la valeur : le bouton avait comme icone l'image gras.png, un tooltip "gras" et quand tu cliquais tu te retrouvais avec la balise [b]. Donc c'est le genre de trucs que j'adore programmer, et qui t'economise ensuite du temps et des arrays 2d. Et ca avec gm c'est impossible, déjà parce que les maps sont super chiantes a utiliser avec des noms à rallonge, et qu'il ia même pas 10 fonctions : en php si tu veux récupérer la clé quand t'a juste la valeur, t'utilise la fonction key(), mais avec gm ia pas moyen, la fonction existe pas, mais ia pas moyen de la coder sois-même, ia pas un minimum de fonctions...
Là c'est qu'un exemple, mais au niveau des structures un minimum évolué, le gml est beaucoup trop pauvre...
Donc toi faut que tu trouve le juste milieu, ni trop ni pas assez mrgreen2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Ven 1 Mar 2013 - 10:37

Oui je vois ce que tu veux dire x)
Non mais t'en fait pas, même si je compte ne pas mettre beaucoup de fonctions, je mettrait les briques élémentaires qui permettront de tout coder par dessus.
(et je mettrait aussi des fonctions qui peuvent être importantes mais lourdes a calculer en interprété, genre perlin noise pour les tableaux)

On pourras alors exporter une 'lib' et la réutiliser par la suite sans avoir avoir a retaper la moindre ligne de code Razz
Parce qu'en fait la j'ai peur que mon runner commence vraiment a peser, vu que pour l'instant je commence a peine a avoir la base, et il fait déjà presque 100ko xD


Sinon ce matin j'en ai marre de coder alors je vais bosser un peu sur l'ui pour souffler awesome
Je vous fait des super schémas et vous me direz ce que vous en pensez Very Happy

_________________
                 
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
avatar

Messages : 1279
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

MessageSujet: Re: [Logiciel] OniDev   Ven 1 Mar 2013 - 20:09

Citation :
mais quand j'imagine les possibilités du truc une fois finis, je me dit que je n'ai pas le droit de faire marche arrière

Puis bon je l'ai peut être pas encore dit, mais je compte sortir une version 'pro' plusieurs années après la version que je prépare actuellement, donc je pourrais surement me faire un peu d'argent, et ça aussi c'est motivant :b

Perso, si c'est compatible sur les bases Gnu/Linux je suis prêt à payer sans aucun problème.
En se moment je code sur "Tululoo" qui est très pauvre en fonctions mais c'est un des rares trucs qui tourne sous Linux.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Ven 1 Mar 2013 - 20:24

Qt => Windows/Linux/Mac

Windows et linux serons les premières plateformes supportés, donc tu trouveras ton bonheur mrgreen2

Faut juste que je réussisse a finir l’interpréteur, c'est le gros obstacle du moment ...

_________________
                 
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Jeu 21 Mar 2013 - 9:13

J'ai presque finis de définir complètement la syntaxe de l'odl.
Donc ce seras de la POO façon java, mais en plus simple.

Je bosse en parallèle sur un transcodeur
odl => C++
odl => Java
odl => javascript

Et pour l'instant ça a l'air de bien fonctionner. J'ajouterais peut être C# histoire de pouvoir exporter les jeux sur xbox live et compagnie.

J'ai donc structuré mon langage de façon a ce que le transcodage se fasse sans soucis.
Le seul qui pourrais poser soucis serais le javascript, mais d'après mes derniers tests ça devrais être viable.

Pour ce qui est de la syntaxe, un petit exemple vaux mieux qu'un long discours:
Code:
// le nom de l'objet est definis depuis le code, ici Player
// la classe Object est la classe qui permet d'instancier dans l'éditeur de room,
// utiliser les fonctions du moteur physique, etc.
// attributs dérivés: x et y
class Player : Object
{
   // Ici on place les attributs
   // attributs: (par défaut)
   
   // Et ici les methodes/events
   events:
   create() {}
   
   step()
   {
      if(keyPressed(vk_space))
      {
         nearestDot().destroy();
      }
   }
   
   draw() {}
   
   methods:
   Dot& nearestDot()
   {
      float dmin = -1;
      Dot& id;
      
      int i=0;
      for(; i<Dot::number(); i++)
      {
         Dot& ins = Dot::find(i);
         
         float d = pointDistance(x, y, ins.x, ins.y);
         if(d<dmin || d==-1)
         {
            id = ins;
            dmin = d;
         }
      }
      return id;
   }
}

// Un autre objet
class Dot : Object
{
}
// Encore un autre
class Star : Dot
{
}

Equivalent gml:
#press space event
Code:
// détruit l'instance la plus proche manuellement
dmin = -1
imin = -1
for(i=0; i<instance_number(Dot); i+=1)
{
    ins = instance_find(Dot, i)
   
    d = point_distance(x, y, ins.x, ins.y)
    if(d < dmin || imin == -1) {
        imin = ins
        dmin = d
    }
}

if(imin) {
    with(imin) instance_destroy()
}

Si vous voyez des trucs a redire sur la syntaxe n'hésitez pas Wink


Pour ce qui est de l'instanciation, il y aura deux type: dynamique et statique.

Par exemple creer une instance statique:
int a, b;
MaStructure blabla(parametres);

Dynamique:
MonObjet& ins = MonObjet::create(params);

et pour détruire du dynamique:
ins.destroy();

_________________
                 
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

MessageSujet: Re: [Logiciel] OniDev   Jeu 21 Mar 2013 - 20:23

Je sais pas mais pour les class static je pense qu'il serait plus judicieux qu'il y est le mot clef static devant.
Par exemple

Code:
static class Mouse

Après ça serait bien qu'il y est public, private, protected, etc. Mais je pense qu'ils sont au programme ?
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: [Logiciel] OniDev   Jeu 21 Mar 2013 - 20:53

Cool ! gnii
Par contre j'ai pas capté le coup du :: avant certaines fonctions ?? C'est l'équivalent de obj.méthode ?

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Jeu 21 Mar 2013 - 21:43

jbg77 a écrit:
Je sais pas mais pour les class static je pense qu'il serait plus judicieux qu'il y est le mot clef static devant.
Par exemple

Code:
static class Mouse

Après ça serait bien qu'il y est public, private, protected, etc. Mais je pense qu'ils sont au programme ?

Non rien de tout ça. Le but est de faire un langage plus puissant que le GML mais essayer de garder quelque chose de simple dans sa globalité.
De plus il serais presque impossible par la suite de transcoder ça en js donc ça fait une raison de plus de rester dans du simple :b


Térence68>
C'est une méthode statique, donc une méthode de classe/objet, et non pas une méthode d'instance Wink

_________________
                 
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Dim 21 Avr 2013 - 14:40

Je viens au nouvelles pour ceux que ça intéresse :b
En ce moment je bosse surtout sur le coté théorique, je pense avoir finis de définir la syntaxe finale de l'odl.
J'ai aussi commencé a écrire un peu la doc, voila ce que ça donne pour la classe mère Object: http://www.lecbna.org/~onilink/onidev/Object.htm

Pour ce qui est de vous montrer la syntaxe du langage, le plus simple c'est de montrer une comparaison GML/ODL.
Voici ce que ça donne:

Objet player d'un moteur de plateforme simple:
GML
Code:
Create Event:
execute code:

g = 0.2 // soit g la gravité
vy = 0 // vitesse verticale
vy_max = 6 // vitesse de chute maximale
vit = 2 // vitesse de déplacement

 Step Event:
execute code:

vy += g
vy = min(vy, vy_max)

//mise en place de la gravité
repeat( abs(vy) )
{
    // Si je ne me situe pas sur le sol (ou sous un plafond si vy négatif)
    if( !place_meeting(x, y+sign(vy), parWall) )
        y += sign(vy) // mon objet tombe (ou monte, en fonction du signe de vy)
    else // Sinon je met la vitesse verticale a zero
        vy = 0
}
//Saut : si je presse espace et que je me situe au sol
if(keyboard_check_pressed(vk_space) && place_meeting(x, y+1, parWall))
    vy = -5 // Je met vy en négatif
//Déplacement a gauche
if(keyboard_check(vk_left))
{
    repeat(vit) {
        if( !place_meeting(x-1, y, parWall) )
            x -= 1
    }
}
//Déplacement a droite
if(keyboard_check(vk_right))
{
    repeat(vit) {
        if( !place_meeting(x+1, y, parWall) )
            x += 1
    }
}

ODL
Code:
class Object0 : Object
{
   float g = 0.2;
   float vy = 0; // vitesse verticale
   float vy_max = 6; // vitesse de chute maximale
   float vit = 2;

   void step()
   {
      vy += g;
      vy = min(vy, vy_max);
      
      repeat( abs(vy) )
      {
         if( !placeMeeting(x, y+sign(vy), ParWall::object_index) )
            y += sign(vy);
         else
            vy = 0;
      }
      
      if(keyPress(vk_space) && placeMeeting(x, y+1, ParWall::object_index))
         vy = -5;
      
      if(keyCheck(vk_left))
      {
         repeat(vit) {
            if( !placeMeeting(x-1, y, ParWall::object_index) )
               x--;
         }
      }
      if(keyCheck(vk_right))
      {
         repeat(vit) {
            if( !placeMeeting(x+1, y, ParWall::object_index) )
               x++;
         }
      }
      
   }

   void draw() {
      Object::draw();
   }
}

Surface:
GML
Code:
Create Event:
execute code:

surface_draw = surface_create(320, 240)
surface_set_target(surface_draw)
draw_clear_alpha(c_white,0)
surface_reset_target()

current_x = mouse_x
current_y = mouse_y

 Step Event:
execute code:

surface_set_target(surface_draw)
if(mouse_check_button(mb_left))
  draw_line(current_x, current_y, mouse_x, mouse_y)
current_x = mouse_x
current_y = mouse_y
surface_reset_target()


Other Event: Game End:
execute code:

surface_free(surface_draw)

Draw Event:
execute code:

draw_surface(surface_draw, 0, 0)

ODL (version statique):
Code:
class Object0 : Object
{
    Surface surf(320,240);
    int cx, cy;

   Object0()
   {
        surf.setTarget();
        drawClearAlpha(c_white, 0);
        drawResetTarget();

      cx = mouse_x;
      cy = mouse_y;
   }

   void step()
   {
        surf.setTarget();
        if(mouseCheck(mb_left)) {
            drawLine(cx, cy, mouse_x, mouse_y);
        }
        cx = mouse_x;
        cy = mouse_y;
        drawResetTarget();
   }
   
   void draw() {
      surf.draw(0,0);
   }
}

ODL (version dynamique)
Code:
class Object0 : Object
{
    Surface& surf;
    int cx, cy;

   Object0()
   {
        surf = new Surface(320, 240);
       
        surf.setTarget();
        drawClearAlpha(c_white, 0);
        drawResetTarget();

      cx = mouse_x;
      cy = mouse_y;
   }

   void step()
   {
        surf.setTarget();
        if(mouseCheck(mb_left)) {
            drawLine(cx, cy, mouse_x, mouse_y);
        }
        cx = mouse_x;
        cy = mouse_y;
        drawResetTarget();
   }

    ~Object0 () {
        destroy surf;
    }
   
   void draw() {
      surf.draw(0,0);
   }
}

Primitives:
GML
Code:
// draw event
rayon1 = 64
rayon2 = 80

draw_primitive_begin(pr_trianglestrip)

for(i=0 ; i<=360 ; i+=5)
{
    draw_vertex(320 + lengthdir_x(rayon1, i), 240 + lengthdir_y(rayon1, i))
    draw_vertex(320 + lengthdir_x(rayon2, i), 240 + lengthdir_y(rayon2, i))
}

draw_primitive_end()

ODL
Code:
class Object0 : Object
{
    int r1 = 64, r2 = 80;
   
   void draw()
    {
        beginShape(TRIANGLESTRIP);
        int i;
        for(i=0; i<=360; i+=5) {
            vertexDir(320, 240, r1, i);
            vertexDir(320, 240, r2, i);
        }
        endShape();
   }
}

Démo odl avec des trucs de base:
Code:
class Obj : ObjectPhysics, ObjectDraw
{
   // type attribut = valeurConstante;
   // type attribut(parametresConstants);
   
   int a;          // Declaration d'attribut
   int b = 5;      // Assigner une constante
   int c = b;      // Assigner un attribut définis
   float d = c/2.0; // Opérations constantes
   int xx, yy, zz;  // Déclarations multiples
   Point pt(c, c);  // Déclaration objet (statique)
   Point& p = pt;  // Déclaration référence
   
   // constructeur
   Obj(int px, int py, int zz)
   {
      xx=px; yy=py; this.zz=zz;
      
      // x et y mis a jour avant l'appel du constructeur
      // sert pour le cas d'une instanciation dans l'éditeur de carte
      if(placeMeeting(x, y, Spike::object_index))
      {
         // détruit l'instante si elle a été allouée dynamiquement
         // <=> instanceDestroy();
         destroy this;
      }
      
      // instanciation dynamique
      pt = create Point(x, y);
   }
   // destructeur
   ~Obj() {
      destroy pt;
   }

   void step()
   {
      // fait appel a la methode step du parent ObjectPhysics
      ObjectPhysics::step();
   }
   
   void draw()
   {
      // fait appel a la methode draw du parent ObjectDraw
      ObjectDraw::draw();
   }
}

_________________
                 
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: [Logiciel] OniDev   Dim 21 Avr 2013 - 16:48

Ben c'est cool tout ca :p
Si t'en es déjà aux surfaces et tout le bordel, c'est que ca avance bien !
C'est moi ou ta doc est inspirée de celle de Qt ? Yum! ( et ia des fautes d'orthographe, j'ai lu vraiment que le premier paragraphe : le moteur exécutera (pas de S), les coordonnées x et y seront mises (les coordonnées) à jour mrgreen2
Avec Oni, tout doit être parfait guns

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
avatar

Messages : 1279
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

MessageSujet: Re: [Logiciel] OniDev   Dim 21 Avr 2013 - 18:07

Génial!
Vraiment hâte d'avoir tout ça sous le coude histoire de de faire beuguer! mouhahahaha!
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Logiciel] OniDev   Dim 21 Avr 2013 - 18:18

Héhé, dès qu'y auras de quoi tester je t'enverrais ça Caly mrgreen2

Térence68>
Ouai mais juste un peu hein Yum!
Pour les fautes j'ai pas encore relu cay normal :b

Rien a redire sur la syntaxe sinon?

_________________
                 
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

MessageSujet: Re: [Logiciel] OniDev   Dim 21 Avr 2013 - 19:38

C'est vraiment excellent, j'ai hâte d'essayer ça gnii
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: [Logiciel] OniDev   

Revenir en haut Aller en bas
 
[Logiciel] OniDev
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 8 sur 9Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7, 8, 9  Suivant
 Sujets similaires
-
» Capture d'écran - logiciel freeware Pickpick
» Des logiciel en Breton.
» Paint.NET un logiciel d'images GRATUIT mieux que des logiciels payants
» logiciel impot expert...petites questions
» Filiatus; un logiciel à decouvrir

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Informations :: Projets-
Sauter vers: