CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Automate cellulaire avec tkinter

IQsmaxx
IQsmaxx
Niveau 1
24 mai 2021 à 18:29:34

Salut, est-ce que il y aurait quelqu'un qui saurait coder un automate cellulaire simple a l'aide de tkinter ?Voici les règles et le squelette du programme :
le temps est discret. On exécute les cellules dans un ordre que vous fixerez.
Exécuter une cellule signifie faire ´évoluer le passager qui est dans la cellule
si il n’est pas encore arrive à sa destination et qu’il peut bouger.
• un passager avance dans le couloir de 1 cellule par unit´e de temps si il
n’y a personne sur la cellule suivante. Sinon il est bloquée pendant cet
intervalle de temps.
• il y a une seule entrée dans l’avion et un seul passager peut entrer par
unit´e de temps. D`es que l’entr´ee est vide, un nouveau passager arrive si
l’avion n’est pas plein (il y a 180 si`eges et donc 180 passagers qui doivent
arriver `a leur si`ege).
• un passager poss`ede un num´ero de si`ege (sa destination) et il doit la respecter.
• un passager a des bagages `a main (entre 0 et 2) et le coffre `a bagage `a une
capacit´e illimit´ee. Donc le passager pourra toujours d´eposer ses bagages
mais cela prend du temps.
1
• lorsque le passager a fini d’avancer dans le couloir, il doit ranger ses
bagages avant de rejoindre son siège. Mettre un bagage dans le coffre
prend une unité de temps par bagage et pendant ce temps l`a, le passager
ne bouge pas et il bloque le couloir.
• Pour rejoindre son siège, si le passager est bloquée par un autre passager
déjà arrivé, alors les deux passagers doivent bouger en même temps en
´échangeant leur cellule.
Par exemple, supposons que le passager 6 voulant rejoindre le siège (1,5)
est en (4,5) , et il est bloqué par le passager 7 arrive à sa place en (2,5),
alors pendant le un intervalle de temps, les passagers 6 et 7 ´échangent leur
position. Puis pendant l’ intervalle suivant, le client 6 rejoint la cellule
(1, 5), il libère (2, 5) que le client 7 peut alors rejoindre

import tkinter as tk
import random as rd
SIEGES_VIDES = "steel blue"
COULOIR = "light steel blue"
ZERO_BAGAGE = "yellow"
UN_BAGAGE = "orange"
DEUX_BAGAGES = "red"
SIEGES_OCCUPEES = "green"
LARGEUR = 140
HAUTEUR = 600

screen = tk.Tk()
screen.title("Simulation avion")

COTE = 20
NB_COl = LARGEUR // COTE
NB_LINE = HAUTEUR // COTE

  1. Initialisations des listes et des variables

tableau = None
coordonnées = None #Numéros des places dans l'avion
liste_passagers = None #Liste des 180 passagers
voisins_milieu = 0
voisins_gauche = 0
voisisns_droite = 0

def sieges_couloir():
global COTE, SIEGES, COULOIR
"""Création des sièges de l'avion et du couloir de l'avion"""
for i in range (7): #Création des colonnes
for j in range (30): #Création des lignes
celule = canvas.create_rectangle(i*COTE, j*COTE, (1+i)*COTE, (1+j)*COTE, fill = SIEGES)
if i == 3:
canvas.itemconfig(celule, fill = COULOIR)

def coordonnees_sieges():
"""Attribue une coordonnée à chaques sièges de l'avion sous forme
de tableau à deux dimensions"""
coordonnées = []
for col in range (1,4):
for line in range (1,31):
coordonnées.append([col, line]) #Sièges à gauche du couloir
for col in range (4, 8):
for line in range (1, 31):
coordonnées.append([col, line]) #Sièges à droite du couloir
return coordonnées

def tableau_2D():
"""Création d'un tableau à deux dimension permettant de connaître
le rôle de chaque celule, le couloir est initilisé à 0, tandis
que les sièges sont initialisés à 1"""
global tableau
tableau = []
for i in range(NB_COl):
if i == 3:
tableau.append([0]*NB_LINE) #Couloir
else:
tableau.append([1]*NB_LINE) #Sièges
return tableau

def création_passagers_bagages():
"""Création des 180 passagers numéroté de 0 à 179 à qui on affecte un chiffre
entre 0 et 2 qui correspond au nombre de bagage(s) et une place au sein de l'avion"""
global coordonnées
liste_passagers = []
place = []
max_nb_hasard = 179
nb = 0
for passagers in range (180):
liste_passagers.append([passagers]) #Donne un numéro à chaque passager entre 0 et 179
for bagages in range (1):
liste_passagers[passagers].append(rd.randint(0,2)) #Donne entre 0 et 2 bagages aléatoirement
for i in range(1, 8): #Création des coordonnées des places de l'avion
if i == 4: #Exclus la colonne du couloir pour avoir les coordonnées des 180 sièges
continue
for j in range(1, 31):
place.append([i , j]) #Ajoute les coordonnées dans la liste place
for i in range(180):
nb_hasard = rd.randint(0, max_nb_hasard) #Choisi un nombre au hasard
liste_passagers[nb].append(place[nb_hasard]) #Ajoute la coordonnée dans la liste liste_passagers à partir de l'indice donné aléatoirement par nb_hasard
del place[nb_hasard] #Supprime la coordonnée de la liste place
max_nb_hasard -= 1
nb += 1
return liste_passagers

def voisins_couloir():
"""Examine le couloir de l'avion pour savoir si les passagers ont
des voisins devant eux"""
global tableau
voisins_milieu = 0
for v in range(3, 4):
for w in range(NB_LINE):
if tableau[v][w] != 0 and [v, w] != [i, j]:
voisins_milieu += 1
return voisins_milieu

def voisins_sièges_gauche():
"""Examine les sièges à gauche du couloir pour voir si un passager
est déjà placé"""
global tableau
voisins_gauche = 0
for v in range(0, 3):
for w in range(NB_LINE):
if tableau[v][w] != 0 and [v, w] != [i, j]:
voisins_gauche += 1
return voisins_gauche

def voisins_sièges_droite():
global tableau
"""Examine les sièges à droite du couloir pour voir si un passager
est déjà placé"""
voisins_droite = 0
for v in range(4, 7):
for w in range(NB_LINE):
if tableau[v][w] != 0 and [v, w] != [i, j]:
voisins_droite += 1
return voisins_droite

def legende():
"""Création d'une légende pour définir chaques carrés de couleur"""
canvas.create_rectangle((180, 40), (200, 60), fill = SIEGES_VIDES)
leg_siege = tk.Label(screen, text = "Siège", font = "Arial")
leg_siege.grid(column = 1, row = 0)

canvas.create_rectangle((180, 140), (200, 160), fill = COULOIR)
leg_couloir = tk.Label(screen, text = "Couloir", font = "Arial")
leg_couloir.grid(column =1, row = 1)

canvas.create_rectangle((180, 240), (200, 260), fill = ZERO_BAGAGE)
leg_zero_bagage = tk.Label(screen, text = "Passager avec aucun bagage", font = "Arial")
leg_zero_bagage.grid(column = 1, row = 2)

canvas.create_rectangle((180, 340), (200, 360), fill = UN_BAGAGE)
leg_un_bagage = tk.Label(screen, text = "Passager avec un bagage", font = "Arial")
leg_un_bagage.grid(column = 1, row = 3)

canvas.create_rectangle((180, 440), (200, 460), fill = DEUX_BAGAGES)
leg_deux_bagage = tk.Label(screen, text = "Passager avec deux bagages", font = "Arial")
leg_deux_bagage.grid(column = 1, row =4)

canvas.create_rectangle((180, 540), (200, 560), fill = SIEGES_OCCUPEES)
leg_place = tk.Label(screen, text = "Passager assis à sa place", font = "Arial")
leg_place.grid(column = 1, row = 5)

    1. ############################## PROGRAMME PRINCIPALE

canvas = tk.Canvas(screen, width = 280, height = 600, borderwidth=0, highlightthickness=0, bg = "black")
sieges_couloir()
legende()

canvas.grid(column = 0, row = 0, rowspan = 6)

screen.mainloop()

Ce serait incroyable si vous pouviez le faire, merci d'avance.

Bunyan
Bunyan
Niveau 17
24 mai 2021 à 18:59:53

Bonjour !

Nous avons pour habitude de NE PAS faire les devoirs (ou le travail) des gens en règle général :)
Indique plutôt OÙ tu galères et quels sont tes problèmes, et tu auras plus de chances d'avoir un coup de main (et si tu montres un peu de respect pour tes lecteurs, genre en utilisant la balise code où en mettant ton code sur un pastebin ou assimilé, tu augmenterais tes chances d'avoir un coup de main).

IQsmaxx
IQsmaxx
Niveau 1
24 mai 2021 à 19:38:43

Salut désolé je ne connaissais pas cette fonction pour poster le code, c'était pas du tout un manque de respect. Je comprend tout a fais votre politique et je la respecte. Du coup je galère sur la programmation, j'ai compris la consigne mais je sais pas du tout comment le coder.Si tu pourrais m'aider ce serait sympa.
Merci d'avance

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment