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