Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- import paho.mqtt.client as mqtt
- import time
- import json
- pygame.init()
- tela_largura = 1201;
- tela_altura = 607;
- win = pygame.display.set_mode((tela_largura,tela_altura))
- pygame.display.set_caption("Trabalho de SIM")
- clock = pygame.time.Clock()
- bg = pygame.image.load('Ativos/bg.png')
- spr_torno = pygame.image.load('Ativos/spr_torno.png')
- spr_fresa = pygame.image.load('Ativos/spr_fresa.png')
- spr_asrs = pygame.image.load('Ativos/spr_asrs.png')
- spr_trobo = pygame.image.load('Ativos/spr_trobo.png')
- spr_frobo = pygame.image.load('Ativos/spr_frobo.png')
- spr_arobo = pygame.image.load('Ativos/spr_arobo.png')
- spr_carro = pygame.image.load('Ativos/spr_carro.png')
- spr_ca = pygame.image.load('Ativos/spr_ca.png')
- spr_cb = pygame.image.load('Ativos/spr_cb.png')
- spr_cc = pygame.image.load('Ativos/spr_cc.png')
- spr_cd = pygame.image.load('Ativos/spr_cd.png')
- spr_ce = pygame.image.load('Ativos/spr_ce.png')
- spr_cf = pygame.image.load('Ativos/spr_cf.png')
- spr_cg = pygame.image.load('Ativos/spr_cg.png')
- spr_ch = pygame.image.load('Ativos/spr_ch.png')
- spr_ci = pygame.image.load('Ativos/spr_ci.png')
- #icone = pygame.image.load('Ativos/icone.png')
- #pygame.display.set_icon(icone)
- tamanho_esteira = 30
- pos_asrs = 0
- pos_torno = 10
- pos_fresa = 20
- def on_log(client, userdata, level, buf):
- print("log: "+buf)
- def on_connect(client, userdata, flags, rc):
- if rc==0:
- print("Conexao OK")
- else:
- print("Nao conectado, erro: ",rc)
- def on_message(client, userdata, message):
- if message.topic == 'carros/posicao':
- posicao = []
- mensagem = json.loads(message.payload)
- posicao = [str(mensagem['carro1']), str(mensagem['carro2']), str(mensagem['carro3']), str(mensagem['carro4'])]
- print("Mensagem recebida")
- print("Topico da mensagem=",message.topic)
- troca_posicao(message.topic, posicao)
- if message.topic == 'carros/entidade':
- entidade = []
- mensagem = json.loads(message.payload)
- entidade = [str(mensagem['carro']), str(mensagem['entidade'])]
- print("Mensagem recebida")
- print("Topico da mensagem=",message.topic)
- troca_entidade(message.topic, entidade)
- if message.topic == 'carros/numero':
- mensagem = str(message.payload.decode("utf-8"))
- print("Mensagem recebida: " ,str(message.payload.decode("utf-8")))
- print("Topico da mensagem=",message.topic)
- else:
- print("Mensagem recebida: " ,str(message.payload.decode("utf-8")))
- print("Topico da mensagem=",message.topic)
- broker_address = "192.168.11.6"
- client = mqtt.Client("sim") #criar nova instancia
- client.on_connect = on_connect #anexar funcao ao retorno de chamada
- client.on_log = on_log
- client.on_message = on_message
- def inscrever_topicos():
- client.subscribe("carros/numero")
- client.subscribe("carros/posicao")
- client.subscribe("carros/entidade")
- class torno(object):
- def __init__(self,x,y):
- self.x = x
- self.y = y
- self.animacao = 0
- def draw(self, win):
- if self.animacao == 0:
- win.blit(spr_torno,(self.x,self.y))
- class fresa(object):
- def __init__(self,x,y):
- self.x = x
- self.y = y
- self.animacao = 0
- def draw(self, win):
- if self.animacao == 0:
- win.blit(spr_fresa,(self.x,self.y))
- class asrs(object):
- def __init__(self,x,y):
- self.x = x
- self.y = y
- self.animacao = 0
- def draw(self, win):
- if self.animacao == 0:
- win.blit(spr_asrs,(self.x,self.y))
- class robo_torno(object):
- def __init__(self,x,y):
- self.x = x
- self.y = y
- self.animacao = 0
- def draw(self, win):
- if self.animacao == 0:
- win.blit(spr_trobo,(self.x,self.y))
- class robo_fresa(object):
- def __init__(self,x,y):
- self.x = x
- self.y = y
- self.animacao = 0
- def draw(self, win):
- if self.animacao == 0:
- win.blit(spr_frobo,(self.x,self.y))
- class robo_asrs(object):
- def __init__(self,x,y):
- self.x = x
- self.y = y
- self.animacao = 0
- def draw(self, win):
- if self.animacao == 0:
- win.blit(spr_arobo,(self.x,self.y))
- class carro(pygame.sprite.Sprite):
- def __init__(self,spr,x,y,visivel):
- self.spr, self.x, self.y = spr, x, y
- self.visivel = visivel
- def draw(self, win):
- if self.visivel == True:
- win.blit(self.spr,(self.x,self.y))
- class entidade(object):
- def __init__(self,spr,x,y,visivel):
- self.x = x + 10
- self.y = y - 35
- self.spr = spr
- self.visivel = visivel
- def draw(self, win):
- if self.visivel == True:
- win.blit(self.spr,(self.x,self.y))
- def transforma_posicao(posicao):
- if posicao == 1:
- x, y = 850, 100
- return x, y
- elif posicao == 2:
- x, y = 786, 100
- return x, y
- elif posicao == 3:
- x, y = 722, 100
- return x, y
- elif posicao == 4:
- x, y = 658, 100
- return x, y
- elif posicao == 5:
- x, y = 594, 100
- return x, y
- elif posicao == 6:
- x, y = 530, 100
- return x, y
- elif posicao == 7:
- x, y = 466, 100
- return x, y
- elif posicao == 8:
- x, y = 402, 100
- return x, y
- elif posicao == 9:
- x, y = 335, 100
- return x, y
- elif posicao == 10:
- x, y = 335, 160
- return x, y
- elif posicao == 11:
- x, y = 335, 223
- return x, y
- elif posicao == 12:
- x, y = 335, 283
- return x, y
- elif posicao == 13:
- x, y = 335, 344
- return x, y
- elif posicao == 14:
- x, y = 335, 404
- return x, y
- elif posicao == 15:
- x, y = 335, 465
- return x, y
- elif posicao == 16:
- x, y = 402, 465
- return x, y
- elif posicao == 17:
- x, y = 469, 465
- return x, y
- elif posicao == 18:
- x, y = 532, 465
- return x, y
- elif posicao == 19:
- x, y = 595, 465
- return x, y
- elif posicao == 20:
- x, y = 658, 465
- return x, y
- elif posicao == 21:
- x, y = 721, 465
- return x, y
- elif posicao == 22:
- x, y = 784, 465
- return x, y
- elif posicao == 23:
- x, y = 847, 465
- return x, y
- elif posicao == 24:
- x, y = 910, 465
- return x, y
- elif posicao == 25:
- x, y = 910, 404
- return x, y
- elif posicao == 26:
- x, y = 910, 344
- return x, y
- elif posicao == 27:
- x, y = 910, 283
- return x, y
- elif posicao == 28:
- x, y = 910, 223
- return x, y
- elif posicao == 29:
- x, y = 910, 163
- return x, y
- elif posicao == 30:
- x, y = 910, 100
- return x, y
- else:
- x, y = 850, 100
- return x, y
- def troca_posicao(topico,mensagem):
- if topico == 'carros/numero':
- numero_carros = int(mensagem)
- if topico == ('carros/posicao'):
- posicao = int(mensagem[0])
- x, y = transforma_posicao(posicao)
- carro1.x, carro1.y = x, y
- entidade1.x, entidade1.y = x + 10, y -35
- posicao = int(mensagem[1])
- x, y = transforma_posicao(posicao)
- carro2.x, carro2.y = x, y
- entidade2.x, entidade2.y = x + 10, y -35
- posicao = int(mensagem[2])
- x, y = transforma_posicao(posicao)
- carro3.x, carro3.y = x, y
- entidade3.x, entidade3.y = x + 10, y -35
- posicao = int(mensagem[3])
- x, y = transforma_posicao(posicao)
- carro4.x, carro4.y = x, y
- entidade4.x, entidade4.y = x + 10, y -35
- def troca_entidade(topico,mensagem):
- carro = int(mensagem[0])
- entidade = str(mensagem[1])
- print(carro)
- print(entidade)
- if carro == 1:
- if entidade == 'engrenagem_bruta':
- entidade1.spr = spr_ca
- if entidade == 'eixo_bruto':
- entidade1.spr = spr_cb
- if entidade == 'eixo_usinado':
- entidade1.spr = spr_cc
- if entidade == 'descarte':
- entidade1.spr = spr_cd
- if entidade == 'engrenagem_usinada':
- entidade1.spr = spr_ce
- if entidade == 'conjunto':
- entidade1.spr = spr_cf
- if entidade == 'carcaca_usinada':
- entidade1.spr = spr_cg
- if entidade == 'carcaca_bruta':
- entidade1.spr = spr_ch
- if entidade == 'caixa_pronta':
- entidade1.spr = spr_ci
- if carro == 2:
- if entidade == 'engrenagem_bruta':
- entidade2.spr = spr_ca
- if entidade == 'eixo_bruto':
- entidade2.spr = spr_cb
- if entidade == 'eixo_usinado':
- entidade2.spr = spr_cc
- if entidade == 'descarte':
- entidade2.spr = spr_cd
- if entidade == 'engrenagem_usinada':
- entidade2.spr = spr_ce
- if entidade == 'conjunto':
- entidade2.spr = spr_cf
- if entidade == 'carcaca_usinada':
- entidade2.spr = spr_cg
- if entidade == 'carcaca_bruta':
- entidade2.spr = spr_ch
- if entidade == 'caixa_pronta':
- entidade2.spr = spr_ci
- if carro == 3:
- if entidade == 'engrenagem_bruta':
- entidade3.spr = spr_ca
- if entidade == 'eixo_bruto':
- entidade3.spr = spr_cb
- if entidade == 'eixo_usinado':
- entidade3.spr = spr_cc
- if entidade == 'descarte':
- entidade3.spr = spr_cd
- if entidade == 'engrenagem_usinada':
- entidade3.spr = spr_ce
- if entidade == 'conjunto':
- entidade3.spr = spr_cf
- if entidade == 'carcaca_usinada':
- entidade3.spr = spr_cg
- if entidade == 'carcaca_bruta':
- entidade3.spr = spr_ch
- if entidade == 'caixa_pronta':
- entidade3.spr = spr_ci
- if carro == 4:
- if entidade == 'engrenagem_bruta':
- entidade4.spr = spr_ca
- if entidade == 'eixo_bruto':
- entidade4.spr = spr_cb
- if entidade == 'eixo_usinado':
- entidade4.spr = spr_cc
- if entidade == 'descarte':
- entidade4.spr = spr_cd
- if entidade == 'engrenagem_usinada':
- entidade4.spr = spr_ce
- if entidade == 'conjunto':
- entidade4.spr = spr_cf
- if entidade == 'carcaca_usinada':
- entidade4.spr = spr_cg
- if entidade == 'carcaca_bruta':
- entidade4.spr = spr_ch
- if entidade == 'caixa_pronta':
- entidade4.spr = spr_ci
- def refazerJanela():
- win.blit(bg, (0,0))
- torno.draw(win)
- fresa.draw(win)
- asrs.draw(win)
- carro1.draw(win)
- carro2.draw(win)
- carro3.draw(win)
- carro4.draw(win)
- entidade1.draw(win)
- entidade2.draw(win)
- entidade3.draw(win)
- entidade4.draw(win)
- robo_torno.draw(win)
- robo_fresa.draw(win)
- robo_asrs.draw(win)
- pygame.display.update()
- time.sleep(0.5)
- def conectar():
- print("Conectando ao broker")
- client.connect(broker_address)
- client.loop_start()
- time.sleep(0.5)
- torno = torno(450,490)
- fresa = fresa(1080,130)
- asrs = asrs(15,100)
- robo_torno = robo_torno(600,380)
- robo_fresa = robo_fresa(930,180)
- robo_asrs = robo_asrs(230,170)
- carro1 = carro(spr_carro,850,100,True)
- carro2 = carro(spr_carro,850,100,True)
- carro3 = carro(spr_carro,850,100,True)
- carro4 = carro(spr_carro,850,100,True)
- entidade1 = entidade(spr_ca,carro1.x,carro1.y,True)
- entidade2 = entidade(spr_cb,carro2.x,carro2.y,True)
- entidade3 = entidade(spr_cc,carro3.x,carro3.y,True)
- entidade4 = entidade(spr_cd,carro4.x,carro4.y,True)
- run = True
- conectar()
- inscrever_topicos()
- while run:
- tecla = pygame.key.get_pressed()
- for event in pygame.event.get():
- if (event.type == pygame.QUIT) or (tecla[pygame.K_SPACE]):
- run = False
- refazerJanela()
- time.sleep(3)
- client.loop_stop()
- pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment