| | [Logiciel] OniDev | |
|
+29SPLN Térence Sekigo Le Magnifique zebdal master47 Mobi cbna spam bot blendman Mass louckas daminetreg Craki Linky439 D-z Termite Playboy -Coco- Qual l0lmanPH Oculus Chlorodatafile arthuro Rem_101 marty M@d_Doc Morwenn DeinDall rasengan onilink_ 33 participants | |
Auteur | Message |
---|
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: [Logiciel] OniDev Jeu 6 Déc 2012 - 20:39 | |
| - Citation :
- ~250ms sur mon ordi (2.50GHz)
Oui mais quel processeur ? |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Jeu 6 Déc 2012 - 21:24 | |
| AMD Athlon 64 X2 Dual Bref même les ordis de la fac on de meilleurs proc x) |
| | | Morwenn Très bonne participation
Messages : 151 Projet Actuel : Icare
| Sujet: Re: [Logiciel] OniDev Sam 8 Déc 2012 - 17: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. |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Dim 9 Déc 2012 - 16: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.
|
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Mar 19 Fév 2013 - 18:49 | |
| Hop, petite avancée de l’interpréteur: http://www.mediafire.com/?lta0f34455w88lhDé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 - 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 |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Jeu 21 Fév 2013 - 23: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.7zOn 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 Si vous trouvez des bugs, merci de m'en faire part (again) :p |
| | | alpha Modérateur
Messages : 5030 Projet Actuel : Me taper la tête sur le mur.
| Sujet: Re: [Logiciel] OniDev Sam 23 Fév 2013 - 18: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. |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Sam 23 Fév 2013 - 19: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 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 |
| | | Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [Logiciel] OniDev Sam 23 Fév 2013 - 19:15 | |
| On va pouvoir coter le cbna en bourse 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 |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Sam 23 Fév 2013 - 19: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.
|
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Mer 27 Fév 2013 - 20: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 |
| | | alpha Modérateur
Messages : 5030 Projet Actuel : Me taper la tête sur le mur.
| Sujet: Re: [Logiciel] OniDev Mer 27 Fév 2013 - 20: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 ? |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Mer 27 Fév 2013 - 21: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 ): 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 |
| | | alpha Modérateur
Messages : 5030 Projet Actuel : Me taper la tête sur le mur.
| Sujet: Re: [Logiciel] OniDev Jeu 28 Fév 2013 - 15:43 | |
| Okay, il te reste beaucoup de boulot pour faire tout ça alors. |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Jeu 28 Fév 2013 - 18: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)
|
| | | Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [Logiciel] OniDev Jeu 28 Fév 2013 - 18: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.phpC'est le genre de truc facile à implémenter et qui fait gagner du temps au devs. |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Ven 1 Mar 2013 - 0: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 ). Si vous avez des idées de trucs vraiment utile dans le dev de jv hésitez pas a les poster :b |
| | | Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [Logiciel] OniDev Ven 1 Mar 2013 - 10: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 |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Ven 1 Mar 2013 - 11: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 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 Je vous fait des super schémas et vous me direz ce que vous en pensez |
| | | Caly Utilisateur confirmé: Rang ****
Messages : 1285 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.
| Sujet: Re: [Logiciel] OniDev Ven 1 Mar 2013 - 21: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. |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Ven 1 Mar 2013 - 21:24 | |
| Qt => Windows/Linux/Mac Windows et linux serons les premières plateformes supportés, donc tu trouveras ton bonheur Faut juste que je réussisse a finir l’interpréteur, c'est le gros obstacle du moment ... |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Jeu 21 Mar 2013 - 10: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 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(); |
| | | Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: [Logiciel] OniDev Jeu 21 Mar 2013 - 21: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 ? |
| | | Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [Logiciel] OniDev Jeu 21 Mar 2013 - 21:53 | |
| Cool ! 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.
|
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Jeu 21 Mar 2013 - 22: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 |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Dim 21 Avr 2013 - 16: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.htmPour 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(); } } |
| | | Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [Logiciel] OniDev Dim 21 Avr 2013 - 18: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 ? ( 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 mis es (les coordonnées) à jour Avec Oni, tout doit être parfait _________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
|
| | | Caly Utilisateur confirmé: Rang ****
Messages : 1285 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.
| Sujet: Re: [Logiciel] OniDev Dim 21 Avr 2013 - 20:07 | |
| Génial! Vraiment hâte d'avoir tout ça sous le coude histoire de de faire beuguer! mouhahahaha! |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Logiciel] OniDev Dim 21 Avr 2013 - 20:18 | |
| Héhé, dès qu'y auras de quoi tester je t'enverrais ça Caly Térence68> Ouai mais juste un peu hein Pour les fautes j'ai pas encore relu cay normal :b Rien a redire sur la syntaxe sinon? |
| | | Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: [Logiciel] OniDev Dim 21 Avr 2013 - 21:38 | |
| C'est vraiment excellent, j'ai hâte d'essayer ça |
| | | Contenu sponsorisé
| Sujet: Re: [Logiciel] OniDev | |
| |
| | | | [Logiciel] OniDev | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |