Advertisement
AdslHouba

Duel turtle (ComputerCraft)

Jan 24th, 2017
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.48 KB | None | 0 0
  1. modem=peripheral.wrap("right")
  2. joueurs={
  3.     j1={
  4.         ecranInfo="monitor_4",
  5.         ecran=peripheral.wrap("monitor_4"),
  6.         turtle=colors.cyan,
  7.         prochain=0,
  8.         position=0,
  9.         direction=1
  10.     },
  11.     j2={
  12.         ecranInfo="monitor_3",
  13.         ecran=peripheral.wrap("monitor_3"),
  14.         turtle=colors.orange,
  15.         prochain=0,
  16.         position=26,
  17.         direction=-1
  18.     }
  19. }
  20. modem.open(99)
  21. function prepa(joueur)
  22.     joueurs[joueur].fenetreBouton=window.create(joueurs[joueur].ecran, 1, 1, 20, 5)
  23.     joueurs[joueur].fenetreBouton.setCursorPos(2,2)
  24.     joueurs[joueur].fenetreBouton.write("1  2  3")
  25.     joueurs[joueur].fenetreBouton.setVisible(false)
  26.    
  27.     joueurs[joueur].fenetreAttente=window.create(joueurs[joueur].ecran, 1, 1, 40, 5)
  28.     joueurs[joueur].fenetreAttente.write("Attente de l'autre joueur ...")  
  29.     joueurs[joueur].fenetreAttente.setVisible(false)
  30.    
  31.     joueurs[joueur].fenetreSuite=window.create(joueurs[joueur].fenetreAttente, 1, 2, 40, 5)
  32.     joueurs[joueur].fenetreSuite.write("")
  33.    
  34.     joueurs[joueur].fenetreTurtle=window.create(joueurs[joueur].ecran, 1, 2, 20, 5)
  35.     joueurs[joueur].fenetreTurtle.write("Attente turtle")
  36.     joueurs[joueur].fenetreTurtle.setVisible(false)
  37.    
  38.     joueurs[joueur].fenetreGagnant=window.create(joueurs[joueur].ecran, 1, 2, 20, 5)
  39.     joueurs[joueur].fenetreGagnant.write("VICTOIRE")
  40.     joueurs[joueur].fenetreGagnant.setVisible(false)
  41.    
  42.     joueurs[joueur].fenetrePerdant=window.create(joueurs[joueur].ecran, 1, 2, 20, 5)
  43.     joueurs[joueur].fenetrePerdant.write("  PERDU")
  44.     joueurs[joueur].fenetrePerdant.setVisible(false)
  45. end
  46.  
  47. prepa('j1')
  48. prepa('j2')
  49.  
  50. while true do
  51.    
  52.     tour=math.random(2)
  53.     joueurs['j1'].position=0
  54.     joueurs['j2'].position=26
  55.     joueurs['j1'].prochain=0
  56.     joueurs['j2'].prochain=0
  57.     joueurs['j1'].fenetreSuite.clear()
  58.     joueurs['j2'].fenetreSuite.clear()
  59.    
  60.     joueurs['j1'].ecran.setTextScale(1)
  61.     joueurs['j1'].fenetreTurtle.setVisible(true)
  62.    
  63.     joueurs['j2'].ecran.setTextScale(1)
  64.     joueurs['j2'].fenetreTurtle.setVisible(true)
  65.    
  66.     modem.transmit(joueurs['j1'].turtle, 99,-1)
  67.     modem.transmit(joueurs['j2'].turtle, 99,-1)
  68.     local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  69.     local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  70.    
  71.     joueurs['j1'].fenetreTurtle.setVisible(false)  
  72.     joueurs['j2'].fenetreTurtle.setVisible(false)
  73.    
  74.     partie=true
  75.     while partie do
  76.         print("Tour "..tour)
  77.         if tour%2==0 then
  78.             p1="j1"
  79.             p2="j2"
  80.         else
  81.             p1="j2"
  82.             p2="j1"
  83.         end
  84.        
  85.         joueurs[p1].fenetreBouton.setVisible(false)
  86.         joueurs[p1].ecran.setTextScale(0.5)
  87.         joueurs[p1].fenetreAttente.setVisible(true)
  88.        
  89.         joueurs[p2].fenetreAttente.setVisible(false)
  90.         joueurs[p2].ecran.setTextScale(2)
  91.         joueurs[p2].fenetreBouton.setVisible(true)
  92.        
  93.         info=true
  94.         while info do
  95.             event, side, xPos, yPos = os.pullEvent("monitor_touch")
  96.             if side==joueurs[p2].ecranInfo then
  97.                 info=false
  98.                 joueurs[p2].prochain=(math.ceil(xPos/3))
  99.                 joueurs[p2].fenetreSuite.clear()
  100.                 joueurs[p2].fenetreSuite.setCursorPos(1,1)
  101.                 joueurs[p2].fenetreSuite.write('Prochain coup : '..joueurs[p2].prochain)
  102.                
  103.             end    
  104.         end
  105.        
  106.         futurPosition=joueurs[p2].position+(joueurs[p2].prochain*joueurs[p2].direction)
  107.        
  108.         if joueurs[p2].direction==-1 then
  109.             if joueurs[p1].position>=futurPosition then
  110.                 partie=false
  111.             end
  112.         else
  113.             if joueurs[p1].position<=futurPosition then
  114.                 partie=false
  115.             end
  116.         end
  117.         joueurs[p2].position=futurPosition
  118.        
  119.         if not(joueurs[p1].prochain==0) then
  120.             joueurs[p1].fenetreAttente.setVisible(false)
  121.             joueurs[p2].fenetreBouton.setVisible(false)
  122.            
  123.             modem.transmit(joueurs[p1].turtle, 99,joueurs[p1].prochain)
  124.             joueurs[p1].prochain=0     
  125.        
  126.             joueurs[p1].ecran.setTextScale(1)
  127.             joueurs[p1].fenetreTurtle.setVisible(true)
  128.            
  129.             joueurs[p2].ecran.setTextScale(1)
  130.             joueurs[p2].fenetreTurtle.setVisible(true)
  131.            
  132.             local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  133.            
  134.             joueurs['j1'].fenetreTurtle.setVisible(false)  
  135.             joueurs['j2'].fenetreTurtle.setVisible(false)
  136.         end
  137.        
  138.         tour=tour+1
  139.        
  140.         if partie==false then
  141.             modem.transmit(joueurs[p2].turtle, 99,-2)
  142.            
  143.             joueurs[p2].ecran.setTextScale(2)
  144.             joueurs[p2].fenetrePerdant.setVisible(true)
  145.             joueurs[p1].ecran.setTextScale(2)
  146.             joueurs[p1].fenetreGagnant.setVisible(true)
  147.         end
  148.    
  149.     end
  150.     event, side, xPos, yPos = os.pullEvent("monitor_touch")
  151.     joueurs[p2].fenetrePerdant.setVisible(false)
  152.     joueurs[p1].fenetreGagnant.setVisible(false)
  153. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement