AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment :
Cdiscount : -30€ dès 300€ ...
Voir le deal

 

 Savoir la valeur de la cellule suivante.

Aller en bas 
+2
l0lmanPH
Qual
6 participants
AuteurMessage
Qual
Utilisateur confirmé: Rang ****
Qual


Messages : 1450
Projet Actuel : Tower Defence

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 8:43

Bonjour, je suis en train de créer un générateur de map pour mon jeu de bataille navale amélioré.

Tout d'abord je vous décrit parfaitement le système afin que vous compreniez mieux mon problème.

J'ai 2 rooms :

la première sert a disposer des simple carrés sur une carte de 15x15
et la deuxième room utilise le tableau de la room 1 pour généré la map graphiquement.

ROOM 1

En gros, on a un quadrillage de 15x15.

La première étape consiste a disposer sur la map des carrés qui serviront a générer la map ( et donc a changer les valeurs des cellule ( 0=vide 1=terrain )


Jusque ici, tout fonctionne a merveille. ( j'ai même réussi à forcer le joueur a ce que chaque bloc en touche un autre pour éviter de disperser les morceaux de terrain partout. Savoir la valeur de la cellule suivante. Gnii )

Ensuite on clique sur next et on passe a la room suivante.

ROOM 2

dès que la room est créer, un objet obj_generateur_vide est crée pour chaque case. Ensuite je récupère les valeurs du tableau de la room 1.

Jusque ici tout va bien.

si la cellule = 0 , a cet endroit il y'aura un sprite d'eau
si la cellule = 1 , une instance de l'objet terrain est créer.

J'utilise ce code qui marche parfaitement :
Code:
//cellule =1

if obj_tableau_j1.Carte_Joueur[(x-96)/32,(y-160)/32]=1
{
instance_create (x,y,obj_generator_terrain)
instance_destroy();
}


//cellule =0
if obj_tableau_j1.Carte_Joueur[(x-96)/32,(y-160)/32]=0
{
 sprite_index= spr_blocm
 }


Juste une précision :

Normalement c'est "Carte_Joueur[j,i]=0"

j= x-96 /32

96 car mon tableau commence a 96 pixel etc...
32, car mes cellules font 32pixel.

Fin bref ca fonctionne :p

Donc je me suis lancer dans l'amélioration des graphismes.

mais la ou je bloque c'est qu'une commande du style :

//detecte le terrain a droite
if obj_tableau_j1.Carte_Joueur[((x-96)/32)+1,(y-160)/32]=1
ne fonctionne pas O_o

" Arrays out of bounds "

pourtant lorsque je fait le calcul, sa donne la valeur j actuelle + 1 pour le décalage vers la droite.

Une idée ? Savoir la valeur de la cellule suivante. Oue
Revenir en haut Aller en bas
http://www.brainwizz.fr
l0lmanPH
Utilisateur confirmé: Rang *
l0lmanPH


Messages : 226
Localisation : cbna.forumactif.com
Projet Actuel : Le Méchant Tueur de Bisounours
Metroid Prime : Némésis
Tutoriel GM

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 10:14

Mais tu n'as pas compris comment on utilise les tableaux ma parole !

Les cases sont VIRTUELLES, tu comprends ?
Tu peux faire Carte_jeu[i, j].x puisque ces indices contiennent l'id d'une instance.

Et quel est l'intérêt d'avoir deux rooms ?

_________________
Savoir la valeur de la cellule suivante. Usebar_mpn-21cdd96
« Un même visage, un même passé, deux destins différents ? »
Metroid Prime : Némésis, fangame et suite du célèbre Metroid Prime 3 : Corruption.

Rédaction d'un big-tuto pour le SdZ sur Game Maker...
Avancement : 60% hors-ligne, 5% en ligne.
Revenir en haut Aller en bas
red-error
Utilisateur confirmé: Rang ****
red-error


Messages : 1015
Projet Actuel : Savoir la valeur de la cellule suivante. Bas-machoire2000

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 14:23

Sinon pour array out of bounds,
C'est soit que :
La case testée a un index inférieur à 0 (c'est à dire -1,-2 ou autre)
La case testée n'est pas initialisée (elle n'existe pas)


Ce que tu peux faire, c'est éviter de tester ces cases qui n'existent pas.
Soit en changeant les valeurs de départ et d'arrivée, soit en mettant des min() et max().
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
glcraft


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

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 14:49

red-error a écrit:
Sinon pour array out of bounds,
C'est soit que :
La case testée a un index inférieur à 0 (c'est à dire -1,-2 ou autre)
La case testée n'est pas initialisée (elle n'existe pas)


Ce que tu peux faire, c'est éviter de tester ces cases qui n'existent pas.
Soit en changeant les valeurs de départ et d'arrivée, soit en mettant des min() et max().
nan pas d'accord : il te le dit quand c'est negatif dans la fenetre d'erreur
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
l0lmanPH
Utilisateur confirmé: Rang *
l0lmanPH


Messages : 226
Localisation : cbna.forumactif.com
Projet Actuel : Le Méchant Tueur de Bisounours
Metroid Prime : Némésis
Tutoriel GM

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 15:35

Mais c'est normal que ça ne marche pas !
Vérifier la "position d'une case" en faisant le calcul de x/y dans les index du tableau est illogique ! :s

_________________
Savoir la valeur de la cellule suivante. Usebar_mpn-21cdd96
« Un même visage, un même passé, deux destins différents ? »
Metroid Prime : Némésis, fangame et suite du célèbre Metroid Prime 3 : Corruption.

Rédaction d'un big-tuto pour le SdZ sur Game Maker...
Avancement : 60% hors-ligne, 5% en ligne.
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
glcraft


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

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 15:57

d'accord avec toi l0lman a deux conditions :
- qu'il n'a pas initialiser
- ou qu'il fait des index a virgule flotantes, ce qui fait planter le programme
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
l0lmanPH
Utilisateur confirmé: Rang *
l0lmanPH


Messages : 226
Localisation : cbna.forumactif.com
Projet Actuel : Le Méchant Tueur de Bisounours
Metroid Prime : Némésis
Tutoriel GM

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 16:43

Voilà ce que tu dois faire Qual...

Actuellement, tu as deux tableaux qui représentent une grille de cases, pour nous, humains.
Mais pour l'ordi, lui, c'est un vulgaire tableau à 2D !!

Il faut se mettre ça dans la tête : la représentation est souvent TOTALEMENT différente de la manière de traiter les données.

Tu vas devoir créer une fonction qui parcourt ce tableau et fait des draw_rectangle ou tout ce que tu veux à des positions x et y qui s'incrément à chaque itération, en n'oubliant pas de faire un draw_sprite (à une position relative à x et y incrémentées) qui, en fonction de la valeur de la "case" du tableau actuelle affiche soit rien soit spr_pionbot soit spr_pionjoueur.

This is true programmation. Wink

EDIT : Le code...
Code:
// scr_AfficherCarte

var cell_width, cell_height, new_x, new_y;

for (i = 0; i < VariableIndexMax; i += 1;)
{
    for (j = 0; j < VariableSousIndexMax; j += 1);
    {
        draw_rectangle(new_x, new_y, new_x + cell_width, new_y + cell_height, 0);
        if (carteJoueur[i, j])
        {
            draw_text(new_x + cell_width / 2, new_y + cell_height / 2, string(carteJoueur[i, j]));
        }
        new_x += 15;
    }
    new_y += 15;
}

Comme ça le jeu est affiché indépendamment, sans problèmes... et en plus, et quelles que soient les modifications effectuées sur le tableau.
C'est bien la programmation modulaire hein ?

_________________
Savoir la valeur de la cellule suivante. Usebar_mpn-21cdd96
« Un même visage, un même passé, deux destins différents ? »
Metroid Prime : Némésis, fangame et suite du célèbre Metroid Prime 3 : Corruption.

Rédaction d'un big-tuto pour le SdZ sur Game Maker...
Avancement : 60% hors-ligne, 5% en ligne.
Revenir en haut Aller en bas
Qual
Utilisateur confirmé: Rang ****
Qual


Messages : 1450
Projet Actuel : Tower Defence

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 18:07

Citation :
u vas devoir créer une fonction qui parcourt ce tableau et fait des
draw_rectangle ou tout ce que tu veux à des positions x et y qui
s'incrément à chaque itération, en n'oubliant pas de faire un
draw_sprite (à une position relative à x et y incrémentées) qui, en
fonction de la valeur de la "case" du tableau actuelle affiche soit rien
soit spr_pionbot soit spr_pionjoueur.



Mais ca c'est bon o_o

Ce n'est pas mon problème...

Je sais que le tableau est virtuel...


Citation :
en faisant le calcul de x/y dans les index du tableau est illogique !

Bin non !

a partir du calcul de la position x de l'objet divisé par sa taille, on obtient un chiffre qui correspont au "j" du tableau. ca marche parfaitement tant que l'objet à été créer grace au tableau...


Enfin bref, je vous ai envoyé ce que je suis en train de faire :

http://www.mediafire.com/?rq4gskc5mhtsa3w

Utilisez la touche 1 du keypad pour afficher/ne pas afficher le tableau en chiffre.


Donc première room vous cliquez pour inséré des cases noires ensuite cliquez sur le carré marron tout moche a droitre, c'est le bouton " next"

Pour l'instant on est pas obliger de mettre 75 cases, c'est mieux pendant la periode de test.

Vous voyez qu'ensuite la carte est généré. Mais ce que je veux c'est :

si a droite du bloc terrain c'est vide alors la case vide change de sprite pour prendre l'apparence du sprite bordure gauche. et etc etc


Mouarf je devrais m'orienter vers les places meeting
Revenir en haut Aller en bas
http://www.brainwizz.fr
l0lmanPH
Utilisateur confirmé: Rang *
l0lmanPH


Messages : 226
Localisation : cbna.forumactif.com
Projet Actuel : Le Méchant Tueur de Bisounours
Metroid Prime : Némésis
Tutoriel GM

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 20:13

Oh mon Dieu du D&D !
Et tu crées un objet par valeur de case !

Je pense que tu devrais essayer des choses plus simples avant ton projet.
Tu acquérais de l'expérience qui te serait utile au niveau des choix de codes.

_________________
Savoir la valeur de la cellule suivante. Usebar_mpn-21cdd96
« Un même visage, un même passé, deux destins différents ? »
Metroid Prime : Némésis, fangame et suite du célèbre Metroid Prime 3 : Corruption.

Rédaction d'un big-tuto pour le SdZ sur Game Maker...
Avancement : 60% hors-ligne, 5% en ligne.
Revenir en haut Aller en bas
Qual
Utilisateur confirmé: Rang ****
Qual


Messages : 1450
Projet Actuel : Tower Defence

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 20:16

bah j'ai un autre projet en cours, Worms Strike, j'ai pas vraiment eu de difficulté, pourtant c'est un bon jeu. :/
Revenir en haut Aller en bas
http://www.brainwizz.fr
l0lmanPH
Utilisateur confirmé: Rang *
l0lmanPH


Messages : 226
Localisation : cbna.forumactif.com
Projet Actuel : Le Méchant Tueur de Bisounours
Metroid Prime : Némésis
Tutoriel GM

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 20:44

Ah oui ?

Il est possible que tu aies réussi, mais ton code doit être lourd et mal optimisé (à mon avis), sans vouloir te vexer.
Faire une bataille navale avec un bot exige plus de connaissances au niveau des structures et de leur parcours.

_________________
Savoir la valeur de la cellule suivante. Usebar_mpn-21cdd96
« Un même visage, un même passé, deux destins différents ? »
Metroid Prime : Némésis, fangame et suite du célèbre Metroid Prime 3 : Corruption.

Rédaction d'un big-tuto pour le SdZ sur Game Maker...
Avancement : 60% hors-ligne, 5% en ligne.
Revenir en haut Aller en bas
[TheDarkTiger]
Modérateur
[TheDarkTiger]


Messages : 7420
Localisation : Essonne

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 23:02

Franchement, c'est jouable.
Mais c'est plutôt un défit qu'autre chose :gniah:

Pour utiliser les tableaux depuis un certain temps déjà, je te conseille de toujours :
- Utiliser du GML !
- Utiliser des variables temporaires qui stockent des indexes :
i=x/32;
j=y/32;
show_message(string(Tableau[i,j]));

- Utiliser les opérateurs round() ou floor() sur ces dites variables :
i=floor(x/32);
j=floor(y/32);
show_message(string(Tableau[i,j]));

- Utiliser un switch case si tu à plusieurs choses à faire plutôt qu'une suite de if :
i=floor(x/32);
j=floor(y/32);
switch(Tableau[i,j])
{
case 0 : {show_message("Eau !"); break;}
case 1 : {show_message("terre!"); break;}
default : break;
}

après, c'est une question de style de programmation...

_________________
Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^
Savoir la valeur de la cellule suivante. U3dfr2Savoir la valeur de la cellule suivante. Sign l'antique
Bienvenue au 2630eme utilisateur : Mike Kennedy !
Revenir en haut Aller en bas
http://www.tdms.fr
onilink_
Modérateur
onilink_


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

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 23:29

Pourquoi ne pas utiliser tout simplement :
i=x div 32
j=y div 32

:p

_________________
Savoir la valeur de la cellule suivante. Runningpotato1Savoir la valeur de la cellule suivante. TvF6GED Savoir la valeur de la cellule suivante. MdetltS
Revenir en haut Aller en bas
red-error
Utilisateur confirmé: Rang ****
red-error


Messages : 1015
Projet Actuel : Savoir la valeur de la cellule suivante. Bas-machoire2000

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 23:32

Je vais appuyer ce que dit TDT ( aussi parce que c'est exactement ce que je fait). :lng:


Sinon pour les bords, je sais ce qu'il te faut : une logique.
Y'avais un exemple de routes je ne sais plus où sur le CBNA (mais très mal fichu puisqu'il faisant des tests à chaque fois).

Je vais te montrer un exemple si tu veux bien. Je travaille justement sur un système de tiles du même genre je crois. Very Happy


(PS : j'ai pas encore pu lancer ton GMK, tu utilises les extensions qui ne sont pas tolérées en Lite)


Edit : par contre Onilink m'apprends les div. Very Happy
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyLun 16 Aoû 2010 - 23:36

Aussi Qual ne l'as peut être pas dit mais son probleme est réglé, ne vous prenez plus la tête Smile

_________________
Savoir la valeur de la cellule suivante. Runningpotato1Savoir la valeur de la cellule suivante. TvF6GED Savoir la valeur de la cellule suivante. MdetltS
Revenir en haut Aller en bas
red-error
Utilisateur confirmé: Rang ****
red-error


Messages : 1015
Projet Actuel : Savoir la valeur de la cellule suivante. Bas-machoire2000

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyMar 17 Aoû 2010 - 0:08

Ah ben c'est bête, j'avais déjà fait l'exemple pour les images. Very Happy
Ben je le met quand même, c'est toujours utile :
http://www.mediafire.com/?s73nsadyvkt0d26


(HS : J'ai aussi le niveau supérieur, qui prend en compte les coins qui ratent ici, mais c'est plus compliqué à éditer.
Et j'aurai bientôt le niveau supérieur au supérieur, avec les diagonales. Depuis le temps que j'en parle... )
Revenir en haut Aller en bas
Qual
Utilisateur confirmé: Rang ****
Qual


Messages : 1450
Projet Actuel : Tower Defence

Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. EmptyMar 17 Aoû 2010 - 1:19

Whooo O_o

Bluffant ton truc, mais j'aurai du le dire. Onilink m'a aider. Je vous montrerai une démo une fois tout le truc peaufiné Smile
Revenir en haut Aller en bas
http://www.brainwizz.fr
Contenu sponsorisé





Savoir la valeur de la cellule suivante. Empty
MessageSujet: Re: Savoir la valeur de la cellule suivante.   Savoir la valeur de la cellule suivante. Empty

Revenir en haut Aller en bas
 
Savoir la valeur de la cellule suivante.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Test si variable a une valeur
» testé la valeur d'une variable
» Problème de valeur de variable
» Valeur d'un site ?
» valeur clavier

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