Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Pygame]-Détecter la couleur ou l'on clique

Sujet résolu
6 avril 2011 à 9:38:27

Alors oui j'avais bien mise la meme méthode d'import .

sinon , la question que tu n'as pas compris je vais mieux la formulé :

imaginons l'on a une liste contenant des noms d'objet par exemple :

liste_test = [compteur, variable, dicionnaire , autres]


y aurait-il un moyen d'en récuperer pour ensuite les mettres dans une fonction print par exemple .

en fait transformé les noms d'objet en en chaine de type str()


sa peut paraitre louche , mais c'etait juste une question comme sa :p


PS : En tout cas ton module "Form" .. c'est vraiment génial :)
sa ma donné l'idée de faire un systeme de profil pour les joueurs .
  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2011 à 10:33:03

un truc avec locals() .. mais parait que c'est très mal ...

j'ai commencé un code si ça t'intéresse.


from random import randint
from pygame import *
time.Clock() # initialise l'orloge en moins barbant

# creation du mask noir
mask = Surface((640,640),SRCALPHA)
mask.fill((0,0,0))
draw.circle(mask,(0,0,0,0),(320,320),320,0)
draw.circle(mask,(0,0,0),(320,320),140,0)
draw.line(mask,(0,0,0),(320,0),(320,640),9)
draw.line(mask,(0,0,0),(0,320),(640,320),9)

# creation de la fenetre
scr = display.set_mode((640,640))

# init des constantes et affichage du plateau par la meme occasion
DarkColor = (100,0,0),(0,0,100),(0,100,0),(100,0,100)
LightColor = (255,0,0),(0,0,255),(0,255,0),(255,0,255)
Rectangle = scr.fill(DarkColor[0],(0,0,320,320)), scr.fill(DarkColor[1],(320,0,320,320)), scr.fill(DarkColor[2],(0,320,320,320)), scr.fill(DarkColor[3],(320,320,320,320))
scr.blit(mask,(0,0))
display.flip()

# joue la sequence de simon
def play_sequence():
    print "regarde !!!"
    for chx in SimonSeq:
        time.wait(500)
        scr.fill(LightColor[chx],Rectangle[chx])
        display.update(scr.blit(mask,(0,0)))
        time.wait(500)
        scr.fill(DarkColor[chx],Rectangle[chx])
        display.update(scr.blit(mask,(0,0)))

Game = True
SimonSeq = []
while Game:
    # simon ajoute une valeur a sa sequence puis la joue
    SimonSeq.append(randint(0,3))
    PlayerSeq = []
    x = 0
    time.wait(500)
    play_sequence()
    event.clear()
    print 'a toi !!!'
    laps = 1000+len(SimonSeq)*500
    limit = time.get_ticks() + laps
    # etc ...
    while x < len(SimonSeq):
        ev = event.poll()
        color = scr.get_at(mouse.get_pos())
        # etc ...
        if ev.type == MOUSEBUTTONDOWN and ev.button == 1 and color in DarkColor:
            chx = DarkColor.index(color)
            scr.fill(LightColor[chx],Rectangle[chx])
            scr.blit(mask,(0,0))
            PlayerSeq.append(chx)
            x += 1
            if PlayerSeq != SimonSeq[:len(PlayerSeq)]:
                Game = False
                break
            while mouse.get_pressed()[0] and scr.get_at(mouse.get_pos()) == LightColor[chx] and time.get_ticks() < limit:
                event.pump()
                draw.arc(scr,(255,100,200),(190,190,260,260),0,(6.28/laps)*(laps-limit+time.get_ticks()),120)
                display.flip()
            scr.fill(DarkColor[chx],Rectangle[chx])
            scr.blit(mask,(0,0))
        if time.get_ticks() > limit:
            Game = False
            break
        draw.arc(scr,(255,100,200),(190,190,260,260),0,(6.28/laps)*(laps-limit+time.get_ticks()),120)
        display.flip()



edit: ajout d'une temporisation.
  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

6 avril 2011 à 11:06:36

sa marche nikel .
Je vois des points sur lesquels je me prenait la tete alors toi c'est réglé vite et bien .. l'exemple qui me vient c'est quand tu joue la séquence de simon .

moi je n'ai pas trouvé mieux que de creer une variable qui est incrementé a 1 et ensuite remise a zero pour rendre la couleur de simon et ensuite rendre le fond ..
En 5 ligne tu règle le tout lol!

sa me prend le double voir le triple de ligne et en plus sa me force a creer 2 variables..

bon allé , un petit café et je me remet sur mon simon , j'aimerais bien posté la nouvelle version aujourd'hui..
je vois que j'ai de la concurence


^^:p
la moindre étape sa me prend des heures par moment , la plupart du temp c'est juste une question de logique ..
l'autre par du temp c'est que a force de creer des variables je m'y perd , au début je les nommes bien , des noms facilement identifiable et au bout d'un moment je me met a utilisé des lettres simples .. ce qui ma ammené a bien des soucis .. xD


a ton niveau il te faudrait des exercices plus costaud .. du style une simulation de rubiks cube ;)
  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2011 à 12:41:28

Citation : PsyloW


a ton niveau il te faudrait des exercices plus costaud .. du style une simulation de rubiks cube ;)



c'est exagéré dans la mesure où c'est la seule lib que je connaisse ... mais merci pour le compliment.
j'ai ajouté la temporisation à mon précédant code.
  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

6 avril 2011 à 21:25:44

Pas mal le coup du chrono !

Bon sinon pour le rubiks , je me rend pas trop compte de la difficulté d'utilisé la 3D , par contre je crois avoir compris que tu aimes les jeux style casse-tete ! alors en voici 2 qui peuvent etre fait en 2D :

- La tour d'Hanoï , techniquement pas trop dur je pense -
Tour d'Hanoi

- La tour de babel , il est cylindrique mais on peu le mettre a plat . un peu plus dur a mettre en place que le précédent

:-°
  • Partager sur Facebook
  • Partager sur Twitter