IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Jeu de la vie en bash


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 1
    Points
    1
    Par défaut Jeu de la vie en bash
    bonjour à tous !

    je me retourne vers vous car j'ai un problème dans mon script. actuellement en BTS SIO et debutant en bash mon tuteur pour m'apprendre à script me fait faire un jeu de la vie.

    ou j'en suis actuellement :
    - jarrive à afficher mes tableau
    - mes déclaration de variables sont faites
    - je peux entrer les coordonnées des cellules ou je veux
    - les règles pour les calculs sont fait

    mon probleme :

    - lorsque je lance mon script j'ai bien l'affichage de mon tableau, la demande de coordonnée est valide et s'affiche bien dans mon tableau sauf que une fois que je lance le script aucun changement ce fais ...

    est-ce que parmi vous quelqu'un pourrait m'aider ?



    masterpeon vous remercie d'avance pour l'aide et l'avancement apporté à ce script

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Déjà, as-tu lu cette discussion (clic) pour avoir des idées ?

    sauf que une fois que je lance le script aucun changement ce fais

    Un petit bout de code à montrer ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 1
    Points
    1
    Par défaut game of life in bash
    oui oui c'est un ami a moi, mais meme en regardant en detail je ne trouve point de solution ....


    tenez c'est noel je balance le script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    #!/bin/bash
    #//déclaration des cellules
     
    #//déclarer le tableau 
     
    echo -e "\033[96mgame of life"
     
    declare -A tab
    declare -A tabfutur
     
     
    echo "choisir la cellule"
    read CELL
     
    echo "combien de ligne" 
    read line
     
    echo "combien de colonne"
    read colonne
     
    ######## FONCTION D'INITIALISATION TABLEAU #######
     
    fonction_init()
    {
     
            for((x=1;x<=line;x++)); do
                    for((y=1;y<=colonne;y++)); do
                            tab[$x,$y]="."
                    done
            done
    }
     
    tabfutur_function()
    {
            for ((x=1;x<=line;x++)); do
                    for ((y=1;y<=colonne;y++)); do
                            tabfutur[$x,$y]=" ";
                    done
            done
    }
     
     
    ######## FONCTION D'AFFICHER TABLEAU #########
     
    fonction_afficher()
    {
     
    clear
    echo ""
    echo -e "\033[96mgame of life"
     
    f1="%$((${#line}+1))s"
    f2="%3s"
     
    for((x=1;x<=line;x++)); do
        printf "$f2"
    done
            echo " "
     
            for((y=1;y<=colonne;y++)); do
                    printf "$f1"
     
                    for((x=1;x<=line;x++)); do
                    printf "$f2" ${tab[$x,$y]}
                    done
            echo " "
            done
    }
     
     
    ############### DEMANDE COORDONNEE #############
     
    fonction_demande()
    {
    fonction_init
    echo ""
    echo ""
     
    while :
    do
     
            echo -n " Entre les coordonnées ex: [1,1] : "
            echo ">"
            read -r coord
            if [ "$coord" == "n" ]; then
                fonction_calcul
                fonction_afficher
            else
                    if [[ "$coord" =~ ^[0-9]+,[0-9]+$ ]] ; then  x=${coord%, *} ;  y=${coord#*, } ;
                            tab[$coord]="${CELL}"
                            fonction_afficher
                            echo ""
                    else
                            fonction_demande
     
                    fi
            fi
    done
    }
    fonction_afficher
     
    ############## START ########################
     
    start_function()
     
    {
    fonciton_calcul
    }
     
    ############ CALCUL CELLULE ###############
     
    fonction_calcul()
     
    {
     
    while true; do
     
     
            for((x=1;x<=line;x++)); do
                    for((y=1;y<=colonne;y++)); do
     
     
                    Compt=0
     
                    # Voisine (x-1,y-1)
                    [[ "${tab[$(($x-1)),$(($y-1))]}" == $CELL ]] && ((Compt++))
     
                    # Voisine (x,y-1)
                    [[ "${tab[$(($x)),$(($y-1))]}" == $CELL ]] && ((Compt++))
     
                    # Voisine (x+1,y-1)
                    [[ "${tab[$(($x+1)),$(($y-1))]}" == $CELL ]] && ((Compt++))
     
                    # Voisine (x-1,y)
                    [[ "${tab[$(($x-1)),$(($y))]}" == $CELL ]] && ((Compt++))
     
                    # Voisine (x+1,y)
                    [[ "${tab[$(($x+1)),$(($y))]}" == $CELL ]] && ((Compt++))
     
                    # Voisine (x-1,y+1)
                    [[ "${tab[$(($x-1)),$(($y+1))]}" == $CELL ]] && ((Compt++))
     
                    # Voisine (x, y+1)
                    [[ "${tab[$(($x));$(($y+1))]}" == $CELL ]] && ((Compt++))
     
                    # Voisine (x+1,y+1)
                    [[ "${tab[$(($x+1)),$(($y+1))]}" == $CELL ]] && ((Compt++))
     
                # Si vivante et deux voisines, elle survit
                [[ ${tab[$(($x)),$(($y))]} == $CELL ]] && [[ ${Compt} -eq 2 ]] && tab[{x},${y}]=$CELL
     
                # Si 3 voisines, soit survie, soit naissance 
                [[ ${Compt} -eq 3 ]] && tab[${x},${y}]=$CELL
     
                # Si entre 4 et 8, mort par surpopulation
                [[ ${Compt} -ge 4 ]] && [[ ${Compt} -le 8 ]] && tab[${x},${y}]="."
     
       done
            done
     
                     for((x=1;x<=line;x++)); do
                            for((y=1;y<=colonne;y++)); do
                                    tab[x,y]=tabfutur[x,y]
                                    fonction_afficher
                            done
                     done
    done
    }
     
    ############################# EXIT ################################
     
    fonction_exit()
    {
    exit_fonction
    }
     
     
     
    #####################################################################
     
    fonction_init
    fonction_afficher
    fonction_demande

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    fonciton_calcul ?

    préfixer le nom des fonctions par fonction n'est pas nécessaire.
    tu ne préfixes par tes variables variable !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 1
    Points
    1
    Par défaut jeu de la vie
    or ce probleme ici corrigé, mon probleme est que rien ne bouge ...

    c'est à dire, que rien ne bouge dans le tableau tout reste en place

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Août 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Août 2010
    Messages : 48
    Points : 48
    Points
    48
    Par défaut
    Si je ne dis pas de betise, tu as un fonction_afficher qui se balade tout seul ligne 100 et les fonctions fonction_exit et start_function ne sont utilisees nulle part.

    De plus, je connais pas ce jeu mais j ai copie ton code et ... ca fait des trucs. Je ne sais pas si ca fait ce que tu attends, mais il se passe qq chose. Tu entends quoi par 'rien ne bouge'?

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    merci pour tes infos précise

    en gros je veux que mes 1 ou 0 bouge de place or ca ne fais pas ca ...

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
     
    #!/bin/bash
    #//déclaration des cellules
     
    #//déclarer le tableau 
     
    echo -e "\033[96mgame of life"
     
    declare -A tab
    declare -A tabfutur
     
     
    echo "combien de ligne" 
    read line
     
    echo "combien de colonne"
    read colonne
     
    ######## FONCTION D'INITIALISATION TABLEAU #######
     
    init()
     
    {
     
            for((x=1;x<=line;x++)); do
                    for((y=1;y<=colonne;y++)); do
                            tab[$x,$y]=$((RANDOM %2))
                    done
            done
    }
     
    tabfutur()
    {
            for ((x=1;x<=line;x++)); do
                    for ((y=1;y<=colonne;y++)); do
                            tabfutur[$x,$y]=" ";
                    done
            done
    }
     
     
    ######## FONCTION D'AFFICHER TABLEAU #########
     
    afficher()
     
    {
     
    clear
    echo ""
    echo -e "\033[96mgame of life"
     
     
    f1="%$((${#line}+1))s"
    f2="%3s"
     
            for((x=1;x<=line;x++)); do
                    printf "$f2"
            done
     
    echo " "
     
            for((y=1;y<=colonne;y++)); do
                    printf "$f1"
     
                    for((x=1;x<=line;x++)); do
                    printf "$f2" ${tab[$x,$y]}
                    done
            echo " "
            done
    }
     
     
    ############### DEMANDE COORDONNEE #############
     
    demande()
    {
    init
    echo ""
    echo ""
     
    while :
    do
     
            echo -n " Entre les coordonnées ex: [1,1] : "
            echo ">"
            read -r coord
            if [ "$coord" == "n" ]; then
                calcul
                afficher
            else
                    if [[ "$coord" =~ ^[0-9]+,[0-9]+$ ]] ; then  x=${coord%, *} ;  y=${coord#*, } ;
                            tab[$coord]="${CELL}"
                            afficher
                            echo ""
                    else
                            demande
     
                    fi
            fi
    done
    }
     
    ############## START ########################
     
    start()
     
    {
    calcul
    }
     
    ############ CALCUL CELLULE ###############
     
    calcul()
     
    {
    while true; do
     
            for((x=1;x<=line;x++)); do
                    for((y=1;y<=colonne;y++)); do
     
     
                    Compt=0
     
                    # Voisine (x-1,y-1)
                    [[ "${tab[$(($x-1)),$(($y-1))]}" == $CELL ]] && $((Compt + 1))
     
                    # Voisine (x,y-1)
                    [[ "${tab[$(($x)),$(($y-1))]}" ==  $CELL ]] && $((Compt + 1))
     
                    # Voisine (x+1,y-1)
                    [[ "${tab[$(($x+1)),$(($y-1))]}" == $CELL ]] && $((Compt + 1))
                    # Voisine (x-1,y)
                    [[ "${tab[$(($x-1)),$(($y))]}" ==  $CELL ]] &&  $((Compt + 1))
     
                    # Voisine (x+1,y)
                    [[ "${tab[$(($x+1)),$(($y))]}" ==  $CELL ]] && $((Compt + 1))
     
                    # Voisine (x-1,y+1)
                    [[ "${tab[$(($x-1)),$(($y+1))]}" == $CELL ]] && $((Compt + 1))
     
                    # Voisine (x, y+1)
                    [[ "${tab[$(($x)),$(($y+1))]}" ==  $CELL ]] && $((Compt + 1))
     
                    # Voisine (x+1,y+1)
                    [[ "${tab[$(($x+1)),$(($y+1))]}" == $CELL ]] && $((Compt + 1))
     
     
     
     
     
     
     
     
                    # Si vivante et deux voisines, elle survit
                    [[ ${tab[$(($x)),$(($y))]} == $CELL ]] && [[ ${Compt} -eq 2 ]] && tabfutur[{x},${y}]= 1
     
                    # Si 3 voisines, soit survie, soit naissance 
                    [[ ${Compt} -eq 3 ]] && tabfutur[${x},${y}]= 1
     
                    # Si entre 4 et 8, mort par surpopulation
                    [[ ${Compt} -ge 4 ]] && [[ ${Compt} -le 8 ]] && tabfutur[${x},${y}]= 0
     
                    done
            done
     
     for((x=1;x<=line;x++)); do
                            for((y=1;y<=colonne;y++)); do
                                    tab[x,y]=tabfutur[x,y]
                                    afficher
                            done
                     done
    done
    }
     
     
    #####################################################################
     
    init
    afficher
    demande




    voici le code modifié maintenant j'ai des erreurs " 1: commande introuvable" des la ligne 125

  9. #9
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    il ne faut pas de dollar pour une incrémentation :edit: j'ai dit pas de dollar
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    merci beaucoup j'ai deja moins d'erreur ....




    maintenant mon soucis revient a celui du debut => les 1 et 0 reste fix ... pourtant il me semble pas manquer ou avoir d'erreur

  11. #11
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    $CELL semble ne pas exister : cette variable n'est assignée nulle part.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    $CELL semble ne pas exister : cette variable n'est assignée nulle part.


    alors après modification, tout est fonctionnelle hors mis le fait que mes cellules ne bouges toujours pas c'est le probleme sur ce script

  13. #13
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    tu peux nous donner le script mis à jour, s'il te plaît.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
     
    #!/bin/bash
    #//déclaration des cellules
     
    #//déclarer le tableau 
     
    CELL=0
    line=0
    colonne=0
     
     
    echo -e "\033[96mgame of life"
     
    declare -A tab
    declare -A tabfutur
     
     
    echo "combien de ligne" 
    read line
     
    echo "combien de colonne"
    read colonne
     
    ######## FONCTION D'INITIALISATION TABLEAU #######
     
    init()
     
    {
            for((x=1;x<=line;x++)); do
                    for((y=1;y<=colonne;y++)); do
                            tab[$x,$y]=$((RANDOM %2))
                            #"."
                    done
            done
    }
     
    tabfutur()
    {
            for ((x=1;x<=line;x++)); do
                    for ((y=1;y<=colonne;y++)); do
                            tabfutur[$x,$y]=" ";
                    done
            done
    }
     
     
    ######## FONCTION D'AFFICHER TABLEAU #########
     
    afficher()
     
    {
    init
    clear
    echo ""
    echo -e "\033[96mgame of life"
     
    f1="%$((${#line}+1))s"
    f2="%3s"
     
            for((x=1;x<=line;x++)); do
                    printf "$f2"
            done
            echo " "
     
            for((y=1;y<=colonne;y++)); do
                    printf "$f1"
     
                    for((x=1;x<=line;x++)); do
                    printf "$f2" ${tab[$x,$y]}
                    done
            echo " "
            done
    }
     
    ############### DEMANDE COORDONNEE #############
     
    demande()
    {
     
    init
    echo ""
    echo ""
     
    while :
    do
     
            echo -n " Entre les coordonnées ex: [1,1] : "
            echo ">"
            read -r coord
            if [ "$coord" == "n" ]; then
                afficher
            else
                    if [[ "$coord" =~ ^[0-9]+,[0-9]+$ ]] ; then  x=${coord%, *} ;  y=${coord#*, } ;
                            tab[$coord]=$CELL
                            afficher
                            echo ""
                    else
                            demande
     
                    fi
            fi
    done
            start_fonction
    }
     
    ############ CALCUL CELLULE ###############
     
    calcul()
    {
    tput civis
     
    for ((x=1;x<=colonne;x++)); do
             for ((y=1;y<=line;y++)); do
     
                     if [ $x -eq 1 ]; then
                             xg=$colonne
                     else
                             xg=$(($x-1))
                     fi
     
                     if [ $x -eq $colonne ]; then
                             xd=1
                     else
                             xd=$(($x+1))
                     fi
     
     
                     if [ $y -eq 1 ]; then
                             yh=$line
                     else
                             yh=$(($y-1))
                     fi
     
                     if [ $y -eq $line ]; then
                             yb=1
                     else
                             yb=$(($y+1))
                     fi
     
     
                    Compt=0
     
                    # Voisine (x-1,y-1)
                    [[ "${tab[$((xg)),$((yb))]}" == $CELL ]] && ((Compt++))
                    # Voisine (x,y-1)
                    [[ "${tab[$((x)),$((yb))]}" ==  $CELL ]] && ((Compt++))
                    # Voisine (x+1,y-1)
                    [[ "${tab[$((xd)),$((yb))]}" == $CELL ]] && ((Compt++))
                    # Voisine (x-1,y)
                    [[ "${tab[$((xg)),$((y))]}" ==  $CELL ]] &&  ((Compt++))
                    # Voisine (x+1,y)
                    [[ "${tab[$((xd)),$((y))]}" ==  $CELL ]] && ((Compt++))
                    # Voisine (x-1,y+1)
                    [[ "${tab[$((xg)),$((yh))]}" == $CELL ]] && ((Compt++))
                    # Voisine (x, y+1)
                    [[ "${tab[$((x)),$((yh))]}" ==  $CELL ]] && ((Compt++))
                    # Voisine (x+1,y+1)
                    [[ "${tab[$((xd)),$((yh))]}" == $CELL ]] && ((Compt++))
     
     
                     # Si vivante et deux voisines, elle survit
                    [[ ${Compt} -eq 2 ]] && tabfutur[${x},${y}]=${tab[$x,$y]}
     
                    # Si 3 voisines, soit survie, soit naissance 
                    [[ ${Compt} -eq 3 ]] && tabfutur[${x},${y}]= $CELL
     # Si entre 4 et 8, mort par surpopulation
                    [[ ${Compt} -ge 4 ]] && [[ ${Compt} -le 8 ]] && tabfutur[${x},${y}]= 0
     
            done
    done
     
                     for((x=1;x<=line;x++)); do
                            for((y=1;y<=colonne;y++)); do
                                    tab[$x,$y]=${tabfutur[$x,$y]}
                            done
                     done
    }
     
    ############## START ########################
    start_fonction()
    {
    while true; do
    calcul
    afficher
    done
    }
     
     
    run()
    {
    init
    afficher
    demande
    }

    je pense que le problème vient de mon tableau car il ne s'affiche pas mais j'arrive pas a voir ou justement

    le start et run c'est ezzmazz qui ma guidé la dessus donc un grand merci a Ezzmazz pour l'aide apporté depuis le début et aussi a vous qui arrivez a supporter et a me guider

  15. #15
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Août 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Août 2010
    Messages : 48
    Points : 48
    Points
    48
    Par défaut
    Ben en fait c est parce que tu n'appelles JAMAIS aucune de tes fonctions dans le main
    Pour simplifier, ton code s'arrete ligne 22. Tout le reste, c est de la definition de fonctions qui ne sont pas appelees.

  16. #16
    Membre du Club
    Profil pro
    Futur administrateur systèmes
    Inscrit en
    Décembre 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Futur administrateur systèmes

    Informations forums :
    Inscription : Décembre 2010
    Messages : 57
    Points : 49
    Points
    49
    Par défaut
    Je vais essayer de t'aider ( j'ai juste regarder rapidement ton script ) :

    Ton code s'arrête effectivement à la ligne 22.

    - En ajoutant un " run " en dessous de ta fonction run, ça bougera déjà un peu plus. Ça va permette d'executer le reste des fonctions.
    - Tu n'as pas besoin d'initialiser ton tableau futur.

    Je regarderai plus en détails plus tard pour t'indiquer ce que tu peux modifier !

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
     
    #!/bin/bash
    #//déclaration des cellules
     
    #//déclarer le tableau 
     
    CELL=0
    line=0
    colonne=0
     
     
    echo -e "\033[96mgame of life"
     
    declare -A tab
    declare -A tabfutur
     
     
    echo "combien de ligne" 
    read line
     
    echo "combien de colonne"
    read colonne
     
    ######## FONCTION D'INITIALISATION TABLEAU #######
     
    init()
     
    {
            for((x=1;x<=line;x++)); do
                    for((y=1;y<=colonne;y++)); do
                            tab[$x,$y]=$((RANDOM %2))
                            #"."
                    done
            done
    }
     
    ######## FONCTION D'AFFICHER TABLEAU #########
     
    afficher()
     
    {
    init
    clear
    echo ""
    echo -e "\033[96mgame of life"
     
    f1="%$((${#line}+1))s"
    f2="%3s"
     
            for((x=1;x<=line;x++)); do
                    printf "$f2"
            done
            echo " "
     
            for((y=1;y<=colonne;y++)); do
                    printf "$f1"
     
                    for((x=1;x<=line;x++)); do
                    printf "$f2" ${tab[$x,$y]}
                    done
            echo " "
            done
    }
     
    ############### DEMANDE COORDONNEE #############
     
    demande()
    {
     
    init
    echo ""
    echo ""
     
    while :
    do
     
            echo -n " Entre les coordonnées ex: [1,1] : "
            echo ">"
            read -r coord
            if [ "$coord" == "n" ]; then
                afficher
            else
                    if [[ "$coord" =~ ^[0-9]+,[0-9]+$ ]] ; then  x=${coord%, *} ;  y=${coord#*, } ;
                            tab[$coord]=$CELL
                            afficher
                            echo ""
                    else
                            demande
     
                    fi
            fi
    done
            start_fonction
    }
     
    ############ CALCUL CELLULE ###############
     
    calcul()
    {
    tput civis
     
    for ((x=1;x<=colonne;x++)); do
             for ((y=1;y<=line;y++)); do
     
                     if [ $x -eq 1 ]; then
                             xg=$colonne
                     else
                             xg=$(($x-1))
                     fi
     
                     if [ $x -eq $colonne ]; then
                             xd=1
                     else
                             xd=$(($x+1))
                     fi
     
     
                     if [ $y -eq 1 ]; then
                             yh=$line
                     else
                             yh=$(($y-1))
                     fi
     
                     if [ $y -eq $line ]; then
                             yb=1
                     else
                             yb=$(($y+1))
                     fi
     
     
                    Compt=0
     
                    # Voisine (x-1,y-1)
                    [[ "${tab[$((xg)),$((yb))]}" == $CELL ]] && ((Compt++))
                    # Voisine (x,y-1)
                    [[ "${tab[$((x)),$((yb))]}" ==  $CELL ]] && ((Compt++))
                    # Voisine (x+1,y-1)
                    [[ "${tab[$((xd)),$((yb))]}" == $CELL ]] && ((Compt++))
                    # Voisine (x-1,y)
                    [[ "${tab[$((xg)),$((y))]}" ==  $CELL ]] &&  ((Compt++))
                    # Voisine (x+1,y)
                    [[ "${tab[$((xd)),$((y))]}" ==  $CELL ]] && ((Compt++))
                    # Voisine (x-1,y+1)
                    [[ "${tab[$((xg)),$((yh))]}" == $CELL ]] && ((Compt++))
                    # Voisine (x, y+1)
                    [[ "${tab[$((x)),$((yh))]}" ==  $CELL ]] && ((Compt++))
                    # Voisine (x+1,y+1)
                    [[ "${tab[$((xd)),$((yh))]}" == $CELL ]] && ((Compt++))
     
     
                     # Si vivante et deux voisines, elle survit
                    [[ ${Compt} -eq 2 ]] && tabfutur[${x},${y}]=${tab[$x,$y]}
     
                    # Si 3 voisines, soit survie, soit naissance 
                    [[ ${Compt} -eq 3 ]] && tabfutur[${x},${y}]= $CELL
     # Si entre 4 et 8, mort par surpopulation
                    [[ ${Compt} -ge 4 ]] && [[ ${Compt} -le 8 ]] && tabfutur[${x},${y}]= 0
     
            done
    done
     
                     for((x=1;x<=line;x++)); do
                            for((y=1;y<=colonne;y++)); do
                                    tab[$x,$y]=${tabfutur[$x,$y]}
                            done
                     done
    }
     
    ############## START ########################
    start_fonction()
    {
    while true; do
    calcul
    afficher
    done
    }
     
     
    run()
    {
    init
    afficher
    demande
    }
     
     
    run



    voici le code code modifié maintenant je cherche comment afficher mes celulles car elle ne s'affiche plus
    merci pour votre aide

Discussions similaires

  1. Jeu de la vie en bash
    Par Ezzmazz dans le forum Shell et commandes GNU
    Réponses: 34
    Dernier message: 03/02/2019, 11h10
  2. algorithme d'évolution du "jeu de la vie" en caml
    Par nono88 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 13/12/2006, 00h56
  3. Conway's life (jeu de la vie) pour images
    Par O( N ) dans le forum C
    Réponses: 1
    Dernier message: 26/09/2006, 02h13
  4. [Conception] Jeu de la vie
    Par deuscapser dans le forum Général Java
    Réponses: 16
    Dernier message: 09/03/2006, 12h47
  5. [VB] projet à réaliser: Jeu de la vie
    Par mauriiice dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/12/2005, 20h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo