Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage Java > [DEFI Java] Le jeu de la vie > Lecture du sujet

[DEFI Java] Le jeu de la vie

Pour les debutants comme les autres

Vous devez être inscrit pour pouvoir poster des messages

Page : Précédente  1  2  3  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  Suivante
Hors ligne DHKold # Posté le 30/11/2005 à 22:09:52
Ex-Admin
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
Pour afficher le jeu de la vie en Java, un JPanel, Layout en GridLayout, et une collection de JButton. Ca permet d'afficher de modifier facilement l'état d'une case pour initialiser le jeu etc...

Mais je crois que la partie graphique fait partie du conours, sinon, la fonction qui calcul une génération est très simple et très courte à faire.

Image utilisateur
Ouverture prochaine
----------
Pack DHemoticons (Utilisation Libre) : Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur
 
Hors ligne minirop # Posté le 30/11/2005 à 22:10:21
坂本美緒
Avatar
Modérateurs
bonsoir,

J'ai enfin décider de tenter ce défi mais le problème c'est que je n'arrive pas à faire un nombre aléatoire entre 0 et 1.

entre a et b je fais : Math.random()*(b-a)+a
mais si a=0 et b=1 çà me sort que des 1. :(

comment résoudre ce problème ? merci.

pas commencés - en cours - finis - (dernier tome lu)
manga : Love Hina - Ichigo 100% - Fruits Basket - School Rumble - Death Note - Parmi Eux - One Piece (46) - Naruto (45) - Lovely Complex (10) - Fullmetal Alchimist (22) -> My Manga
IDE multiplateforme pour Qt Image utilisateur !! Qt @ IRC --> #qt-fr@irc.freenode.net
 
Hors ligne dworkin # Posté le 30/11/2005 à 22:16:04
zCorrecteur
Avatar
Validateurs
Essaie plutot avec la classe Random de java.util

Code : Java
Random rnd = new Random();
rnd.nextDouble();
retourne un double compris entre 0 et 1.


et

Code : Java
Random rnd = new Random();
rnd.nextFloat();
retourne un float compris entre 0 et 1.

Bon courage pour la suite...

N'ayons l'air de rien... Soyons désinvoltes...
web agency rennes || Services à domicile || Faire part naissance, mariage, deces, bapteme || Paquet cadeau || calendrier 2009





 
Hors ligne minirop # Posté le 30/11/2005 à 22:19:47
坂本美緒
Avatar
Modérateurs
je me suis mal exprimer en fait, je veux soit 0 soit 1.

edit : j'ai fais
Code : Java
Random rnd = new Random();
int var = rnd.nextInt()%2;
Édité le 30/11/2005 à 22:24:16 par minirop

pas commencés - en cours - finis - (dernier tome lu)
manga : Love Hina - Ichigo 100% - Fruits Basket - School Rumble - Death Note - Parmi Eux - One Piece (46) - Naruto (45) - Lovely Complex (10) - Fullmetal Alchimist (22) -> My Manga
IDE multiplateforme pour Qt Image utilisateur !! Qt @ IRC --> #qt-fr@irc.freenode.net
 
Hors ligne Morphyn # Posté le 30/11/2005 à 22:30:30
Avatar
Groupe : Membres
J'ai remplacé les JButton par des JPanel en fait, ça fait plus classe ;)
Comme je l'ai dit je m'y suis pas encore attaqué à la fonctionnalité qui calculera les générations, c'est juste que j'ai pas encore dans la tête la façon simple de la faire. Celle que j'ai ferait à mon gout beaucoup trop de tests... enfin bon on verra...

Citation : Eric Cartman
- T'as la trique, tu lui tripottes un peu les nibards, tu fous ton zguègue dedans et puis tu pisses !
- Je fous mon zguègue dedans et je pisse ?
- Ouais bon ok, si tu veux pas qu'elle tombe en cloque tu sors et tu pisses sur sa jambe !

Citation : Eric Cartman
Je suis Bullrog, ninja dur et brutal qui consacre sa vie à débarasser la Terre des hippies !
 
Hors ligne dworkin # Posté le 30/11/2005 à 22:31:57
zCorrecteur
Avatar
Validateurs
Alors il suffit d'utiliser :

Code : Java
nextInt(int n);

Citation : API Java (java.sun.com)
Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence.

Source : http://java.sun.com/j2se/1.4.2/docs/api/index.html


Tu dois donc juste faire :

Code : Java
Random rnd = new Random();
int var = rnd.nextInt(int 2);


Ce qui, selon l'API doit te rendre un entier compris entre 0 (inclus) et 2(exclus) donc bien 0 ou 1.

N'ayons l'air de rien... Soyons désinvoltes...
web agency rennes || Services à domicile || Faire part naissance, mariage, deces, bapteme || Paquet cadeau || calendrier 2009





 
Hors ligne minirop # Posté le 01/12/2005 à 00:29:22
坂本美緒
Avatar
Modérateurs
j'ai fini :p (enfin je pense :euh: )

voilà ce que çà donne : Cliquez ici

au départ tout est blanc et çà crée une nouvelle génération à chaque clique de souris.

voilà :D

pas commencés - en cours - finis - (dernier tome lu)
manga : Love Hina - Ichigo 100% - Fruits Basket - School Rumble - Death Note - Parmi Eux - One Piece (46) - Naruto (45) - Lovely Complex (10) - Fullmetal Alchimist (22) -> My Manga
IDE multiplateforme pour Qt Image utilisateur !! Qt @ IRC --> #qt-fr@irc.freenode.net
 
Hors ligne pierrot la lune # Posté le 01/12/2005 à 00:50:56
serial nounours
Avatar
Groupe : Membres
ouai, si il y a des motivés, utilisé la classe canvas :)
Si j'avais a faire ça, c'est surement ce que j'utiliserais. :)

(o`---'o)
| 0 o |
(_(°)_)
/.-.
oO0.0Oo
(.)^(.)


 
Hors ligne Trysac # Posté le 01/12/2005 à 08:36:10
old music is good music
Avatar
Groupe : Membres
pas mal

mais il doit y avoir des effet de bord... car pres des cotés les cellules on dut mal a naitre ^^

sinon pour tirer 0 ou 1 c'est :
int x=(int)Math.random()+1;

vends Nikon D80+Grip+2cartes SD extrem III+telecommande IR
 
Hors ligne loacast # Posté le 01/12/2005 à 09:08:37
booop
Avatar
Groupe : Membres
C'est sûr qu'avec le svg le problème graphique ne se pose pas !!

Oui le svg est bien adapté pour ce type de jeux.
Édité le 01/12/2005 à 09:09:02 par loacast
 
Hors ligne xtaZy # Posté le 01/12/2005 à 13:43:18
Guindaille won't die
Avatar
Groupe : Membres
Je vous souhaite bonne chance !

J'avais du faire ce jeu pour un tp l'année dernière en Première ingénieur civil ! On a eu 2 semaines pour le réaliser donc si vous vous y connaissez pas mal, y a franchement moyen.

Je ne referai pas le jeu parce que je suis un peu débordé pour le moment, mais je suivrai le topic !

Sur ce, bon codage :)
 
Hors ligne minirop # Posté le 01/12/2005 à 14:02:50
坂本美緒
Avatar
Modérateurs
Nouvelle question : comment faire une tempo en java ?

pas commencés - en cours - finis - (dernier tome lu)
manga : Love Hina - Ichigo 100% - Fruits Basket - School Rumble - Death Note - Parmi Eux - One Piece (46) - Naruto (45) - Lovely Complex (10) - Fullmetal Alchimist (22) -> My Manga
IDE multiplateforme pour Qt Image utilisateur !! Qt @ IRC --> #qt-fr@irc.freenode.net
 
Hors ligne DHKold # Posté le 01/12/2005 à 14:06:55
Ex-Admin
Avatar
Groupe : Membres
Citation : minirop
Nouvelle question : comment faire une tempo en java ?


Un timer? avec la classe java.swing.Timer :p

Image utilisateur
Ouverture prochaine
----------
Pack DHemoticons (Utilisation Libre) : Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur
 
Hors ligne pierrot la lune # Posté le 01/12/2005 à 14:30:19
serial nounours
Avatar
Groupe : Membres
ba, c'est crade.
Perso, j'utiliserais directe un Thread. :p
Édité le 01/12/2005 à 14:30:42 par pierrot la lune

(o`---'o)
| 0 o |
(_(°)_)
/.-.
oO0.0Oo
(.)^(.)


 
Hors ligne Morphyn # Posté le 01/12/2005 à 14:47:07
Avatar
Groupe : Membres
C'est aussi avec un thread que je suis parti personnellement :)

Citation : Eric Cartman
- T'as la trique, tu lui tripottes un peu les nibards, tu fous ton zguègue dedans et puis tu pisses !
- Je fous mon zguègue dedans et je pisse ?
- Ouais bon ok, si tu veux pas qu'elle tombe en cloque tu sors et tu pisses sur sa jambe !

Citation : Eric Cartman
Je suis Bullrog, ninja dur et brutal qui consacre sa vie à débarasser la Terre des hippies !
 
Hors ligne victor # Posté le 01/12/2005 à 15:55:26
est beau !
Avatar
Groupe : Membres
J'en ai fait un il y a 1 ans de jeu de la vie en java.
Wais, c'est joli à faire, mais ca vaut pas les fourmis de langton. Ca, c'est un truc drôle et intéressant :)

Nowhere to run, Nowhere to hide
Javier Flutine Crew presents : Poneys pom pom tchi !
Citation :
21:44:09 Elentar: mon bac vaut bien quelques chatons

Citation :
La pizza 4 saisons enfourne des javiers sauvages

Citation : Makkhdyn
j'avais gravé mon iPod avec "MakkhPod", mais après coup j'ai regretté puisqu'il était devenu impossible a vendre et j'ai été obligé de le refiler a mon frère...
 
Hors ligne _myst3 # Posté le 01/12/2005 à 21:13:10
citation
Avatar
Groupe : Membres
Citation : DHKold
Pour afficher le jeu de la vie en Java, un JPanel, Layout en GridLayout, et une collection de JButton. Ca permet d'afficher de modifier facilement l'état d'une case pour initialiser le jeu etc...

Mais je crois que la partie graphique fait partie du conours, sinon, la fonction qui calcul une génération est très simple et très courte à faire.

...
moi qui pensait avoir recours aux argument dans l'invite de commandes ...
je vien de commencer Java avec un livre ...pas encore entamer la partie Interface... :(
++
Hors ligne Morphyn # Posté le 01/12/2005 à 21:56:19
Avatar
Groupe : Membres
Bon voilà j'ai fini toutes les fonctionnalités sauf le calcul de la génération d'après :D :D
Qui a dit que c'était le point important de l'application ?

Citation : Eric Cartman
- T'as la trique, tu lui tripottes un peu les nibards, tu fous ton zguègue dedans et puis tu pisses !
- Je fous mon zguègue dedans et je pisse ?
- Ouais bon ok, si tu veux pas qu'elle tombe en cloque tu sors et tu pisses sur sa jambe !

Citation : Eric Cartman
Je suis Bullrog, ninja dur et brutal qui consacre sa vie à débarasser la Terre des hippies !
 
Hors ligne dworkin # Posté le 02/12/2005 à 01:30:42
zCorrecteur
Avatar
Validateurs
Ce n'est pas l'algorithme le plus compliqué du monde non plus...

Bon courage à toi.

N'ayons l'air de rien... Soyons désinvoltes...
web agency rennes || Services à domicile || Faire part naissance, mariage, deces, bapteme || Paquet cadeau || calendrier 2009





 
Hors ligne Morphyn # Posté le 02/12/2005 à 08:42:03
Avatar
Groupe : Membres
J'ai presque fini l'algo hier soir, il me reste juste un problème à règler et c'est bon ;)

Citation : Eric Cartman
- T'as la trique, tu lui tripottes un peu les nibards, tu fous ton zguègue dedans et puis tu pisses !
- Je fous mon zguègue dedans et je pisse ?
- Ouais bon ok, si tu veux pas qu'elle tombe en cloque tu sors et tu pisses sur sa jambe !

Citation : Eric Cartman
Je suis Bullrog, ninja dur et brutal qui consacre sa vie à débarasser la Terre des hippies !
 
Hors ligne Trysac # Posté le 02/12/2005 à 11:32:32
old music is good music
Avatar
Groupe : Membres
bonjour

bon comme j ai aidé un pot a le faire je l ai fait pour une amie j ai deja fait l algo mais avec plusieurs particularités:

1 je l ai fais dans un tableau en 3D 100 par 100 par 2 (vous comprendrez pourquoi apres^^
2 le nombre de cellule est definissable par l'utilisateur (tit option)
3 je l'ai fais sous DOS avec le bon vieu javac

les sources seront en ligne d'ici quelque jours

Trysac

vends Nikon D80+Grip+2cartes SD extrem III+telecommande IR
 
Hors ligne Bartimeus # Posté le 02/12/2005 à 21:37:06
Programmeur Noob irregulier
Avatar
Groupe : Membres
Citation : Trysac
1 je l ai fais dans un tableau en 3D 100 par 100 par 2 (vous comprendrez pourquoi apres^^
2 le nombre de cellule est definissable par l'utilisateur (tit option)
3 je l'ai fais sous DOS avec le bon vieu javac

On peut afficher de la 3D sous DOS?

Image utilisateur
 
Hors ligne bluestorm # Posté le 03/12/2005 à 14:33:04
dont ask to ask
Avatar
Groupe : Membres
Bah, non, mais on peut afficher des caractères pour faire de la 2D.

De plus il a pas fait de la 3D : juste deux tableaux en 2D.
 
Hors ligne Raton # Posté le 03/12/2005 à 19:40:04
Avatar
Groupe : Membres
Bonjour à tous,

Je suis nouveau sur le site et je ne fais du Java que depuis 3 mois à tout casser mais ce défi me tente.

La période d'exams arrivant malheureusement dans peu de temps pour moi, je ne pourrai m'y mettre avant fin janvier. :( Toutefois, ça me fera un bon exercice pour m'entraîner.

En bref, je reviendrai dans un mois et demi et je plancherai sur ce défi.
La solution aura probablement déjà été publiée sur le forum mais tant pis. :p
Hors ligne Trysac # Posté le 05/12/2005 à 12:02:37
old music is good music
Avatar
Groupe : Membres
Code : Java

// jeu de la vie
public class JeuDeLaVie
{
// on commence par la methode qui remplira le tableau

public static void remplir_random_etat_courant(int[][][]T , int nbr)
{
  for(int i=1, i< nbr ; i++)
   {
    T[(int)(Math.random()*100)+1][(int)(Math.random()*100)+1][0]=1;
   }
}// fin de remplir_random_etat_courant

// debut affichage:
public static void afficheage(int [][][]T , int tranche)
{
  System.out.print(" ");
  for(int i=1 ; i<=100; i++)
  {
     for( int j=1 ; j<=100 ; j++)
     {
       if(T[i][j][tranche]==1)
        {
         System.out.print("*");
        }
        else
        {
         System.out.print(" ");
        }
      }// fin for j
    System.out.print("\n");
  }//fin for i
}// fin affichage

//debut evolution
public static void evoluer(int [][][],int i, int j , int courant,int suivant)
{
  int nbr_voisines=T[i-1][j-1][courant]+T[i-1][j][courant]+T[i-1][j+1][courant]+T[i][j+1][courant]+T[i+1][j+1][courant]+T[i+1][j][courant]+T[i+1][j-1][courant]+T[i][j-1][courant];
   if(nbr_voisines==2 || nbr_voisine==3)
    {
     T[i][j][suivant]=T[i][j][courant];
    }
    if(nbr_voisine < 2)
    {
     T[i][j][suivant]=0;
     }
     if (nbr_voisine > 3)
     {
     T[i][j][suivant]=0;
     }
    if(nbr_voisine ==3)
     {
     T[i][j][suivant]=1;
     }
}// fin de evoluer

//le main
piblic static void main(String args[])
{
  int [][][]T;
  T=new int [102][102][2];// 102 au lieu de 100 c'est pour simplifier l'evolution
  int courant=0;
  int suivant=1;

  remplir_random_etat_courant(T,200);// 200= nbr de cellule au depart
  affichage(T,0);//0=etat courant
  for(int cycle=0 ; cycle < 15 ; cycle++) // 15 ou + a vous de voir
  {
     for(int i=1 ; i <=100 ; i++)
     {
        for(int j=1; j<=100 ; j++)
        {
           evoluer(T,i,j,courant,suivant);
         }
      }
      affichage (T,suivant);
     
      if(courant==0)
      {
       courant=1;
       suivant=0;
      }
      else
      {
       courant=0;
       suivant=1;
   }//fin cycle
}// fin main

}//fin class JeDeLaVie     



vends Nikon D80+Grip+2cartes SD extrem III+telecommande IR
 
Hors ligne pierrot la lune # Posté le 05/12/2005 à 12:35:24
serial nounours
Avatar
Groupe : Membres
sans parler d'algorithmique,
ton int [][][]T, je l'aurais placé en attribut de classe.
car le passer en parametre a chauqe fois est inutile.
bref la tu code en java, comme tu coderais en C, sans vraiment exploiter l'objet et j'aurais laché le static.

Evite de palcer des variables magiques dans ton code.
Qu'est ce qu'une variable magique?
c'est le 100 de "i <=100 " par exemple.
On ne sais pas a quoi correspond le 100.
Si toi tu le sais, et ici cela peux facilement ce deviner. Prend l'habitude de nommer tes variables (constante ou non) avant de les utiliser. ainsi une variable est plus facilement modifiable (il n'y a qu'un seule endroit ou il faut changer la valeur) et c'est aussi plus lisible, car on sait quel est le but de la variable (si on utilise un nom correcte evidement)

au passage, les booleans ça existe (Asgeir te dirais qu'il sont interprete comme des entier au niveau de la JVM, mais c'est pas grave).
Si tu n'as que deux valeurs posibles, priviligie les booleans.
Tu me diras, les entiet c'est plus jolie a afficher.
Mais d'un autre coté si tu veux afficher autres choses que des entier (comme des images ou des lettres), je pense qu'il est plus pertinent d'utiliser des booleens.

d'ailleur je constate que tu n'affiches pas les entiers.
donc ici, le chix de booleen est plus pertinent.
Encore une fois, nous ne somme pas en C, le type booleen existe, il faut l'utiliser.

edit: j'oubliais, en java les noms de variables, de classe et de methode sont plus souvent de la forme "uneVariable" que "une_variable". :)
Édité le 05/12/2005 à 13:08:43 par pierrot la lune

(o`---'o)
| 0 o |
(_(°)_)
/.-.
oO0.0Oo
(.)^(.)


 
Hors ligne Trysac # Posté le 05/12/2005 à 13:11:50
old music is good music
Avatar
Groupe : Membres
utilier des booleen oui ok mais ou?

mon tableau est un tableau de "int", je peut y metre que des entiers donc pas de booleen
m suis rendu compte de cette "enorminté" trop tard :p

sinon je note puor l'attribut tu a raison c'est plus jolie ^^ de meme pour les variable "magique"

ce code est encore a optimiser
Édité le 06/12/2005 à 08:11:29 par Trysac

vends Nikon D80+Grip+2cartes SD extrem III+telecommande IR
 
Hors ligne pierrot la lune # Posté le 05/12/2005 à 13:52:23
serial nounours
Avatar
Groupe : Membres
et bien en utilisant un tableau de boolean :) tout simplement :)

(o`---'o)
| 0 o |
(_(°)_)
/.-.
oO0.0Oo
(.)^(.)


 
Hors ligne pierrot la lune # Posté le 05/12/2005 à 18:48:30
serial nounours
Avatar
Groupe : Membres
Voici, ma participation.
l'affichage est ici sommaire,
un affichage avec une ihm meriterait une structure à part :)

EDIT: mise a jour du code. j'ai modifier la structure du code. Ainsi, j'utilise un maximun la POO.

Code : Java

/*
 * Created on 5 déc. 2005
 */

package pllune.life;

import java.util.Random;

/**
 * @author pierrot
 * Cette classe met en oeuvre le jeu de la vie.
 * Un algorithme publié pour la première fois par un mathématicien de Cambridge, du nom de John Conway.
 * Lors de sa publication, par Martin Gardner, dans la revue Scientific American, en octobre 1970,
 * il s'imposa directement comme étant un des problèmes les plus fréquemment posés aux étudiants américains.
 * cf: smn.andre
 */

public class GenerateurDeVie {
       
        /*
         * ce tableau represente la zone de test du generateur de vie
         */
     
        private boolean[][] bouillonDeCulture;
       
        /*
         * Ceci est le cache du bouillon de culture.
         * Il est nécessaire pour on doit similuer la simultaneité de l'evolution.
         * Or le bouillon de culture est un tableau, et il est parcouru de façon lineaire.
         */

        private boolean[][] cache;

        /**
         * Le constructeur de GenerateurDeVie
         * on initialise le terrain de test (ou bouillon de culture) et son cache
         * @param largeur la largeur du bouillon
         * @param hauteur la hauteur du bouillon
         */

        public GenerateurDeVie(int largeur, int hauteur){
                this.bouillonDeCulture = new boolean[largeur][hauteur];
                this.cache = new boolean[largeur][hauteur];
                this.reset();
        }
       
        /**
         * Cette methode genere des cellules aleatoirement dans le bouillon de culture.
         */

        public void reset(){
                Random rnd = new Random();
                for(int x = 0; x < this.bouillonDeCulture.length; x++){
                        for(int y = 0; y < this.bouillonDeCulture[x].length; y++){
                                this.bouillonDeCulture[x][y] = rnd.nextBoolean();
                        }
                }
        }
       
        /**
         * Cette methode permet de passer une etape de l'evolution des cellules.
         */

        public void genererUnePhase(){
                // Pour chaque cellules:
                for(int x = 0; x < this.bouillonDeCulture.length; x++){
                        for(int y = 0; y < this.bouillonDeCulture[x].length; y++){
                                int nbVoisine = new Case(x,y).getNbVoisine();
                                if(this.bouillonDeCulture[x][y]){
                                        // Si une cellule a moins de 2 voisines ell.e meurt
                                    // Si une cellule a plus de 3 voisines, elle meurt d'étouffement
                                        if(nbVoisine < 2 || nbVoisine > 3){
                                                this.cache[x][y] = false;
                                        }
                                        // Si une cellule a 2 ou 3 voisines, elle survit
                                        else{
                                                this.cache[x][y] = true;
                                        }
                                       
                                }else{
                                        // Une cellule naît dans une case vide si cette case est entourée de précisement 3 cellules
                                        if(nbVoisine == 3){
                                                this.cache[x][y] = true;
                                        }
                                        // sinon, c'est effectivement une case vide.
                                        else{
                                                this.cache[x][y] = false;
                                        }
                                }
                        }
                }
                // on met a jour le bouillon de culture.
                this.bouillonDeCulture = this.cache;
        }
       
        /**
         * permet d'afficher une vue du bouillon de culture
         */

        public String toString(){
                String ret = "";
                for(int x = 0; x < this.bouillonDeCulture.length; x++){
                        for(int y = 0; y < this.bouillonDeCulture[x].length; y++){
                                // ouh pas beau le code la: oui je sais, mais c'est parfois super pratique :D
                                ret += (this.bouillonDeCulture[x][y]?"1":"0")+"|";
                        }
                        ret += "\n";
                }
                return ret;
        }
       
        /**
         * Cette methode permet de recuperer le bouillon de culture
         * @return
         */

        public boolean[][] getBouillonDeCulture() {
                return this.bouillonDeCulture;
        }
       
               
        /**
         *
         * @author pierrot
         *
         * Cette classe interne permet de definir un Point (un couple de coordonnées).
         * Elle permet aussi de tester le contenu de cette case.
         */

        class Case{
               
                /*
                 * l'abscisse
                 */

                private int x;
               
                /*
                 * l'ordonnée
                 */

                private int y;
               
                /**
                 * @param x l'abscisse
                 * @param y l'ordonnée
                 */

                public Case(int x, int y) {
                        super();
                        this.x = x;
                        this.y = y;
                }
                /**
                 * @return Returns the x.
                 */

                public int getX() {
                        return x;
                }
               
                /**
                 * @param x The x to set.
                 */

                public void setX(int x) {
                        this.x = x;
                }
               
                /**
                 * @return Returns the y.
                 */

                public int getY() {
                        return y;
                }
               
                /**
                 * @param y The y to set.
                 */

                public void setY(int y) {
                        this.y = y;
                }
               
                /**
                 * Cette methode permet de verifier si il y a une cellule dans une donné.
                 * Nous sommes dans un monde torique. Donc il peu etre necessaire d'ajuster les coordonnées d'une case
                 * @return true si la case possede une cellule, false sinon
                 */

                public boolean possedeUneCellule(){
                        if(this.getX() >= bouillonDeCulture.length){
                                this.setX(this.getX()-bouillonDeCulture.length);
                        }
                        if(this.getX() < 0){
                                this.setX(bouillonDeCulture.length+this.getX());
                        }
                        if(this.getY() >= bouillonDeCulture[this.getX()].length){
                                this.setY(this.getY()- bouillonDeCulture[this.getX()].length);
                        }
                        if(this.getY() < 0){
                                this.setY( bouillonDeCulture[this.getX()].length+this.getY());
                        }
                        return bouillonDeCulture[this.getX()][this.getY()];
                       
                }
               
                /**
                 * Cette methode permet de definir le nombre de cellule contenu dans les cases voisines
                 * @return le nombre le voisine
                 */

                public int getNbVoisine(){
                        int nbVoisine = 0;
                        // on selectionne tout les point autour de p
                        Case[] casesVoisines = {
                                        new Case(this.getX()+1,this.getY()-1),
                                        new Case(this.getX()+1,this.getY()),
                                        new Case(this.getX()+1,this.getY()+1),
                                        new Case(this.getX(),this.getY()-1),
                                        new Case(this.getX(),this.getY()+1),
                                        new Case(this.getX()-1,this.getY()-1),
                                        new Case(this.getX()-1,this.getY()),
                                        new Case(this.getX()-1,this.getY()+1),
                                        };
                       
                        for(int i = 0; i < casesVoisines.length; i++){
                                // on verifie si les positions voisines possedes des cellules ou pas.
                                // nous sommes dans un monde torique donc on ajuste les coordonnées des points si elle depasse du tableau.
                                if(casesVoisines[i].possedeUneCellule()){
                                        nbVoisine++;
                                }
                        }
                       
                        return nbVoisine;
                }
               
        }
}





l'identation est clean sous eclipse, mais il y a quelque bug d'identation avec la balise "code"
Édité le 06/12/2005 à 21:21:36 par pierrot la lune

(o`---'o)
| 0 o |
(_(°)_)
/.-.
oO0.0Oo
(.)^(.)


 
Hors ligne Morphyn # Posté le 05/12/2005 à 19:53:51
Avatar
Groupe : Membres
Bon, je me permet de pas encore regarder ton code hein, j'aimerais finir le mien avant ;)
Faut juste que je trouve la motive...

Citation : Eric Cartman
- T'as la trique, tu lui tripottes un peu les nibards, tu fous ton zguègue dedans et puis tu pisses !
- Je fous mon zguègue dedans et je pisse ?
- Ouais bon ok, si tu veux pas qu'elle tombe en cloque tu sors et tu pisses sur sa jambe !

Citation : Eric Cartman
Je suis Bullrog, ninja dur et brutal qui consacre sa vie à débarasser la Terre des hippies !
 
Hors ligne 42 # Posté le 08/12/2005 à 20:35:59
Bon sang mais c'est bien sur!
Avatar
Groupe : Membres
Salut
J'etais interessé par ce defi mais comme je connais pas le java je l'ai fait en c++.
Et j'ai un probleme au niveau de l'algo.
Sur un carre de 5 sur 5, mes cellule deviennent toutes mortes tre rapidement (environ 5 a10 generations) o_O
Sur des carrée plus grand ca a lair daller mieux je suis en train de faire les tests

EDIT : Sur un carrée de 20*20 meme probleme meme si le nbre de genrations est plus grand (une centaine)
EDIT 2: Sur un carrée de 40*30 au bout d'une centaine de generations il ne rest plus que des motif qu ine bougent pas ou qui se repete
ex:
000
111
000

devient
010
010
010

et inversement


En fait je pense que mon prob vient des bords:
j'ai fait que quand une cellule est sur le bord d'abscice 0 , elle a comme voisin de gauche ceux d'abscisse le plus a droite de la grille donc d'abscisse var_longeur_de_la_grille.(de meme pour celle qui sont en haut a droite ou en bas de la grille)
Est ce que c'est bien comme ca qu il faut faire?
Édité le 08/12/2005 à 20:41:41 par 42

Image utilisateur
21 n'est que la moitié de la vérité


 

Retour au forum "Langage Java" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 457 Zéros connectés | Requêtes SQL 5 requêtes | Temps de génération de la page : Total (SQL) 0.0374s (0.017s)