lemueltra

5pygame_sim

Nov 18th, 2018
393
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.63 KB | None | 0 0
  1. import pygame
  2. import paho.mqtt.client as mqtt
  3. import time
  4. import json
  5.  
  6. pygame.init()
  7. tela_largura = 1201;
  8. tela_altura = 607;
  9. win = pygame.display.set_mode((tela_largura,tela_altura))
  10. pygame.display.set_caption("Trabalho de SIM")
  11. clock = pygame.time.Clock()
  12.  
  13. bg = pygame.image.load('Ativos/bg.png')
  14. spr_torno = pygame.image.load('Ativos/spr_torno.png')
  15. spr_fresa = pygame.image.load('Ativos/spr_fresa.png')
  16. spr_asrs = pygame.image.load('Ativos/spr_asrs.png')
  17. spr_trobo = pygame.image.load('Ativos/spr_trobo.png')
  18. spr_frobo = pygame.image.load('Ativos/spr_frobo.png')
  19. spr_arobo = pygame.image.load('Ativos/spr_arobo.png')
  20. spr_carro = pygame.image.load('Ativos/spr_carro.png')
  21. spr_ca = pygame.image.load('Ativos/spr_ca.png')
  22. spr_cb = pygame.image.load('Ativos/spr_cb.png')
  23. spr_cc = pygame.image.load('Ativos/spr_cc.png')
  24. spr_cd = pygame.image.load('Ativos/spr_cd.png')
  25. spr_ce = pygame.image.load('Ativos/spr_ce.png')
  26. spr_cf = pygame.image.load('Ativos/spr_cf.png')
  27. spr_cg = pygame.image.load('Ativos/spr_cg.png')
  28. spr_ch = pygame.image.load('Ativos/spr_ch.png')
  29. spr_ci = pygame.image.load('Ativos/spr_ci.png')
  30. #icone = pygame.image.load('Ativos/icone.png')
  31. #pygame.display.set_icon(icone)
  32.  
  33. tamanho_esteira = 30
  34. pos_asrs = 0
  35. pos_torno = 10
  36. pos_fresa = 20
  37.  
  38. def on_log(client, userdata, level, buf):
  39.     print("log: "+buf)
  40. def on_connect(client, userdata, flags, rc):
  41.     if rc==0:
  42.         print("Conexao OK")
  43.     else:
  44.         print("Nao conectado, erro: ",rc)
  45. def on_message(client, userdata, message):
  46.     if message.topic == 'carros/posicao':
  47.         posicao = []
  48.         mensagem = json.loads(message.payload)
  49.         posicao = [str(mensagem['carro1']), str(mensagem['carro2']), str(mensagem['carro3']), str(mensagem['carro4'])]
  50.         print("Mensagem recebida")
  51.         print("Topico da mensagem=",message.topic)
  52.         troca_posicao(message.topic, posicao)
  53.     if message.topic == 'carros/entidade':
  54.         entidade = []
  55.         mensagem = json.loads(message.payload)
  56.         entidade = [str(mensagem['carro']), str(mensagem['entidade'])]
  57.         print("Mensagem recebida")
  58.         print("Topico da mensagem=",message.topic)
  59.         troca_entidade(message.topic, entidade)
  60.     if message.topic == 'carros/numero':
  61.         mensagem = str(message.payload.decode("utf-8"))
  62.         print("Mensagem recebida: " ,str(message.payload.decode("utf-8")))
  63.         print("Topico da mensagem=",message.topic)
  64.     else:
  65.         print("Mensagem recebida: " ,str(message.payload.decode("utf-8")))
  66.         print("Topico da mensagem=",message.topic)
  67.  
  68. broker_address = "192.168.11.6"
  69. client = mqtt.Client("sim") #criar nova instancia
  70. client.on_connect = on_connect #anexar funcao ao retorno de chamada
  71. client.on_log = on_log
  72. client.on_message = on_message
  73.  
  74. def inscrever_topicos():
  75.     client.subscribe("carros/numero")
  76.     client.subscribe("carros/posicao")
  77.     client.subscribe("carros/entidade")
  78.    
  79. class torno(object):
  80.     def __init__(self,x,y):
  81.         self.x = x
  82.         self.y = y
  83.         self.animacao = 0
  84.     def draw(self, win):
  85.         if self.animacao == 0:
  86.             win.blit(spr_torno,(self.x,self.y))
  87.  
  88. class fresa(object):
  89.     def __init__(self,x,y):
  90.         self.x = x
  91.         self.y = y
  92.         self.animacao = 0
  93.     def draw(self, win):
  94.         if self.animacao == 0:
  95.             win.blit(spr_fresa,(self.x,self.y))
  96.  
  97. class asrs(object):
  98.     def __init__(self,x,y):
  99.         self.x = x
  100.         self.y = y
  101.         self.animacao = 0
  102.     def draw(self, win):
  103.         if self.animacao == 0:
  104.             win.blit(spr_asrs,(self.x,self.y))
  105.  
  106. class robo_torno(object):
  107.     def __init__(self,x,y):
  108.         self.x = x
  109.         self.y = y
  110.         self.animacao = 0
  111.     def draw(self, win):
  112.         if self.animacao == 0:
  113.             win.blit(spr_trobo,(self.x,self.y))
  114.  
  115. class robo_fresa(object):
  116.     def __init__(self,x,y):
  117.         self.x = x
  118.         self.y = y
  119.         self.animacao = 0
  120.     def draw(self, win):
  121.         if self.animacao == 0:
  122.             win.blit(spr_frobo,(self.x,self.y))
  123.  
  124. class robo_asrs(object):
  125.     def __init__(self,x,y):
  126.         self.x = x
  127.         self.y = y
  128.         self.animacao = 0
  129.     def draw(self, win):
  130.         if self.animacao == 0:
  131.             win.blit(spr_arobo,(self.x,self.y))
  132.  
  133. class carro(pygame.sprite.Sprite):
  134.     def __init__(self,spr,x,y,visivel):
  135.         self.spr, self.x, self.y = spr, x, y
  136.         self.visivel = visivel
  137.     def draw(self, win):
  138.         if self.visivel == True:
  139.             win.blit(self.spr,(self.x,self.y))
  140.  
  141. class entidade(object):
  142.     def __init__(self,spr,x,y,visivel):
  143.         self.x = x + 10
  144.         self.y = y - 35
  145.         self.spr = spr
  146.         self.visivel = visivel
  147.     def draw(self, win):
  148.         if self.visivel == True:
  149.             win.blit(self.spr,(self.x,self.y))
  150.  
  151. def transforma_posicao(posicao):
  152.     if posicao == 1:
  153.         x, y = 850, 100
  154.         return x, y
  155.     elif posicao == 2:
  156.         x, y = 786, 100
  157.         return x, y
  158.     elif posicao == 3:
  159.         x, y = 722, 100
  160.         return x, y
  161.     elif posicao == 4:
  162.         x, y = 658, 100
  163.         return x, y
  164.     elif posicao == 5:
  165.         x, y = 594, 100
  166.         return x, y
  167.     elif posicao == 6:
  168.         x, y = 530, 100
  169.         return x, y
  170.     elif posicao == 7:
  171.         x, y = 466, 100
  172.         return x, y
  173.     elif posicao == 8:
  174.         x, y = 402, 100
  175.         return x, y
  176.     elif posicao == 9:
  177.         x, y = 335, 100
  178.         return x, y
  179.        
  180.     elif posicao == 10:
  181.         x, y = 335, 160
  182.         return x, y
  183.     elif posicao == 11:
  184.         x, y = 335, 223
  185.         return x, y
  186.     elif posicao == 12:
  187.         x, y = 335, 283
  188.         return x, y
  189.     elif posicao == 13:
  190.         x, y = 335, 344
  191.         return x, y
  192.     elif posicao == 14:
  193.         x, y = 335, 404
  194.         return x, y
  195.     elif posicao == 15:
  196.         x, y = 335, 465
  197.         return x, y
  198.  
  199.     elif posicao == 16:
  200.         x, y = 402, 465
  201.         return x, y
  202.     elif posicao == 17:
  203.         x, y = 469, 465
  204.         return x, y
  205.     elif posicao == 18:
  206.         x, y = 532, 465
  207.         return x, y
  208.     elif posicao == 19:
  209.         x, y = 595, 465
  210.         return x, y
  211.     elif posicao == 20:
  212.         x, y = 658, 465
  213.         return x, y
  214.     elif posicao == 21:
  215.         x, y = 721, 465
  216.         return x, y
  217.     elif posicao == 22:
  218.         x, y = 784, 465
  219.         return x, y
  220.     elif posicao == 23:
  221.         x, y = 847, 465
  222.         return x, y
  223.     elif posicao == 24:
  224.         x, y = 910, 465
  225.         return x, y
  226.  
  227.     elif posicao == 25:
  228.         x, y = 910, 404
  229.         return x, y
  230.     elif posicao == 26:
  231.         x, y = 910, 344
  232.         return x, y
  233.     elif posicao == 27:
  234.         x, y = 910, 283
  235.         return x, y
  236.     elif posicao == 28:
  237.         x, y = 910, 223
  238.         return x, y
  239.     elif posicao == 29:
  240.         x, y = 910, 163
  241.         return x, y
  242.     elif posicao == 30:
  243.         x, y = 910, 100
  244.         return x, y
  245.     else:
  246.         x, y = 850, 100
  247.         return x, y
  248.  
  249. def troca_posicao(topico,mensagem):
  250.     if topico == 'carros/numero':
  251.         numero_carros = int(mensagem)
  252.     if topico == ('carros/posicao'):
  253.         posicao = int(mensagem[0])
  254.         x, y = transforma_posicao(posicao)
  255.         carro1.x, carro1.y = x, y
  256.         entidade1.x, entidade1.y = x + 10, y -35
  257.  
  258.         posicao = int(mensagem[1])
  259.         x, y = transforma_posicao(posicao)
  260.         carro2.x, carro2.y = x, y
  261.         entidade2.x, entidade2.y = x + 10, y -35
  262.  
  263.         posicao = int(mensagem[2])
  264.         x, y = transforma_posicao(posicao)
  265.         carro3.x, carro3.y = x, y
  266.         entidade3.x, entidade3.y = x + 10, y -35   
  267.  
  268.         posicao = int(mensagem[3])
  269.         x, y = transforma_posicao(posicao)
  270.         carro4.x, carro4.y = x, y
  271.         entidade4.x, entidade4.y = x + 10, y -35
  272.  
  273. def troca_entidade(topico,mensagem):
  274.     carro =  int(mensagem[0])
  275.     entidade = str(mensagem[1])
  276.     print(carro)
  277.     print(entidade)
  278.     if carro == 1:
  279.         if entidade == 'engrenagem_bruta':
  280.             entidade1.spr = spr_ca
  281.         if entidade == 'eixo_bruto':
  282.             entidade1.spr = spr_cb
  283.         if entidade == 'eixo_usinado'
  284.             entidade1.spr = spr_cc
  285.         if entidade == 'descarte':     
  286.             entidade1.spr = spr_cd
  287.         if entidade == 'engrenagem_usinada':   
  288.             entidade1.spr = spr_ce
  289.         if entidade == 'conjunto'
  290.             entidade1.spr = spr_cf
  291.         if entidade == 'carcaca_usinada':  
  292.             entidade1.spr = spr_cg
  293.         if entidade == 'carcaca_bruta':
  294.             entidade1.spr = spr_ch
  295.         if entidade == 'caixa_pronta'
  296.             entidade1.spr = spr_ci
  297.     if carro == 2:
  298.         if entidade == 'engrenagem_bruta':
  299.             entidade2.spr = spr_ca
  300.         if entidade == 'eixo_bruto':
  301.             entidade2.spr = spr_cb
  302.         if entidade == 'eixo_usinado'
  303.             entidade2.spr = spr_cc
  304.         if entidade == 'descarte':     
  305.             entidade2.spr = spr_cd
  306.         if entidade == 'engrenagem_usinada':   
  307.             entidade2.spr = spr_ce
  308.         if entidade == 'conjunto'
  309.             entidade2.spr = spr_cf
  310.         if entidade == 'carcaca_usinada':  
  311.             entidade2.spr = spr_cg
  312.         if entidade == 'carcaca_bruta':
  313.             entidade2.spr = spr_ch
  314.         if entidade == 'caixa_pronta'
  315.             entidade2.spr = spr_ci
  316.     if carro == 3:
  317.         if entidade == 'engrenagem_bruta':
  318.             entidade3.spr = spr_ca
  319.         if entidade == 'eixo_bruto':
  320.             entidade3.spr = spr_cb
  321.         if entidade == 'eixo_usinado'
  322.             entidade3.spr = spr_cc
  323.         if entidade == 'descarte':     
  324.             entidade3.spr = spr_cd
  325.         if entidade == 'engrenagem_usinada':   
  326.             entidade3.spr = spr_ce
  327.         if entidade == 'conjunto'
  328.             entidade3.spr = spr_cf
  329.         if entidade == 'carcaca_usinada':  
  330.             entidade3.spr = spr_cg
  331.         if entidade == 'carcaca_bruta':
  332.             entidade3.spr = spr_ch
  333.         if entidade == 'caixa_pronta'
  334.             entidade3.spr = spr_ci 
  335.     if carro == 4:
  336.         if entidade == 'engrenagem_bruta':
  337.             entidade4.spr = spr_ca
  338.         if entidade == 'eixo_bruto':
  339.             entidade4.spr = spr_cb
  340.         if entidade == 'eixo_usinado'
  341.             entidade4.spr = spr_cc
  342.         if entidade == 'descarte':     
  343.             entidade4.spr = spr_cd
  344.         if entidade == 'engrenagem_usinada':   
  345.             entidade4.spr = spr_ce
  346.         if entidade == 'conjunto'
  347.             entidade4.spr = spr_cf
  348.         if entidade == 'carcaca_usinada':  
  349.             entidade4.spr = spr_cg
  350.         if entidade == 'carcaca_bruta':
  351.             entidade4.spr = spr_ch
  352.         if entidade == 'caixa_pronta'
  353.             entidade4.spr = spr_ci
  354. def refazerJanela():
  355.     win.blit(bg, (0,0))
  356.     torno.draw(win)
  357.     fresa.draw(win)
  358.     asrs.draw(win)
  359.     carro1.draw(win)
  360.     carro2.draw(win)
  361.     carro3.draw(win)
  362.     carro4.draw(win)
  363.     entidade1.draw(win)
  364.     entidade2.draw(win)
  365.     entidade3.draw(win)
  366.     entidade4.draw(win)
  367.     robo_torno.draw(win)
  368.     robo_fresa.draw(win)
  369.     robo_asrs.draw(win)
  370.     pygame.display.update()
  371.     time.sleep(0.5)
  372.  
  373. def conectar():
  374.     print("Conectando ao broker")
  375.     client.connect(broker_address)
  376.     client.loop_start()
  377.     time.sleep(0.5)
  378.  
  379. torno = torno(450,490)
  380. fresa = fresa(1080,130)
  381. asrs = asrs(15,100)
  382. robo_torno = robo_torno(600,380)
  383. robo_fresa = robo_fresa(930,180)
  384. robo_asrs = robo_asrs(230,170)
  385.  
  386. carro1 = carro(spr_carro,850,100,True)
  387. carro2 = carro(spr_carro,850,100,True)
  388. carro3 = carro(spr_carro,850,100,True)
  389. carro4 = carro(spr_carro,850,100,True)
  390.  
  391. entidade1 = entidade(spr_ca,carro1.x,carro1.y,True)
  392. entidade2 = entidade(spr_cb,carro2.x,carro2.y,True)
  393. entidade3 = entidade(spr_cc,carro3.x,carro3.y,True)
  394. entidade4 = entidade(spr_cd,carro4.x,carro4.y,True)
  395.  
  396. run = True
  397.  
  398. conectar()
  399. inscrever_topicos()
  400.  
  401. while run:
  402.     tecla = pygame.key.get_pressed()
  403.     for event in pygame.event.get():
  404.         if (event.type == pygame.QUIT) or (tecla[pygame.K_SPACE]):
  405.             run = False
  406.     refazerJanela()
  407.     time.sleep(3)      
  408. client.loop_stop()
  409. pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment