Objets sur Script: Méthode des listes: Partie-1: La genèse, le Périple et le sandwich à la bite

Voir le sujet précédent Voir le sujet suivant Aller en bas

Tutoriel Objets sur Script: Méthode des listes: Partie-1: La genèse, le Périple et le sandwich à la bite

Message par UltraBill le Jeu 30 Oct - 0:53

Bonjour Bonsoir , peu importe, Voici un petit (euphémisme) tutoriel sur comment créer des objets sur script.
En effet, vous avez été habituer à la programmation orientée objet, à GM, ou alors vous voulez juste savoir comment déplacer un bonhomme, et du coup vous vous demandez surement comment gérer des objets avec script. Nous allons utilisés une première méthode avec les listes (on utiliseras les objets officiels plus tard).

PRÉREQUIS
- Savoir utiliser le for (c'est presque le plus important)[Lien]
- Savoir comment utiliser les listes (narmol)
- Savoir utiliser les fichiers externe (les .script)
- Savoir comment utiliser SCRIPT (encore plus narmol)
- Avoir de la musique (ouais parce que au bout d'un moment c'est long chiant et répétitif , alors des fois faut passer le temps ...)

ATENTION: N'utiliser cette méthode que si c'est un objet qui est prévus pour être en nombre sur l'écran. Bah ouai parce que si tu fait des liste juste pour stocker une variable... bah autant faire avec des variable et en 1 seul fichier.

1- Le Début: la créations des listes
Parce qu'il faut bien un début à notre périple, on vas créer une liste... ouais c'est super évident, mais  laisse moi faire. Bon parce que on as besoin d'exemple concret, on veut un petit bonhomme (je ne fournie aucun sprite) qui se déplace sur l'écran. Simple me dirait vous... pas faux.
Bon, on vas commencer par créer les listes:

Code:
if event_start()
{
  Personage_x = ds_list_create();
  Personage_y = ds_list_create();
}
Mais pourquoi on fait une liste pour les X, et une autre pour les Y?
Parce que ma méthode est à chier, ça te vas? En effet c'est un des problème de cette méthode, c'est que du coup il faut faire une liste pour chaque "variable" propre à l'objet (et un autre c'est que ça prend vachement de fichiers .script comme on va le voir). Et comme il y en auras plusieurs, bah autant faire une listes pour stocker plein de variable
Morgan m'informe dans l'oreille qu'on peut se démerder à faire des listes de listes, il n'a qu'a allez se faire voir avec son truc hyper complexe, non mais!
BREF, on en était où? Ah oui:

Code:
if event_start()
{
  Personage_x = ds_list_create();
  Personage_y = ds_list_create();
}

Donc nous avons créer nos listes , chouette ! Maintenant on vas les détruire.

WHAAAT?
Ouais t'as bien entendus, on vas les détruire!

Code:
if event_end()
{
  ds_list_destroy(Personage_x);
  ds_list_destroy(Personage_y);
}

En effet, on a besoin de les détruire, pour libérer l'espace sur la RAM et éviter de se retrouver avec des débordements de mémoire. Et puis, vaut mieux le faire dès le débuts sinon on oublie rapidement de le faire après (c'est l'expérience (hem hem) qui parle).

2- La Genèse: la créations du personnage
Bah ouais parce que le pauvre il vas pas se créer tout seul (de mémoire hein), donc faut bien le créer non? Bon c'est pas compliquer de toute façon. En premier lieu, on créé un nouveau fichier .script (vous l'appeler comme vous voulez,  je serais pas derrière vous toute ma vie (parce que ça me ferait chier pour être franc)), ensuite on vas faire en sorte de rajouter des valeurs de base, qu'on modifiera plus tard (bah le but c'est pas de le faire avancer?)
et donc c'est l'heure du petit code bien sale:

Code:
// a mettre dans un .script à part
ds_list_add(personnage_x,argument0);
ds_list_add(personnage_y,argument1);

Retournons maintenant dans notre program.script et rajoutons la ligne "function" pour appeler notre nouveau fichier.
Ce qui donne :

Code:
if event_start()
{
  personnage_x = ds_list_create();
  personnage_y = ds_list_create();
}

if keyboard_check_pressed(vk_enter)
{
  function("nom_de_votre_fichier.script",424,242);
}

if event_end()
{
  ds_list_destroy(personnage_x);
  ds_list_destroy(personnage_y);
}

Et voilà nous avons un code qui permet de créer les objets! ... mais on peut toujours pas les utiliser ce qui est en soit vachement bête.On vas alors régler ce problème maintenant.

3Le périple: Le déplacement du personnage.
Bien, on peut créer le personnage, mais on ne peut toujours pas l'afficher (c'est triste :'( ). Nous allons remédié à ce petit problème, mais d'abords, c'est l'heure des explications !

Mais pourquoi ?
Parce que Taggle. Je vais vous expliquez pourquoi on as créer plusieurs listes, et comment va fonctionner le code qu'on vas mettre pour les déplacements. On vas y allez par un tableau:


ID des objets (i)1234
personnage_x 424 234 567 135
personnage_y 242 432 764 246

Vous voyez la colonne rouge (ne parler pas derrière votre écran, je sait que vous le voyez) et bien elle correspond à notre objet. En effet, notre objets est bel est bien en plusieurs listes: on stocke la positions X de l'objet dans la liste pour les X et la position Y dans la listes des Y (là c'est le moment de vous dire que je vous prends pour des imbéciles). Mais la chose qu'on en commun les valeurs qu'on vient de placer dans la listes, ce sont les places des valeurs dans celles-ci, comme on l'a vue dans le tableau. .Maintenant le but de cette partie, c'est de vous apprendre à "relier" ces listes afin d'utiliser l'objet, et ça grâce à la magie du for
Morgan me dit encore à l'oreille qu'on peut se débrouiller avec un while, il peut retourner forniquer devant son écran
Bon, retournons coder, et créons un nouveau fichier et appeler comme vous le voulez encore.
Je préfère personnellement appeler les fichiers comme tel: createMachin pour le premier, drawMachin pour le 2ème et destroyMachin pour le 3ème qu'on verras plus tard encore
et donc nous allons nous occuper enfin de notre for. En premier lieu on initialise la variable(normale), on cherche ensuite pour tout les objets existant(c'est moi compliquer que ça n'y parait) et enfin on incrémente:

Code:
for(i=0;i<ds_list_size(personnage_x);i+=1)
{
// le code du personnage
}


Voilà, je vous l'avez dit que se serait plus simple. Étant donner que les deux liste qu'on as partagent le même nombre de valeurs dans la listes, autant vérifié pour une seule liste simplement. Quand au 

Code:
i<ds_list_size(personnage_x)
c'est pour chercher tous les objets "personnage" disponible. Enfin le "i" est l'identifiant de l'objet que l'on traite, et il défile grâce au for pour exécuter chaque objets.
Bien ! Maintenant on vas passer au choses sérieuses: l'affichage.Et pour faire l'affichage (ce seras un carré bien dégueulasse), il faut prendre les valeurs X et Y des listes qu'on a stocker plus tôt.Et pour se faire ,la petite ligne magique ,et vous allez en bouffer de cette fonction avec cette méthode,c'est celle là:


Code:
for(i=0;i<ds_list_size(personnage_x)i+=1)
{
  x_temp = ds_list_find_value(personnage_x,i)
}

Pourquoi x_temp?
Parce que nous avons besoin de faire une variable temporaire pour stocker provisoirement les variables en cours de traitement. Pour faire simple, cette variable est comme une barrette RAM, le processeur (le programme) demande de traiter une variable(donc la valeur de la liste concernée), il la stocke dans la RAM (x_temp), qui la traite et la renvois au processeur. Bah là c'est pareil.Faisons ensuite en sorte que l'objet soit afficher avec un rectangle bien dégueulasse. donc on récupère la valeur Y et on dessine un carré basique.

Code:
for(i=0;i<ds_list_size(personnage_x)i+=1)
{
  x_temp = ds_list_find_value(personnage_x,i);
  y_temp = ds_list_find_value(personnage_y,i);
  draw_rectangle(x_temp-3;y_temp-3,x_temp+3,y_temp+3,0);
}

Et enfin on déplace ce magnifique carré

Code:
for(i=0;i<ds_list_size(personnage_x);i+=1)
{
  x_temp = ds_list_find_value(personnage_x,i);
  y_temp = ds_list_find_value(personnage_y,i);
  x_temp += 5;
  y_temp+= 6;
  draw_rectangle(x_temp-3;y_temp-3,x_temp+3,y_temp+3,0);
}
Et.... MAGIE ! (Joke) nan en fait ça marche pas, pourquoi donc? Et bien reprenons notre exemple de la barrette RAM, il prend les données que le processeur lui envois, les traites, et les RENVOIS! La on prends les valeurs, et on les traites, mais on les renvois pas ... pas de soucis alors !on a juste à régler ça avec la 2ème ligne que vous allez bouffer en masse avec cette méthode:

Code:
for(i=0;i<ds_list_size(personnage_x);i+=1)
{
  x_temp = ds_list_find_value(personnage_x,i);
  y_temp = ds_list_find_value(personnage_y,i);
  x_temp += 5;
  y_temp+= 6;
  draw_rectangle(x_temp-3;y_temp-3,x_temp+3,y_temp+3,0);
  ds_list_replace(personnage_x,i,x_temp);
  ds_list_replace(personnage_y,i,y_temp);
}

Et donc là ça fonctionne, seulement si vous oubliez pas de mettre la fonction qu'on vient de créer dans le code principale.

Code:
if event_start()
{
  personnage_x = ds_list_create();
  personnage_y = ds_list_create();
}

if keyboard_check_pressed(vk_enter)
{
  function("nom_de_votre_fichier.script",424,242);
}
function("nom_de_votre_deuxième_fichier_pour_afficher_l'objet.script");
if event_end()
{
  ds_list_destroy(personnage_x);
  ds_list_destroy(personnage_y);
}
avatar
UltraBill
Expert de Script (2D, IA et DLL)
Expert de Script (2D, IA et DLL)

Messages : 45
Date d'inscription : 29/06/2013
Age : 19
Localisation : pas loin de Fort Boyard

Projet(s)
Niveau de connaissances dans Script: Professionnel
Spécialité: Programmeur

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Tutoriel Re: Objets sur Script: Méthode des listes: Partie-1: La genèse, le Périple et le sandwich à la bite

Message par Moutarde le Mar 11 Nov - 19:01

Wow balaise le tuto o_O
En plus je le trouve très bien expliqué !

________________________________________________________________________________________
Un problème, consultez le forum Aide/Question ou contactez-moi sur Skype

avatar
Moutarde
Expert de Script (2D, Multi, Web, DLL)
Expert de Script (2D, Multi, Web, DLL)

Messages : 105
Date d'inscription : 02/06/2013
Localisation : Toulouse

Projet(s)
Niveau de connaissances dans Script: Professionnel
Spécialité: Programmeur

Voir le profil de l'utilisateur http://moutarde.fr.nf/

Revenir en haut Aller en bas

Tutoriel Re: Objets sur Script: Méthode des listes: Partie-1: La genèse, le Périple et le sandwich à la bite

Message par UltraBill le Jeu 13 Nov - 21:00

Merci, et c'est pas fini XD
avatar
UltraBill
Expert de Script (2D, IA et DLL)
Expert de Script (2D, IA et DLL)

Messages : 45
Date d'inscription : 29/06/2013
Age : 19
Localisation : pas loin de Fort Boyard

Projet(s)
Niveau de connaissances dans Script: Professionnel
Spécialité: Programmeur

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Tutoriel Re: Objets sur Script: Méthode des listes: Partie-1: La genèse, le Périple et le sandwich à la bite

Message par SiiKOZ le Ven 21 Nov - 18:56

Plus que les interractions avec d'autre objets ^^ !
avatar
SiiKOZ
Expert de Script (2D)
Expert de Script (2D)

Messages : 22
Date d'inscription : 12/02/2013
Localisation : Entre le clavier et le siege.

Projet(s)
Niveau de connaissances dans Script: Professionnel
Spécialité: Programmeur

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Tutoriel Re: Objets sur Script: Méthode des listes: Partie-1: La genèse, le Périple et le sandwich à la bite

Message par PierreM46 le Dim 14 Déc - 14:22

Yeah super le tuto sa me permets d'avancé dans mes projet !

________________________________________________________________________________________
La programmation est source d'inspiration !
Skype: paPierreM46
avatar
PierreM46
Expert de Script (3D)
Expert de Script (3D)

Messages : 69
Date d'inscription : 16/02/2013
Age : 18
Localisation : Cahors

Projet(s)
Niveau de connaissances dans Script: Confirmé
Spécialité: Programmeur

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Tutoriel Re: Objets sur Script: Méthode des listes: Partie-1: La genèse, le Périple et le sandwich à la bite

Message par UltraBill le Mar 16 Déc - 22:38

Merci . La 2eme partie arrive prochainement avec la destruction et l'interaction inter-objet. ça va être dur lourd Smile
Au passage je le ferait dans un autre topic parce que celui là va être surcharger ,et donc illisible XD

avatar
UltraBill
Expert de Script (2D, IA et DLL)
Expert de Script (2D, IA et DLL)

Messages : 45
Date d'inscription : 29/06/2013
Age : 19
Localisation : pas loin de Fort Boyard

Projet(s)
Niveau de connaissances dans Script: Professionnel
Spécialité: Programmeur

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Tutoriel Re: Objets sur Script: Méthode des listes: Partie-1: La genèse, le Périple et le sandwich à la bite

Message par Morgan9195 le Mar 16 Déc - 23:38

J'ai hâte Smile

________________________________________________________________________________________
avatar
Morgan9195
Fondateur
Fondateur

Messages : 168
Date d'inscription : 11/02/2013
Age : 22
Localisation : Entre le fauteuil et le clavier

Projet(s)
Niveau de connaissances dans Script: Professionnel
Spécialité: Programmeur

Voir le profil de l'utilisateur http://morgan9195.olympe.in/devblog/

Revenir en haut Aller en bas

Tutoriel Re: Objets sur Script: Méthode des listes: Partie-1: La genèse, le Périple et le sandwich à la bite

Message par Moutarde le Mer 17 Déc - 7:57

Morgan9195 a écrit:J'ai hâte Smile

Moi aussi ! Smile

________________________________________________________________________________________
Un problème, consultez le forum Aide/Question ou contactez-moi sur Skype

avatar
Moutarde
Expert de Script (2D, Multi, Web, DLL)
Expert de Script (2D, Multi, Web, DLL)

Messages : 105
Date d'inscription : 02/06/2013
Localisation : Toulouse

Projet(s)
Niveau de connaissances dans Script: Professionnel
Spécialité: Programmeur

Voir le profil de l'utilisateur http://moutarde.fr.nf/

Revenir en haut Aller en bas

Tutoriel Re: Objets sur Script: Méthode des listes: Partie-1: La genèse, le Périple et le sandwich à la bite

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum