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
   |  
import pygame as pg
import sys
import itertools
 
ELE_LIST = ["feu","eau",]
 
TRANS_DICT = {("feu" ,"eau")   : "vapeur",
              ("vapeur" ,"eau") : "alcool",
              ("alcool","feu") : "molotov"}
 
 
class Dragable(object):
 
    def __init__(self,kind,location):
 
        self.kind = kind
        self.img = self.get_img()
        self.rect = self.img.get_rect(center=location)
        self.selected = False
    def get_img(self):
 
        return pg.image.load(self.kind+"-icon.png").convert_alpha()
 
    def events(self,ev):
        if ev.type == pg.MOUSEBUTTONDOWN and self.rect.collidepoint(ev.pos):
            if ev.button == 1:
                self.selected = True
 
        elif ev.type == pg.MOUSEBUTTONUP:
            if ev.button == 1:
                self.selected = False
 
    def update(self,Surf):
        if self.selected:
            self.rect.center = pg.mouse.get_pos()
        Surf.blit(self.img,self.rect)
 
 
 
class Control(object):
 
    def __init__(self):
        pg.init()
        self.Screen = pg.display.set_mode((1250,850))
        self.bg = pg.image.load("interface.iter.jaune.png").convert()
        self.elements = [Dragable(name,(1150,350+90*i)) for i,name in enumerate(ELE_LIST*2)]
        self.done = False
 
    def event_loop(self):
        for ev in pg.event.get():
            if ev.type==pg.QUIT or (ev.type==pg.KEYDOWN and ev.key==pg.K_ESCAPE):
                self.done = True
 
            for Ele in self.elements:
                Ele.events(ev)
 
    def update(self):
        self.Screen.fill(0)
        self.Screen.blit(self.bg,(0,0))
        [Ele.update(self.Screen) for Ele in self.elements if not Ele.selected]
        [Ele.update(self.Screen) for Ele in self.elements if Ele.selected]
 
    def alchemize(self):
        for Eles in itertools.permutations(self.elements,2):
            if not Eles[0].selected and not Eles[1].selected:
                if Eles[0].rect.colliderect(Eles[1]):
                    self.elements.remove(Eles[0])
                    key = Eles[0].kind,Eles[1].kind
                    if key[0] != key[1]:
                        if key not in TRANS_DICT:
                            key = key[::-1]
                        Eles[1].kind = TRANS_DICT[key]
                        Eles[1].img = Eles[1].get_img()
                    break
 
    def main(self):
        while not self.done:
            self.event_loop()
            self.alchemize()
            self.update()
            pg.display.update()
 
 
if __name__ == "__main__":
 
    RunIt = Control()
    RunIt.main()
    pg.quit();sys.exit() | 
Partager