AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Un petit script utile pour faire de beaux murs....

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Un petit script utile pour faire de beaux murs....   Mar 10 Juil 2012 - 10:24

Voici un script qui permet de faire des jointures entre le murs... ouh
Je sais que ce n'est pas très clair donc je m'explique : Si 3 murs sont cote-à-cote, celui de gauche n'aura pas de bordure à droite, celui de milieu n'en aura ni à gauche ni à droite, et celui de droite n'aura pas de bordure à gauche.



Tous les murs ne sont qu'un seul objet et je n'utilise pas de tileset. J'ai juste à placer mes objets murs dans la room et le script fait le reste !

Voici donc le script :
Code:
image_speed=0

if collision_point(x,y+32,mur,1,1)//bas
    {
    if collision_point(x,y-32,mur,1,1)//bas+haut
        {
        if collision_point(x+32,y,mur,1,1)//bas+haut+droite
            {
            if collision_point(x-32,y,mur,1,1)//bas+haut+droite+gauche
                {
                image_index=13
                }
            else//bas+haut+droite
                {
                image_index=9
                }
            }
        else//bas+haut
            {
            if collision_point(x-32,y,mur,1,1)//bas+haut+gauche
                {
                image_index=11
                }
            else//bas+haut
                {
                image_index=14
                }
            }
        }
    else//bas
        {
        if collision_point(x+32,y,mur,1,1)//bas+droite
            {
            if collision_point(x-32,y,mur,1,1)//bas+droite+gauche
                {
                image_index=10
                }
            else//bas+droite
                {
                image_index=6
                }
            }
        else//bas
            {
            if collision_point(x-32,y,mur,1,1)//bas+gauche
                {
                image_index=7
                }
            else//bas
                {
                image_index=0
                }
            }
        }
    }
else
    {
    if collision_point(x,y-32,mur,1,1)//haut
        {
        if collision_point(x+32,y,mur,1,1)//haut+droite
            {
            if collision_point(x-32,y,mur,1,1)//haut+droite+gauche
                {
                image_index=8
                }
            else//haut+droite
                {
                image_index=5
                }
            }
        else//haut
            {
            if collision_point(x-32,y,mur,1,1)//haut+gauche
                {
                image_index=4
                }
            else//haut
                {
                image_index=2
                }
            }
        }
    else
        {
        if collision_point(x+32,y,mur,1,1)//droite
            {
            if collision_point(x-32,y,mur,1,1)//droite+gauche
                {
                image_index=15
                }
            else//droite
                {
                image_index=3
                }
            }
        else
            {
            if collision_point(x-32,y,mur,1,1)//gauche
                {
                image_index=1
                }
            else//le mur est seul
                {
                image_index=12
                }
            }
        }
    }

Les sous-images du sprite doivent être dans cet ordre (dans le même ordre que le tileset de pierres fourni avec GM) :


Voilà, ca ma demandé une bonne demi-haure de réflexion, donc je vous en fait profiter gnii
En espérant que ce script vous soit utile ;et n'hésitez pas à me poser des questions si je n'est pas été assez clair.
Revenir en haut Aller en bas
gaeris
Pas mal


Messages : 35
Localisation : à [Nom de village imprononçable]

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mar 10 Juil 2012 - 11:05

Beau travail clinoeuil
je retient ce code, il pourra m'être utile.

tu aurais pu utiliser draw_line pour les bordures, sauf si on veut utiliser des textures plus détaillées.
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mar 10 Juil 2012 - 11:17

Justement, le but est de pouvoir utiliser les sprites, je ne vais pas laisser ces murs blancs pour mon jeu....
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
avatar

Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mar 10 Juil 2012 - 19:01

c'est pas mal dans le cas les mur c'est des objets, mais dans ce cas la, j'aurais pas utiliser des objets mais plutot un tableau.
Remarque, c'est peut etre plus gerable pour les collisions
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mar 10 Juil 2012 - 20:22

Je ne sais pas utiliser les tableaux en 2 dimensions et les tableaux étant relativements petits dans GM, je préfère les garder pour quand ils sont vraiment indispensables.
De plus, mes murs étant destructibles, il m'est plus simple de travailler avec des objets.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

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

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mar 10 Juil 2012 - 20:40

Bah petits, petits .... sont quand même grands, a mon avis tu ferras jamais une room qui prend un tableau complet x)
Puis c'est pas par pixels hein, c'est par carré. De plus ça permet de faire des collisions AABB rapidement, et aussi tu peut bien sur détruire et créer en temps réel.
Et si tu trouve des limitation, reste les ds_grids Smile
Mais je suis d'accord, c'est un peu plus compliqué, surtout sous GM (vu que ce seras un tableau qui prend 8 octets par case...).

La casi totalité des jeux 2d existants utilisent des tableau pour leur 'room'.
Encore quelque chose qui montre que GM est complètement a l'ouest.

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

Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mar 10 Juil 2012 - 23:49

De plus, ya beaucoup de condition, ce qui peut se reduire par un simple calcul par bit...
je m'explique :

Code:
 N
O-E
 S
voici les points cardinaux d'un mur, si on considerte que chacun de ces points des bit, ca donne que le N est le 1er bit, E le 2eme, O le 3eme et S le 4eme
(donc dans l'ordre : N^1+O^2+E^3+S^3) /* lol, NOES, ca veux rien dire rire */
donc ton script dans ce cas aura que 1 ligne ! que voici :

Citation :
return collision_point(x,y-32,mur,1,1) /*nord*/ + collision_point(x-32,y,mur,1,1)^2 /*ouest*/ + collision_point(x+32,y,mur,1,1)^3 /*est*/ + collision_point(x,y+32,mur,1,1)^4 /*sud*/;

ce resultat donnera ton image_index (il faut modifier le strip par contre pour qu'il concorde bien avec cette ligne,n ce qui est relativement simple)
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 5:28

Moi et les bits.... kill
Et onilink_, pour une room un tableau suffit largement, mais par exemple si tu veux que quand le joueur creve, au lieu de recommencer bêtement il puisse "retourner dans le passé", en imaginant 2 tableaux a une dimension pour les positions x et y, avec un room_speed de 30, tu pourra a peine enregistrer un peu plus de 10 secondes avant e dépasser les 32000 cases.... Et si en plus t'a des ennemis ou des trucs qui bougent, tu va vite dépasser le million de cases total et tu te retrouve bloqué....
(C'était un peu compliqué mais j'espère que t'as compris gnii )
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
avatar

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 9:08

Mouais, pas sûr dans ce cas qu'un tableau soit des plus approprié.

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

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

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 9:22

Houla pas sur d'avoir capté ton truc la Térence xD
Tu voudrais enregistrer toute la room dans un tableau chaque step ? Surprised

>Gabin :
Utilise des op binaires plutôt (surtout que ton raisonnement est faux la, 1^x = 1) : N | O<<1 | E<<2 | S<<3

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

Messages : 2213
Localisation : Oui

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 10:30

gnii C'est un peu compliqué en effet...
En gros, à chaque step tu enregistre la position en x et la position en y dans 2 tableaux différents, et ensuite tu fais que quand le joueur meure, il revient sur ses positions précédentes que tu aura enregistré pendant qu'il était encore en vie...
(je sais pas si c'est plus clair...)
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 10:39

En gros tu enregistres les positions précédentes de ton perso, mais pourquoi dans deux tableaux ?
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

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

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 10:41

Un pour x et un pour y.
Mais je vois toujours pas le problème quand a l'utilisation d'un tableau pour les collisions x)

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


Messages : 1688

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 10:45

Oui enfin je pensais qu'il parlait de deux tableaux 2D, enfin c'est logique Yum!
Citation :

Mais je vois toujours pas le problème quand a l'utilisation d'un tableau pour les collisions x)

Moi non plus.
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 11:20

vous avez mal compris, moi j'argumentais pas sur les collisions, de disais juste que les tableaux sont petits dans gm et que plutot que de perdre de la mémoire avec les tableaux, j'utilise tout simplement des objets...
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

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

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 11:25

Ben les objets prennent énormément plus de mémoire que les tableaux hein ...
Quand tu vois toutes les variables locales attribuées a un objet, avec chaque variable qui fait 8 octets...

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

Messages : 2213
Localisation : Oui

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 12:38

oui mais ca on s'en fout, on a pas de limite d'objets alors que les tableaux sont limités.
Pour un grand jeu, je peux comprendre, mais pour un petit projet ca sert pas à grand chose... (du moins je pense...)
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

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

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 13:28

Les ds_list et ds_grid sont des tableaux et sont pas limités...

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

Messages : 2213
Localisation : Oui

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 13:32

C'est vrai ? Et ben tu viens de m'apprendre un truc merci !
N'empêche je me demande comment ils ont réussi a faire que les tableaux soient limités alors que les grids qui ne sont que des tableaux speciaux soient infinis.... c'est space....
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

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

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 13:36

A mon avis c'est une protection pour que les newbies saturent pas toute la ram en faisant n'importe quoi x)

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

Messages : 2213
Localisation : Oui

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 13:38

Ouais mais c'est ******...
Mais maintenant grâce a toi je peux avoir des tableaux infinis ! Merci beaucoup ! coeur coeur coeur
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

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

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 13:46

Et en plus d'être plus rapides et légers, t'as plein de fonctionnalités super pratique.
Pour les ds_list par exemple :
ds_list_insert -> insérer une case
ds_list_sort -> trier les valeurs

Pour les ds_grid par exemple :
ds_grid_add_disk
ds_grid_add_region
ds_grid_get_disk_max
ds_grid_get_max
ds_grid_multiply

Bref, les possibilités deviennent énormes Very Happy

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

Messages : 2213
Localisation : Oui

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 13:51

Je viens de lire la doc sur les grids et c'est vraiment pratique t'as raison, ensuite trier des listes c'est intéressant parce que ce serait bien plus long de coder sa propre fonction (en utilisant ascii je pense )
Merci pour toutes ces infos gnii
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 16:12

List != Tableau : voilà pourquoi, et je pense que les listes sont des objets, enfin ça on ne le voit pas.
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 16:15

Mais si ce sont des objets, ou sont enregistrées les valeurs ?? A mon avis dans un tableau ou alors, mais c'est un peu con, dans un string ou toutes les valeurs sont séparées par un caractère spécial...
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 16:21

Ouais mais en fait même, puisque les strings sont des tableaux de char....
Et puis je pense que les attributs d'un objet sont eux aussi dans un tableau spécial (un peu comme ceux en java ou en php dont l'index est un mot (ex:$_POST["name"]))
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
avatar

Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 16:57

Citation :
>Gabin :
Utilise des op binaires plutôt (surtout que ton raisonnement est faux la, 1^x = 1) : N | O<<1 | E<<2 | S<<3
"1^x = 1" -> je me suis trompé ^^, c'est x^1 que je voulais mettre
ce qui fait que N | O<<1 | E<<2 | S<<3 reviens a ce que je veux mais je me suis pas penché sur cette ecriture (en plus, c'est du C, pas du GML ?)
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
onilink_
Modérateur
avatar

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

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Mer 11 Juil 2012 - 17:10

Les op binaires en gml s'écrivent comme en C Wink

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


Messages : 1688

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Jeu 12 Juil 2012 - 11:02

Térence68 a écrit:
Ouais mais en fait même, puisque les strings sont des tableaux de char....
Et puis je pense que les attributs d'un objet sont eux aussi dans un tableau spécial (un peu comme ceux en java ou en php dont l'index est un mot (ex:$_POST["name"]))

Je ne parlais pas bien sur pas dans GM mais en Delphi, dans le code de GM, à mon avis les objets sont stocké dans une ou des lists.
Et une list est un objet, et ce sont bien sur ce ne sont pas objets de la class objet de gm, voilà y a rien d'autre à comprendre.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

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

MessageSujet: Re: Un petit script utile pour faire de beaux murs....   Jeu 12 Juil 2012 - 11:40

Vu que GM a été réécris en C++, c'est soit stocké dans un tableau dynamique, soit dans un vector Smile
A mon avis ils se sont tournés vers la simplicité plutôt que la puissance par contre. (vector : plus pratique mais un poil moins rapide, on le ressent surtout quand il y a beaucoup d'éléments)

_________________
                 
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Un petit script utile pour faire de beaux murs....   

Revenir en haut Aller en bas
 
Un petit script utile pour faire de beaux murs....
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Un site internet très utile pour faire des économies sur notre épicerie!
» Quel configuration pour faire tourner Heredis 11 ?
» Pour avoir des beaux rosiers
» quelle matiére pour faire des doublures?
» trucs pour faire tomber la fièvre

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Scripts GML-
Sauter vers: