1 year ago

#369374

test-img

Slayne

How to move button in pysimplegui

hello I have to make a game for a school project but I'm stuck on a part I use py simple gui to display my window and create the game interface only I get stuck or I have to move buttons randomly, unfortunately I don't know how to move objects on python. if anyone can help me I would be extremely grateful

I tried to do it with tkinter but it makes me change tt my code

"""
layout,<l-->list
C,L,randcol,ranligne-->int

Regle:
    Une partie est composee de deux manches. Les joueurs changent de role a chaque manche.
    En fin de partie, on affiche le pseudonyme et le score du joueur gagnant.

A faire:
-afficher nb de chats/evades-----les pseudonymes des joueurs sont affiches.
-Les gardiens et ‘Chaf’, le chat en chef, peuvent sauter au-dessus d’un robot.
-Les robots se deplacent de facon autonome, a l’horizontal ou a la verticale (mathys).
-A chaque tour, sept chats differents peuvent etre deplace
-Les robots et les gardiens ne peuvent pas penetrer dans la zone d’apparition des chats.


FAIT!!!
-Au debut les chats, gardiens,sorties, bassin apparaissent aux positions indiquees dans la Figure 2.
-position de chaf parmi les quatorze position de la zone d’apparition des chats
-Le bassin est un obstacle infranchissable.
-Les positions initiales des robots sont tirees aleatoirement a chaque debut de manche.

"""
from random import randint
import PySimpleGUI as sg


l = [["" for i in range(11)] for i in range(11)]

l[0][5]="S"
l[1][2],l[1][8]="W","W"
l[2][4],l[2][5],l[2][6]="O","O","O"
l[3][4],l[3][5],l[3][6]="O","O","O"
l[4][0],l[4][10]="S","S"

#Position des chats
randligne=randint(7,10)
randcol=randint(3,7)
l[7][5]="C"
l[8][4],l[8][5],l[8][6]="C","C","C"
l[9][3],l[9][4],l[9][5],l[9][6],l[9][7]="C","C","C","C","C"
l[10][3],l[10][4],l[10][5],l[10][6],l[10][7]="C","C","C","C","C"
while l[randligne][randcol]!="C":
    randligne=randint(7,10)
    randcol=randint(3,7)
l[randligne][randcol]="Ç"

for i in range (9):
    randligne=randint(0,10)
    randcol=randint(0,10)
    while l[randligne][randcol]!="":
        randligne=randint(0,10)
        randcol=randint(0,10)
    l[randligne][randcol]='R'
L = C = 11
layout=[[[sg.Text('Entrer vos nom de jeu'),sg.Text('Tour de ')],
          [sg.Text('Joueur1', size=(15, 1)), sg.InputText('joueur1'),sg.Text('Point', size=(5, 1))],
          [sg.Text('Joueur2', size=(15, 1)), sg.InputText('joueur2'),sg.Text('Point', size=(5, 1))],
          [sg.Button('ok'), sg.Button('annuler')]],
        [[sg.Button(l[i][j],button_color=('black'), size=(8, 4), key=(i,j),
                    pad=(0,0)) for j in range(C)] for i in range(L)]]

# Creation de la fenetre
window=sg.Window('EscaT Game',layout=layout)


e0,e1=0,0#coordonnees du bouton appuyé
dec=[]#coordonnees des cases a décolorer
TOUR=0
DEMARRE=0
# Boucle de gestion des evenements
while True:
    event, values = window.read() # lecture du dernier evenement
    e0,e1=event[0],event[1]
    while event!='ok':#remplir noms et appuyer sur ok pour commencer
        event, values = window.read() # lecture du dernier evenement
        print('faire clignoter "ok" et remplir les noms')
    DEMARRE=1
    while DEMARRE==1 :
        if TOUR==0:
            for i in range(7,11):#coloration de la maison des chats
                for j in range (3,8):
                    if l[i][j] == "C" or l[i][j]=="Ç":
                        window[i,j].Update(button_color=('black', 'NavajoWhite3'))
            for i in range(2,4):#coloration de leau
                for j in range (4,7):
                    if l[i][j] == "O":
                        window[i,j].Update(button_color=('navy'))
            window[0,5].Update(button_color=('black','white'))
            window[4,0].Update(button_color=('black','white'))
            window[4,10].Update(button_color=('black','white'))

        elif l[e0][e1] == "C" or l[e0][e1]=="Ç": #Joueur1 veut bouge un chat(chef)
            window[e0,e1].Update(button_color=('black', 'grey'))

        elif l[e0][e1] == "W": # le joueur2 veut bouger un gardient

            for i in range (3):# boucle qui grise les mvt possible
                for j in range(3):
                    e0,e1=event[0]-1+i,event[1]-1+j
                    if len(l[e0][e1])==0:
                        window[e0,e1].Update(button_color=('grey24'))

    ##########
            # print(sg.Button([e0][e1],button_color==('black')))
            # if (window[e0,e1].button_color==('grey','grey'))==True: #le joueur bouge un gardien
            #     window[e0,e1].Update(button_color=('blue', 'blue'))

    ##########

            # for i in range (3):# boucle qui degrise les cases
            #     for j in range(3):
            #         e0,e1=event[0]-1+i,event[1]-1+j
            #         if len(l[e0][e1])==0:
            #             window[e0,e1].Update(button_color=('white', 'black'))#degrisement

        elif event == sg.WIN_CLOSED: # arrete la boucle quand on ferme la fenetre
            break


        TOUR+=1
        event, values = window.read() # lecture du dernier evenement
        e0,e1=event[0],event[1]



window.close() # Destruction de la fenetre

python

button

move

pysimplegui

0 Answers

Your Answer

Accepted video resources