lemueltra

sim_2

Nov 15th, 2018
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.29 KB | None | 0 0
  1. import pygame
  2. import paho.mqtt.client as mqtt
  3.  
  4. pygame.init()
  5. tela_largura = 1201;
  6. tela_altura = 607;
  7. win = pygame.display.set_mode((tela_largura,tela_altura))
  8. pygame.display.set_caption("Trabalho de SIM")
  9. clock = pygame.time.Clock()
  10.  
  11. bg = pygame.image.load('Ativos/bg.png')
  12. spr_torno = pygame.image.load('Ativos/spr_torno.png')
  13. spr_fresa = pygame.image.load('Ativos/spr_fresa.png')
  14. spr_asrs = pygame.image.load('Ativos/spr_asrs.png')
  15. spr_trobo = pygame.image.load('Ativos/spr_trobo.png')
  16. spr_frobo = pygame.image.load('Ativos/spr_frobo.png')
  17. spr_arobo = pygame.image.load('Ativos/spr_arobo.png')
  18. spr_carro = pygame.image.load('Ativos/spr_carro.png')
  19. spr_ca = pygame.image.load('Ativos/spr_ca.png')
  20. spr_cb = pygame.image.load('Ativos/spr_cb.png')
  21. spr_cc = pygame.image.load('Ativos/spr_cc.png')
  22. spr_cd = pygame.image.load('Ativos/spr_cd.png')
  23.  
  24. tamanho_esteira = 30
  25. pos_asrs = 0
  26. pos_torno = 10
  27. pos_fresa = 20
  28. num_pallet = 10
  29.  
  30. def on_log(client, userdata, level, buf):
  31.     print("log: "+buf)
  32. def on_connect(client, userdata, flags, rc):
  33.     if rc==0:
  34.         print("Conexao OK")
  35.     else:
  36.         print("Nao conectado, erro: ",rc)
  37. def on_message(client, userdata, message):
  38.     global mensagem
  39.     global topico
  40.     mensagem = int(message.payload)
  41.     topico = str(message.topic)
  42.  
  43.     # print("Mensagem recebida: " ,str(message.payload.decode("utf-8")))
  44.     print("Mensagem recebida: " ,str(mensagem))
  45.     print("Topico da mensagem: ",topico)
  46.     print("Mensagem qos: ",message.qos)
  47.     print("Mensagem retain flag: ",message.retain)
  48.  
  49. broker_address="192.168.11.6"
  50.  
  51. client = mqtt.Client("P1") #criar nova instancia
  52. client.on_connect=on_connect #anexar funcao ao retorno de chamada
  53. client.on_log=on_log
  54. client.on_message = on_message
  55. client.loop_start()
  56.  
  57. print("Assinando o topico","carros/numero")
  58. client.subscribe("carros/numero")
  59.  
  60. if topico == 'carros/numero':
  61.     numero_carros = mensagem
  62.     for i in range(numero_carros):
  63.         client.subscribe("carros/posicao"+i)   
  64.  
  65. class torno(object):
  66.     def __init__(self,x,y):
  67.         self.x = x
  68.         self.y = y
  69.         self.animacao = 0
  70.     def draw(self, win):
  71.         if self.animacao == 0:
  72.             win.blit(spr_torno,(self.x,self.y))
  73.         #pygame.draw.rect(win, (255,0,0), self.hitbox,2)
  74.  
  75. class fresa(object):
  76.     def __init__(self,x,y):
  77.         self.x = x
  78.         self.y = y
  79.         self.animacao = 0
  80.     def draw(self, win):
  81.         if self.animacao == 0:
  82.             win.blit(spr_fresa,(self.x,self.y))
  83.         #pygame.draw.rect(win, (255,0,0), self.hitbox,2)
  84.  
  85. class asrs(object):
  86.     def __init__(self,x,y):
  87.         self.x = x
  88.         self.y = y
  89.         self.animacao = 0
  90.     def draw(self, win):
  91.         if self.animacao == 0:
  92.             win.blit(spr_asrs,(self.x,self.y))
  93.         #pygame.draw.rect(win, (255,0,0), self.hitbox,2)
  94.  
  95. class robo_torno(object):
  96.     def __init__(self,x,y):
  97.         self.x = x
  98.         self.y = y
  99.         self.animacao = 0
  100.     def draw(self, win):
  101.         if self.animacao == 0:
  102.             win.blit(spr_trobo,(self.x,self.y))
  103.  
  104. class robo_fresa(object):
  105.     def __init__(self,x,y):
  106.         self.x = x
  107.         self.y = y
  108.         self.animacao = 0
  109.     def draw(self, win):
  110.         if self.animacao == 0:
  111.             win.blit(spr_frobo,(self.x,self.y))
  112.  
  113. class robo_asrs(object):
  114.     def __init__(self,x,y):
  115.         self.x = x
  116.         self.y = y
  117.         self.animacao = 0
  118.     def draw(self, win):
  119.         if self.animacao == 0:
  120.             win.blit(spr_arobo,(self.x,self.y))
  121.  
  122. class carro(pygame.sprite.Sprite):
  123.     def __init__(self,spr,x,y):
  124.         self.spr, self.x, self.y = spr, x, y
  125.         #self.posicao = 3  
  126.     def draw(self, win):
  127.         win.blit(self.spr,(self.x,self.y))
  128.  
  129. class ca(object):
  130.     def __init__(self,x,y):
  131.         self.x = x
  132.         self.y = y
  133.         self.posicao = 0
  134.     def draw(self, win):
  135.         win.blit(spr_ca,(self.x,self.y))
  136.  
  137. def troca_posicao(posicao):
  138.     if posicao == 1:
  139.         x, y = 850, 100
  140.         return x, y
  141.     elif posicao == 2:
  142.         x, y = 786, 100
  143.         return x, y
  144.     elif posicao == 3:
  145.         x, y = 722, 100
  146.         return x, y
  147.     elif posicao == 4:
  148.         x, y = 658, 100
  149.         return x, y
  150.     elif posicao == 5:
  151.         x, y = 594, 100
  152.         return x, y
  153.     elif posicao == 6:
  154.         x, y = 530, 100
  155.         return x, y
  156.     elif posicao == 7:
  157.         x, y = 466, 100
  158.         return x, y
  159.     elif posicao == 8:
  160.         x, y = 402, 100
  161.         return x, y
  162.     elif posicao == 9:
  163.         x, y = 335, 100
  164.         return x, y
  165.        
  166.     elif posicao == 10:
  167.         x, y = 335, 160
  168.         return x, y
  169.     elif posicao == 11:
  170.         x, y = 335, 223
  171.         return x, y
  172.     elif posicao == 12:
  173.         x, y = 335, 283
  174.         return x, y
  175.     elif posicao == 13:
  176.         x, y = 335, 344
  177.         return x, y
  178.     elif posicao == 14:
  179.         x, y = 335, 404
  180.         return x, y
  181.     elif posicao == 15:
  182.         x, y = 335, 465
  183.         return x, y
  184.  
  185.     elif posicao == 16:
  186.         x, y = 402, 465
  187.         return x, y
  188.     elif posicao == 17:
  189.         x, y = 466, 465
  190.         return x, y
  191.     elif posicao == 18:
  192.         x, y = 530, 465
  193.         return x, y
  194.     elif posicao == 19:
  195.         x, y = 594, 465
  196.         return x, y
  197.     elif posicao == 20:
  198.         x, y = 668, 465
  199.         return x, y
  200.     elif posicao == 21:
  201.         x, y = 752, 465
  202.         return x, y
  203.     elif posicao == 22:
  204.         x, y = 836, 465
  205.         return x, y
  206.     elif posicao == 23:
  207.         x, y = 900, 465
  208.         return x, y
  209.     elif posicao == 24:
  210.         x, y = 955, 465
  211.         return x, y
  212.  
  213.     elif posicao == 25:
  214.         x, y = 955, 404
  215.         return x, y
  216.     elif posicao == 26:
  217.         x, y = 955, 344
  218.         return x, y
  219.     elif posicao == 27:
  220.         x, y = 955, 283
  221.         return x, y
  222.     elif posicao == 28:
  223.         x, y = 955, 223
  224.         return x, y
  225.     elif posicao == 29:
  226.         x, y = 955, 163
  227.         return x, y
  228.     elif posicao == 30:
  229.         x, y = 955, 100
  230.         return x, y
  231.  
  232. def refazerJanela():
  233.     win.blit(bg, (0,0))
  234.    
  235.     torno.draw(win)
  236.     fresa.draw(win)
  237.     asrs.draw(win)
  238.     robo_torno.draw(win)
  239.     robo_fresa.draw(win)
  240.     robo_asrs.draw(win)
  241.     carro1.draw(win)
  242.     carro2.draw(win)
  243.     ca.draw(win)
  244.  
  245.     pygame.display.update()
  246.  
  247. torno = torno(450,490)
  248. fresa = fresa(1080,130)
  249. asrs = asrs(15,100)
  250. robo_torno = robo_torno(600,380)
  251. robo_fresa = robo_fresa(930,180)
  252. robo_asrs = robo_asrs(230,170)
  253. carro1 = carro(spr_carro,850,100)
  254. carro2 = carro(spr_carro,786,100)
  255. ca = ca(850 + 10,100 - 35)
  256.  
  257. run = True
  258. while run:
  259.     clock.tick(27)
  260.    
  261.     if topico == 'carros/numero':
  262.         numero_carros = mensagem
  263.  
  264.     if topic == 'carros/posicao':
  265.         pass
  266.  
  267.     for event in pygame.event.get():
  268.         if event.type == pygame.QUIT:
  269.             run = False
  270.            
  271.     tecla = pygame.key.get_pressed()
  272.  
  273.     if tecla[pygame.K_SPACE] and shootloop == 0:
  274.         som_balas.play()
  275.         if homem.esquerda:
  276.             facing = -1
  277.         else:
  278.             facing = 1
  279.         if len(balas) < 5:
  280.             balas.append(projectile(int(homem.x + homem.largura//2), int(homem.y + homem.altura//2), 6, (0,0,0), facing))
  281.         shootloop = 1
  282.     if tecla[pygame.K_LEFT] and (homem.x > homem.vel):
  283.         homem.x -= homem.vel
  284.         homem.esquerda = True
  285.         homem.direita = False
  286.         homem.standing = False
  287.     elif tecla[pygame.K_RIGHT] and (homem.x < tela_largura - homem.largura - homem.vel):
  288.         homem.x += homem.vel
  289.         homem.esquerda = False
  290.         homem.direita = True
  291.         homem.standing = False
  292.     else:
  293.         homem.standing = True
  294.         homem.cont_andar = 0
  295.     if not (homem.pular):
  296.         if tecla[pygame.K_UP]:
  297.             homem.pular = True
  298.             homem.direita = False
  299.             homem.esquerda = False
  300.             homem.cont_andar = 0
  301.     else:  
  302.         if homem.cont_pular >= -10:
  303.             neg = 1
  304.             if homem.cont_pular < 0:
  305.                 neg = -1
  306.             homem.y -= (homem.cont_pular ** 2) * 0.5 * neg
  307.             homem.cont_pular -= 1
  308.         else:
  309.             homem.pular = False
  310.             homem.cont_pular = 10
  311.     refazerJanela()    
  312.  
  313. client.loop_stop()
  314. pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment