Advertisement
Guest User

Pizza Time v5

a guest
May 23rd, 2018
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- //VARIABLES GLOBALES
  2.  
  3. -- Dimensions de la fenêtre
  4. w=platform.window:width()
  5. h=platform.window:height()
  6.  
  7. -- Fond
  8. background = image.new(_R.IMG.background)
  9. ybackground = -563
  10. backgroundhighscores = image.new(_R.IMG.backgroundhighscores)
  11. backgroundmenu = image.new(_R.IMG.backgroundmenu)
  12. backgroundprejeu = image.new(_R.IMG.backgroundprejeu)
  13.  
  14. -- Livreur
  15. llivreur=10
  16. hlivreur=15
  17. xlivreur=w/2-llivreur/2
  18. ylivreur=h-hlivreur
  19. jump=false  
  20. jumptimer=0
  21. passerelle=false
  22. plateforme=1
  23. gravite=false  
  24. vies=3
  25. imglivreurgauche = image.new(_R.IMG.livreurgauche)
  26. imglivreurdroite = image.new(_R.IMG.livreurdroite)
  27. directionlivreur = 1
  28.  
  29. -- Plateformes
  30. nbplateformes=15
  31. hplateformes=10
  32. wplateformes=w
  33. xplateformes=0
  34. yplateformes={}
  35. yplateformes[1]=h
  36. for i=2,nbplateformes do
  37.     yplateformes[i]=yplateformes[i-1]-50
  38. end
  39.  
  40. --Obstacles
  41. nbobstacles=3
  42. lobstacles=7
  43. hobstacles=7
  44. xobstacles={}
  45. yobstacles={yplateformes[1]-hobstacles,yplateformes[2]-hobstacles,yplateformes[3]-hobstacles}
  46. deplacementobs={}
  47. departobstacles={}
  48. typeobstacle={}
  49. imgobstacle=0
  50. obstacle1 = image.new(_R.IMG.obstacle1)
  51. obstacle2 = image.new(_R.IMG.obstacle2)
  52. obstacle3 = image.new(_R.IMG.obstacle3)
  53. obstacle4 = image.new(_R.IMG.obstacle4)
  54.  
  55. for i=1,nbobstacles do
  56.     departobstacles[i]=math.random(0,1)
  57.     typeobstacle[i]=math.random(1,4)
  58.     deplacementobs[i]=(math.random(7,11))/10
  59.  
  60.     if departobstacles[i] == 0 then
  61.         xobstacles[i]=0
  62.     else
  63.         xobstacles[i] = w-lobstacles
  64.     end
  65. end
  66.  
  67. -- Passerelles
  68. hpasserelles=40
  69. lpasserelles=10
  70. xpasserelles={}
  71. ypasserelles={}
  72. for i=1,nbplateformes-1 do
  73.     ypasserelles[i]=yplateformes[i+1]+hplateformes
  74.     xpasserelles[i]=math.random(50,w-lpasserelles-50)
  75. end
  76. imgpasserelle = image.new(_R.IMG.passerelle)
  77.  
  78. --Client
  79. hclient=25
  80. lclient=20
  81. xclient=50
  82. yclient=yplateformes[nbplateformes]-hclient
  83. imgclient=image.new(_R.IMG.client)
  84.  
  85. --Bonus
  86. nbbonus=6
  87. lbonus=10
  88. xbonus={}
  89. ybonus={}
  90. bonus={}
  91. timerbonusvitesse=0
  92. bonusimg = 0
  93. bonusscore = image.new(_R.IMG.bonusscore)
  94. bonustemps = image.new(_R.IMG.bonustemps)
  95. bonusvitesse = image.new(_R.IMG.bonuvitesse)
  96. bonusvie = image.new(_R.IMG.bonusvie)
  97.  
  98. for i=1,nbbonus do
  99.     xbonus[i]=math.random(10,w-15)
  100.     ybonus[i]=yplateformes[math.random(1,nbplateformes-1)]-lbonus
  101.     bonus[i]=math.random(1,4)
  102. end
  103.  
  104. -- Prejeu
  105. texte=1
  106. phasetexte=0
  107. phrases1 = {"Vous êtes un livreur de pizza.", "Vous devez livrer une pizza à un client.", "Si vous dépassez le temps", "de livraison imparti,", "le client NE PAYE PAS !"}
  108. phrases2 = {"Ce client semble particulièrement motivé"," à ne pas payer.","Vous devrez esquiver ses obstacles", "et ramasser des bonus", "pour livrer sa pizza à temps."}
  109. phrases3 = {"← aller à gauche","→ aller à droite", "↑ monter sur une passerelle", "<espace> sauter", "<echap> pause"}
  110. hphrases = {55,80,105,130,155}
  111. wphrases1 = {}
  112. wphrases2 = {}
  113. wphrases3 = {}
  114.  
  115.  
  116. -- Gestion des fenêtres
  117. screen=4
  118. mselection=1
  119. gselection=0
  120. pselection=1
  121. scrolling=false
  122. scrolltimer=0
  123. nbscroll=0
  124. pause=false
  125.  
  126.  
  127. -- Score/temps
  128. score=0
  129. temps=120
  130. highscore={0,0,0,0,0}
  131. save={0,0,0,0,0}
  132. name=""
  133. nblettres=0
  134. confnom=false
  135. namehs={"....","....","....","....","...."}
  136. namesave={"....","....","....","....","...."}
  137.  
  138. -- VARIABLES GLOBALES\\
  139.  
  140. -- //GRAPHIQUE
  141.  
  142. -- On paint
  143. function on.paint(gc)
  144.     if screen==0 then -- Ecran menu
  145.         menu(gc)
  146.     elseif screen==1 then -- Ecran jeu
  147.         decors(gc)
  148.         timer.start(0.01)
  149.     elseif screen==2 then -- Ecran game over ou victoire
  150.         gameover(gc)  
  151.     elseif screen==3 then -- Ecran scores
  152.         ecranscores(gc)
  153.     elseif screen==4 then
  154.         prejeu(gc) -- Ecran prejeu
  155.     end
  156. end
  157.  
  158. -- Préjeu
  159. function prejeu(gc)
  160.     gc:drawImage(backgroundprejeu,0,0)
  161.     gc:setColorRGB(255,255,255)
  162.     gc:setFont("sansserif","r",9)
  163.     if phasetexte==0 then        
  164.         gc:setFont("sansserif","r",12)
  165.         local wdeja=gc:getStringWidth("Avez-vous déjà joué ?")
  166.         gc:drawString("Avez-vous déjà joué ?",w/2-wdeja/2,h/2-20)
  167.        
  168.         local style_oui = "r"
  169.         local style_non = "r"
  170.         if pselection == 1 then
  171.            style_oui = "b"
  172.            style_non = "r"
  173.         else
  174.            style_oui = "r"
  175.            style_non = "b"
  176.         end
  177.        
  178.    
  179.         gc:setFont("sansserif",style_oui,12)
  180.         local woui=gc:getStringWidth("OUI")
  181.         gc:drawString("OUI",w/2-woui-10,h/2+10)
  182.         gc:setFont("sansserif",style_non,12)
  183.         gc:drawString("NON",w/2+10,h/2+10)
  184.     elseif phasetexte==1 then
  185.         for i=1,texte do
  186.             wphrases1[i]=gc:getStringWidth(phrases1[i])
  187.             gc:drawString(phrases1[i],w/2-wphrases1[i]/2,hphrases[i])
  188.         end
  189.         gc:drawString("↵",w-60,h-40)
  190.     elseif phasetexte==2 then
  191.         for i=1,texte do
  192.             wphrases2[i]=gc:getStringWidth(phrases2[i])
  193.             gc:drawString(phrases2[i],w/2-wphrases2[i]/2,hphrases[i])
  194.         end
  195.         gc:drawString("↵",w-60,h-40)
  196.     elseif phasetexte==3 then
  197.         for i=1,texte do
  198.         wphrases3[i]=gc:getStringWidth(phrases3[i])
  199.         gc:drawString(phrases3[i],w/2-wphrases3[i]/2,hphrases[i])
  200.         end
  201.         gc:drawString("↵",w-60,h-40)
  202.     end
  203.    
  204. end
  205.  
  206. -- Menu principal
  207. function menu(gc)
  208.     gc:drawImage(backgroundmenu,0,0)
  209.     local style_jouer = "r"
  210.     local style_scores = "r"
  211.     if mselection == 1 then
  212.        style_jouer = "b"
  213.        style_scores = "r"
  214.     elseif mselection == 2 then
  215.        style_jouer = "r"
  216.        style_scores = "b"
  217.     end
  218.    
  219.     gc:setFont("sansserif",style_jouer,12)
  220.     local wjouer=gc:getStringWidth("JOUER")
  221.     gc:drawString("JOUER",w/2-wjouer/2,h/2-17)
  222.     gc:setFont("sansserif",style_scores,12)
  223.     local wscores=gc:getStringWidth("SCORES")
  224.     gc:drawString("SCORES",w/2-wscores/2,h/2+17)
  225.    
  226. end
  227.  
  228. -- Jeu
  229. function decors(gc)
  230.     -- Fond
  231.     gc:drawImage(background,0,ybackground)
  232.    
  233.     -- Plateformes
  234.     gc:setColorRGB(200,200,200)
  235.     for i=1,nbplateformes do
  236.         gc:fillRect(xplateformes,yplateformes[i],wplateformes,hplateformes)
  237.     end
  238.     gc:setColorRGB(0,50,200)
  239.     for i=1,nbplateformes-1 do
  240.         gc:drawImage(imgpasserelle,xpasserelles[i],ypasserelles[i])
  241.     end
  242.    
  243.     -- Bonus
  244.     for i=1,nbbonus do
  245.         if bonus[i]~=0 then
  246.             if bonus[i]==1 then
  247.                 bonusimg=bonusscore
  248.             elseif bonus[i]==2 then
  249.                 bonusimg=bonustemps
  250.             elseif bonus[i]==3 then
  251.                 bonusimg=bonusvitesse
  252.             else
  253.                 bonusimg=bonusvie
  254.             end
  255.             gc:drawImage(bonusimg,xbonus[i],ybonus[i])
  256.         end
  257.     end    
  258.        
  259.     --Client
  260.     gc:drawImage(imgclient,xclient,yclient)
  261.    
  262.    --Livreur
  263.    if directionlivreur == 0 then
  264.         gc:drawImage(imglivreurgauche,xlivreur,ylivreur)
  265.    else
  266.         gc:drawImage(imglivreurdroite,xlivreur,ylivreur)
  267.    end    
  268.    
  269.    --Obstacles
  270.    for i=1,nbobstacles do
  271.         if typeobstacle[i]==1 then
  272.             imgobstacle=obstacle1
  273.         elseif typeobstacle[i]==2 then
  274.             imgobstacle=obstacle2
  275.         elseif typeobstacle[i]==3 then
  276.             imgobstacle=obstacle3
  277.         else
  278.             imgobstacle=obstacle4
  279.         end
  280.         gc:drawImage(imgobstacle,xobstacles[i],yobstacles[i])
  281.    end
  282.    
  283.    -- Barre en haut
  284.    gc:setColorRGB(20,20,20)
  285.    gc:fillRect(-1,-1,w+2,30)
  286.    gc:setColorRGB(255,255,255)
  287.    gc:drawLine(-1,30,w+1,30)
  288.    gc:setFont("sansserif","r",6)
  289.    local wtemps=gc:getStringWidth("TEMPS : "..math.ceil(temps))
  290.    gc:drawString("TEMPS : "..math.ceil(temps),15,10)
  291.    local wscore=gc:getStringWidth("SCORE : "..math.ceil(score))
  292.    gc:drawString("SCORE : "..math.ceil(score),w-wscore-15,10)
  293.    if deplacementobs[1]==0.75 then
  294.        gc:setColorRGB(255,255,0)
  295.        gc:fillArc(110,13,5,5,0,360)
  296.    end
  297.    if vies==3 then
  298.       gc:setColorRGB(255,0,0)
  299.       gc:fillArc(150,13,5,5,0,360)
  300.       gc:fillArc(160,13,5,5,0,360)
  301.       gc:fillArc(170,13,5,5,0,360)
  302.    elseif vies==2 then
  303.        gc:setColorRGB(255,0,0)
  304.        gc:fillArc(150,13,5,5,0,360)
  305.        gc:fillArc(160,13,5,5,0,360)
  306.        gc:setColorRGB(60,60,60)
  307.        gc:fillArc(170,13,5,5,0,360)
  308.    elseif vies==1 then
  309.        gc:setColorRGB(255,0,0)
  310.        gc:fillArc(150,13,5,5,0,360)
  311.        gc:setColorRGB(60,60,60)
  312.        gc:fillArc(160,13,5,5,0,360)
  313.        gc:fillArc(170,13,5,5,0,360)
  314.    end    
  315.    
  316.     --Pause
  317.     if pause==true then
  318.         gc:setColorRGB(0,0,0)
  319.         gc:fillRect(50,70,w-100,h-140)
  320.         gc:setColorRGB(255,255,255)
  321.         gc:setFont("sansserif","b",50)
  322.         local wpause=gc:getStringWidth("PAUSE")
  323.         gc:drawString("PAUSE",w/2-wpause/2,h/2-30)
  324.         gc:setFont("sansserif","r",8)
  325.         local wapp=gc:getStringWidth("Appuyez sur <entrée> pour reprendre")
  326.         gc:drawString("Appuyez sur <entrée> pour reprendre",w/2-wapp/2,h/2+15)
  327.     end
  328. end
  329.  
  330. -- Game over / Victoire
  331. function gameover(gc)
  332.     gc:setColorRGB(0,0,0)
  333.     gc:fillRect(-1,-1,w+2,h+2)
  334.     gc:setFont("sansserif","b",20)
  335.     gc:setColorRGB(255,255,255)
  336.     if temps==0 or vies==0 then
  337.         local wgameover=gc:getStringWidth("GAME OVER")
  338.         gc:drawString("GAME OVER",w/2-wgameover/2,50)
  339.     else
  340.         local wgameover=gc:getStringWidth("VICTOIRE")
  341.         gc:drawString("VICTOIRE",w/2-wgameover/2,50)
  342.     end
  343.     gc:setFont("sansserif","r",14)
  344.     local wscore=gc:getStringWidth("SCORE : "..math.ceil(score))
  345.     gc:drawString("SCORE : "..math.ceil(score),w/2-wscore/2,90)
  346.  
  347.     local style_rejouer = "r"
  348.     local style_scores = "r"
  349.     local style_menu = "r"
  350.     if gselection == 1 then
  351.        style_rejouer = "b"
  352.        style_scores = "r"
  353.        style_menu = "r"
  354.     elseif gselection == 2 then
  355.        style_rejouer = "r"
  356.        style_scores = "b"
  357.        style_menu = "r"
  358.     elseif gselecrion == 3 then
  359.         style_rejouer = "r"
  360.         style_scores = "r"
  361.         style_menu = "b"
  362.     end
  363.    
  364.     gc:setFont("sansserif","bi",12)
  365.     gc:drawString("NOM : "..name,110,125)
  366.  
  367.     gc:setFont("sansserif",style_rejouer,12)  
  368.     gc:drawString("REJOUER",40,160)
  369.     gc:setFont("sansserif",style_scores,12)
  370.     gc:drawString("SCORES",135,160)
  371.     gc:setFont("sansserif",style_menu,12)  
  372.     gc:drawString("MENU",225,160)    
  373.    
  374. end
  375.  
  376. -- High scores
  377. function ecranscores(gc)
  378.    
  379.     gc:drawImage(backgroundhighscores,0,0)
  380.     gc:setFont("sansserif","b",13)
  381.    
  382.    
  383.     gc:setColorRGB(255,255,255)
  384.     gc:setFont("sansserif","b",8)
  385.     local lapp = gc:getStringWidth("Appuyez sur entrée")
  386.     gc:drawString("Appuyez sur entrée",w/2-lapp/2,h-40)
  387.     local lret = gc:getStringWidth("pour retourner au menu")
  388.     gc:drawString("pour retourner au menu",w/2-lret/2,h-30)
  389.    
  390.     gc:setColorRGB(255,255,255)
  391.     gc:setFont("sansserif","b",9)
  392.     for i=1,5 do
  393.         local lhighscore = gc:getStringWidth(i..". "..namehs[i].." : "..math.ceil(highscore[i]))
  394.         gc:drawString(i..". "..namehs[i].." : "..math.ceil(highscore[i]),w/2-lhighscore/2,h/5 + i*20)
  395.     end
  396.    
  397. end
  398.  
  399. -- GRAPHIQUE\\
  400.  
  401. -- //TIMER
  402.  
  403. function on.timer()
  404.     if screen==1 then
  405.         if pause==false then -- Si on n'est pas en pause
  406.             if scrolling==false then
  407.                 -- Tous les tests
  408.                 testgravite()
  409.                 testvictoire()
  410.                 testbonus()
  411.                 testcollision()
  412.                
  413.                 -- Gravité
  414.                 if gravite==true then
  415.                     ylivreur=ylivreur+1
  416.                 end
  417.                
  418.                 -- Saut
  419.                 if jump==true then
  420.                     if jumptimer>0 then
  421.                         ylivreur=ylivreur-1
  422.                         jumptimer=jumptimer-1
  423.                     else
  424.                         jump=false
  425.                     end          
  426.                 end    
  427.                    
  428.                 -- Bonus vitesse
  429.                 if timerbonusvitesse>0 then
  430.                     timerbonusvitesse=timerbonusvitesse-0.01
  431.                 else
  432.                     if nbscroll==0 then
  433.                         for i=1,nbobstacles do  
  434.                             deplacementobs[i]=(math.random(7,11))/10
  435.                         end
  436.                     elseif nbscroll==1 then
  437.                         for i=1,nbobstacles do  
  438.                             deplacementobs[i]=(math.random(11,15))/10
  439.                         end
  440.                     elseif nbscroll==2 then
  441.                         for i=1,nbobstacles do  
  442.                             deplacementobs[i]=(math.random(15,18))/10
  443.                         end
  444.                     elseif nbscroll==3 then
  445.                         for i=1,nbobstacles do  
  446.                             deplacementobs[i]=(math.random(18,21))/10
  447.                         end
  448.                     else
  449.                         for i=1,nbobstacles do  
  450.                             deplacementobs[i]=(math.random(21,23))/10
  451.                         end
  452.                     end
  453.                 end
  454.                
  455.                 -- Temps
  456.                 if temps-0.01>0 then
  457.                     temps=temps-0.01
  458.                 else
  459.                     temps=0
  460.                     screen=2
  461.                 end
  462.                
  463.                 --Obstacles
  464.                 for i=1,nbobstacles do
  465.                     if departobstacles[i]==0 then
  466.                         if xobstacles[i] + deplacementobs[i] < w then
  467.                             xobstacles[i]=xobstacles[i] + deplacementobs[i]
  468.                         else
  469.                             typeobstacle[i]=math.random(1,4)
  470.                             xobstacles[i]=0
  471.                         end
  472.                     else
  473.                         if xobstacles[i] - deplacementobs[i] > 0 then
  474.                             xobstacles[i]=xobstacles[i] - deplacementobs[i]
  475.                         else
  476.                             typeobstacle[i]=math.random(1,4)
  477.                             xobstacles[i]=w-lobstacles
  478.                         end
  479.                     end
  480.                 end
  481.            
  482.             -- Scroll  
  483.             else
  484.                 if yplateformes[plateforme+1]<h-hplateformes then
  485.                     ylivreur=ylivreur+2
  486.                     yclient=yclient+2
  487.                     ybackground=ybackground+2
  488.                    
  489.                     for i=1,nbplateformes do
  490.                         yplateformes[i]=yplateformes[i]+2
  491.                     end
  492.                     for i=1,nbplateformes-1 do
  493.                         ypasserelles[i]=ypasserelles[i]+2
  494.                     end
  495.                     for i=1,nbbonus do
  496.                         ybonus[i]=ybonus[i]+2
  497.                     end
  498.                     for i=1,nbobstacles do
  499.                         yobstacles[i]=yobstacles[i]+2
  500.                     end
  501.                 else
  502.                     scrolling=false
  503.                     -- Placement des obstacles
  504.                     for i=1,nbobstacles do
  505.                         departobstacles[i]=math.random(0,1)
  506.                         typeobstacle[i]=math.random(1,4)
  507.                         if departobstacles[i] == 0 then
  508.                             xobstacles[i]=0
  509.                         else
  510.                             xobstacles[i] = w-lobstacles
  511.                         end
  512.                     end                    
  513.                     if nbscroll==1 then
  514.                         yobstacles={yplateformes[4]-hobstacles,yplateformes[5]-hobstacles,yplateformes[6]-hobstacles}
  515.                     elseif nbscroll==2 then
  516.                         yobstacles={yplateformes[7]-hobstacles,yplateformes[8]-hobstacles,yplateformes[9]-hobstacles}
  517.                     elseif nbscroll==3 then
  518.                         yobstacles={yplateformes[10]-hobstacles,yplateformes[11]-hobstacles,yplateformes[12]-hobstacles}
  519.                     elseif nbscroll==4 then
  520.                         yobstacles={yplateformes[13]-hobstacles,yplateformes[14]-hobstacles,yplateformes[15]-hobstacles}
  521.                     end                                                    
  522.                 end
  523.                
  524.             end
  525.         end
  526.     end
  527.     platform.window:invalidate()
  528. end
  529.  
  530. -- TIMER\\
  531.  
  532. -- //TOUCHES
  533.  
  534. -- Gauche
  535. function on.arrowLeft()
  536.     -- Ecran jeu : déplacement du livreur à gauche
  537.     if screen==1 and scrolling==false and pause==false then
  538.         directionlivreur=0
  539.         if xlivreur>0 then
  540.             xlivreur=xlivreur-5
  541.             if passerelle==true then
  542.                 passerelle=false
  543.             end
  544.             platform.window:invalidate()
  545.         end
  546.     -- Ecran game over ou victoire : changement de la selection du menu
  547.     elseif screen==2 then
  548.         if confnom==true then
  549.             if gselection==1 then
  550.                 gselection=3
  551.             elseif gselection==2 then
  552.                 gselection=1
  553.             elseif gselection==3 then
  554.                 gselection=2
  555.             end
  556.         end
  557.     -- Ecran préjeu : changement de la selection du menu
  558.     elseif screen==4 then
  559.         if pselection==1 then
  560.             pselection=2
  561.         else
  562.             pselection=1
  563.         end
  564.     end
  565.     platform.window:invalidate()
  566. end
  567.  
  568. -- Haut
  569. function on.arrowUp()
  570.     -- Ecran menu : changement de la selection du menu
  571.     if screen==0 then
  572.         if mselection == 1 then
  573.            mselection = 2
  574.         else
  575.            mselection = 1
  576.         end
  577.     -- Ecran jeu : montée sur une passerelle
  578.     elseif screen==1 and scrolling==false and pause==false then
  579.             if (plateforme~=0 and plateforme~=15) or passerelle==true then -- si on est sur une plateforme (sauf la dernière) ou une passerelle
  580.                 if xlivreur>=xpasserelles[plateforme]-2 and xlivreur<=xpasserelles[plateforme]+2 then -- si on est au niveau d'une passerelle
  581.                     -- si on peut encore monter sans dépasser la plateforme
  582.                     if ylivreur-5>yplateformes[plateforme+1]-hlivreur then
  583.                         passerelle=true
  584.                         ylivreur=ylivreur-5
  585.                     -- si on arrive à la plateforme
  586.                     else
  587.                         ylivreur=yplateformes[plateforme+1]-hlivreur
  588.                         passerelle=false
  589.                         -- Si on arrive à la plateforme en haut de l'écran
  590.                         if ylivreur==yplateformes[4]-hlivreur then
  591.                             scrolling=true
  592.                             nbscroll=1
  593.                             for i=1,nbobstacles do  
  594.                                 deplacementobs[i]=(math.random(11,15))/10
  595.                             end
  596.                         elseif ylivreur==yplateformes[7]-hlivreur then
  597.                             scrolling=true
  598.                             nbscroll=2
  599.                             for i=1,nbobstacles do  
  600.                                 deplacementobs[i]=(math.random(15,18))/10
  601.                             end
  602.                         elseif ylivreur==yplateformes[10]-hlivreur then
  603.                             scrolling=true
  604.                             nbscroll=3
  605.                             for i=1,nbobstacles do  
  606.                                 deplacementobs[i]=(math.random(18,21))/10
  607.                             end
  608.                         elseif ylivreur==yplateformes[13]-hlivreur then
  609.                             scrolling=true
  610.                             nbscroll=4
  611.                             for i=1,nbobstacles do  
  612.                                 deplacementobs[i]=(math.random(21,23))/10
  613.                             end
  614.                         end
  615.                    end
  616.                 end
  617.             end
  618.     end
  619.     platform.window:invalidate()
  620. end
  621.  
  622. -- Bas
  623. function on.arrowDown()
  624.     -- Ecran menu : changement de la selection du menu
  625.     if screen==0 then
  626.         if mselection == 1 then
  627.            mselection = 2
  628.        else
  629.            mselection = 1
  630.        end
  631.     end
  632.     platform.window:invalidate()
  633. end
  634.  
  635. -- Droite
  636. function on.arrowRight()
  637.     -- Ecran jeu : deplacement du livreur vers la droite
  638.     if screen==1 and scrolling==false and pause==false then
  639.         directionlivreur=1
  640.         if xlivreur+10<w then
  641.             xlivreur=xlivreur+5
  642.                
  643.             if passerelle==true then
  644.                 passerelle=false
  645.             end
  646.         end
  647.     -- Ecran game over ou victoire : changement de la selection du menu
  648.     elseif screen==2 then
  649.         if confnom==true then
  650.             if gselection==1 then
  651.                 gselection=2
  652.             elseif gselection==2 then
  653.                 gselection=3
  654.             elseif gselection==3 then
  655.                 gselection=1          
  656.             end
  657.         end
  658.     -- Ecran préjeu : changement de la selection du menu
  659.     elseif screen==4 then
  660.         if pselection==1 then
  661.             pselection=2
  662.         else
  663.             pselection=1
  664.         end
  665.     end
  666.     platform.window:invalidate()
  667. end
  668.  
  669. -- Entrée
  670. function on.enterKey()
  671.     -- Ecran menu : valider la selection
  672.     if screen==0 then
  673.         if mselection == 1 then
  674.             -- ecran jeu
  675.             screen=1
  676.         else
  677.             -- ecran scores
  678.             screen=3
  679.         end
  680.     -- Ecran jeu : sortir de la pause
  681.     elseif screen==1 then
  682.         pause=false
  683.     -- Ecran game over ou victoire : valider la selection
  684.     elseif screen==2 then
  685.         if confnom==false and nblettres==4 then
  686.             gselection=1
  687.             confnom=true
  688.         elseif confnom==true then
  689.             testscores() -- tri des scores
  690.             if gselection==1 then
  691.                 -- ecran jeu
  692.                 screen=1
  693.             elseif gselection==2 then
  694.                 --ecran scores
  695.                 screen=3
  696.             else
  697.                 -- ecran menu
  698.                 screen=0
  699.             end
  700.             reset()
  701.         end
  702.        
  703.     -- Ecran scores : revenir au menu
  704.     elseif screen==3 then
  705.         screen=0
  706.     -- Ecran prejeu
  707.     elseif screen==4 then
  708.         if pselection==1 then
  709.             screen=0 -- ecran menu
  710.         elseif pselection==2 and phasetexte==0 then
  711.             phasetexte=1
  712.         else
  713.             if phasetexte==1 and texte==2 then
  714.                 texte=texte+2
  715.             elseif phasetexte==1 and texte==5 then
  716.                 phasetexte=2
  717.                 texte=2
  718.             else
  719.                 if texte<5 then
  720.                     texte=texte+1
  721.                 elseif phasetexte<3 then
  722.                     phasetexte=phasetexte+1
  723.                     texte=1
  724.                 else
  725.                     screen=0
  726.                 end
  727.             end
  728.         end
  729.     end
  730.     platform.window:invalidate()
  731. end
  732.  
  733. -- Echap
  734. function on.escapeKey()
  735.     -- Ecran jeu : mettre pause
  736.     if screen == 1 then
  737.         pause=true
  738.     end
  739.     platform.window:invalidate()
  740. end
  741.  
  742. -- Autres
  743. function on.charIn(char)
  744.     -- Ecran jeu
  745.     if screen==1 and scrolling==false and pause==false then
  746.         -- Touche = espace : saut du livreur (si on se trouve sur une plateforme)
  747.         if char==" " and plateforme~=0 and passerelle==false then
  748.             jump=true
  749.             jumptimer=20
  750.         end
  751.     elseif screen==2 then
  752.         if nblettres<4 then
  753.             name=name..char
  754.             nblettres=nblettres+1
  755.         end
  756.     end
  757.     platform.window:invalidate()
  758. end
  759.  
  760. -- TOUCHES\\
  761.  
  762. -- //TESTS
  763.  
  764. -- Gravité
  765. function testgravite()
  766.     -- Si pas sur une passerelle
  767.     if passerelle==false then
  768.         plateforme=0
  769.         -- On trouve la plateforme sur laquelle est le livreur
  770.         for i=1,nbplateformes do
  771.             if ylivreur+hlivreur==yplateformes[i] then
  772.                 plateforme = i
  773.             end
  774.         end
  775.     end
  776.     -- Si le livreur est sur une plateforme ou une passerelle ou saute
  777.     if plateforme~=0 or jump==true or passerelle==true then
  778.         gravite=false -- gravité en pause
  779.     -- Sinon
  780.     else
  781.         gravite=true -- gravité active
  782.     end
  783. end
  784.  
  785. -- Collision bonus
  786. function testbonus()
  787.     for i=1,nbbonus do
  788.         if (((xbonus[i]+lbonus>=xlivreur and xbonus[i]+lbonus<=xlivreur+llivreur) or (xbonus[i]<=xlivreur+llivreur and xbonus[i]>=xlivreur)) and ((ybonus[i]>=ylivreur and ybonus[i]<=ylivreur+hlivreur) or (ybonus[i]+lbonus <= ylivreur+hlivreur and ybonus[i]+lbonus >= ylivreur))) and bonus[i]~=0 then
  789.             -- Bonus score
  790.             if bonus[i]==1 then
  791.                 score=score+100
  792.             -- Bonus temps
  793.             elseif bonus[i]==2 then
  794.                 temps=temps+10
  795.             -- Bonus vitesse
  796.             elseif bonus[i]==3 then
  797.                 for j=1,nbobstacles do
  798.                     deplacementobs[j]=0.75
  799.                 end
  800.                 timerbonusvitesse=timerbonusvitesse+6
  801.             -- Bonus vie
  802.             else
  803.                 if vies<3 then
  804.                     vies=vies+1
  805.                 else
  806.                     score=score+100
  807.                 end
  808.                
  809.             end
  810.             bonus[i]=0 -- Le bonus a été consommé donc il devient inactif
  811.         end
  812.     end
  813. end
  814.  
  815. -- Victoire
  816. function testvictoire()
  817.     if screen==1 then
  818.         -- Si le livreur touche le client
  819.         if ((xlivreur<=xclient+lclient and xlivreur>=xclient) or (xlivreur+llivreur<=xclient and xlivreur+llivreur>=xclient)) and plateforme==nbplateformes then
  820.             score=score+temps*10+vies*200 -- calcul du score
  821.             screen=2 -- ecran victoire
  822.         end
  823.     end
  824. end
  825.  
  826. -- Collision obstacles
  827. function testcollision()
  828.     for i=1,nbobstacles do
  829.         if ((xobstacles[i]+lobstacles>=xlivreur and xobstacles[i]+lobstacles<=xlivreur+llivreur) or (xobstacles[i]<=xlivreur+llivreur and xobstacles[i]>=xlivreur)) and ((yobstacles[i]>=ylivreur and yobstacles[i]<=ylivreur+hlivreur) or (yobstacles[i]+hobstacles <= ylivreur+hlivreur and yobstacles[i]+hobstacles >= ylivreur))then
  830.             vies=vies-1
  831.             if departobstacles[i] == 0 then
  832.                 xobstacles[i]=0
  833.             else
  834.                 xobstacles[i] = w-lobstacles
  835.             end
  836.             if vies==0 then
  837.                 screen=2
  838.             end
  839.         end
  840.     end
  841. end
  842.  
  843. -- Tri des scores
  844. function testscores()
  845.  
  846.     for i=1,5 do
  847.         save[i] = highscore[i]
  848.         namesave[i] = namehs[i]
  849.     end
  850.    
  851.     if score > highscore[1] then
  852.         highscore[1] = score
  853.         namehs[1] = name
  854.         for i=1,4 do
  855.             highscore[i+1] = save[i]
  856.             namehs[i+1] = namesave[i]
  857.         end      
  858.     elseif score > highscore[2] then
  859.         highscore[2] = score
  860.         namehs[2] = name
  861.         for i=2,4 do
  862.             highscore[i+1] = save[i]
  863.             namehs[i+1] = namesave[i]
  864.         end      
  865.     elseif score > highscore[3] then
  866.         highscore[3] = score
  867.         namehs[3] = name
  868.         for i=3,4 do
  869.             highscore[i+1] = save[i]
  870.             namehs[i+1] = namesave[i]
  871.         end      
  872.     elseif score > highscore[4] then
  873.         highscore[4] = score
  874.         namehs[4] = name
  875.         highscore[5] = save[4]
  876.         namehs[5] = namesave[4]        
  877.     elseif score > highscore[5] then                
  878.         highscore[5] = score
  879.         namehs[5] = name
  880.     end
  881. end
  882.  
  883.  
  884. -- TESTS\\
  885.  
  886. -- //RESET
  887.  
  888. function reset()
  889.     --Fond
  890.     ybackground = -563
  891.    
  892.     -- Livreur
  893.     llivreur=10
  894.     hlivreur=15
  895.     xlivreur=w/2-llivreur/2
  896.     ylivreur=h-hlivreur
  897.     jump=false  
  898.     jumptimer=0
  899.     passerelle=false
  900.     plateforme=1
  901.     gravite=false
  902.     vies=3
  903.     directionlivreur = 1
  904.    
  905.     -- Plateformes
  906.     yplateformes={}
  907.     yplateformes[1]=h
  908.     for i=2,nbplateformes do
  909.         yplateformes[i]=yplateformes[i-1]-50
  910.     end
  911.    
  912.     --Obstacles
  913.     xobstacles={}
  914.     yobstacles={yplateformes[1]-hobstacles,yplateformes[2]-hobstacles,yplateformes[3]-hobstacles}
  915.     deplacementobs={}
  916.     departobstacles={}
  917.     imgobstacle=0
  918.     typeobstacle={}
  919.    
  920.     for i=1,nbobstacles do
  921.         departobstacles[i]=math.random(0,1)
  922.         typeobstacle[i]=math.random(1,4)
  923.         deplacementobs[i]=(math.random(7,11))/10
  924.         if departobstacles[i] == 0 then
  925.             xobstacles[i]=0
  926.         else
  927.             xobstacles[i] = w-lobstacles
  928.         end
  929.     end
  930.      
  931.     -- Passerelles
  932.     xpasserelles={}
  933.     ypasserelles={}
  934.     for i=1,nbplateformes-1 do
  935.         ypasserelles[i]=yplateformes[i+1]+hplateformes
  936.         xpasserelles[i]=math.random(50,w-lpasserelles-50)
  937.     end
  938.  
  939.     --Bonus
  940.     xbonus={}
  941.     ybonus={}
  942.     bonus={}
  943.     timerbonusvitesse=0
  944.     bonusimg = 0
  945.    
  946.     for i=1,nbbonus do
  947.         xbonus[i]=math.random(10,w-15)
  948.         ybonus[i]=yplateformes[math.random(1,nbplateformes-1)]-lbonus
  949.         bonus[i]=math.random(1,4)
  950.     end
  951.    
  952.     --Client
  953.     yclient=yplateformes[nbplateformes]-hclient  
  954.    
  955.     -- Gestion des fenêtres
  956.     scrolling=false
  957.     scrolltimer=0
  958.     nbscroll=0
  959.     pause=false
  960.     mselection=1
  961.     gselection=0
  962.         -- Score/temps
  963.     score=0
  964.     temps=120
  965.     nblettres=0
  966.     name=""
  967.     confnom=false
  968. end
  969.  
  970. -- RESET\\
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement