Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Déclare à l'avance la largeur et la hauteur d'écran.
- --Seront initialisées dans la fonction love.load.
- local SCREEN_WIDTH, SCREEN_HEIGHT
- --Cette valeur est un nombre que l'on peut modifier pour ajuster la
- --taille des rectangles. Elle divise juste la largeur et la hauteur
- --d'écran pour avoir des valeurs multiples de ces dimensions d'écran.
- --Par exemple, avec une valeur de 10, les rectangles mesureront 1/10ème
- --de l'écran de jeu. Les rectangles auront une dimension de
- --SCREEN_WIDTH / FACTOR et SCREEN_HEIGHT / FACTOR.
- local FACTOR = 10
- --Déclare les variables qui représenteront la position du pointeur de
- --la souris à l'écran.Seront mis à jour à chaque affichage dans la
- --fonction love.update.
- local mouse_position_x, mouse_position_y
- function love.load()
- --Les variables déclarées au début du fichiers sont initialisées ici.
- SCREEN_WIDTH, SCREEN_HEIGHT = love.graphics.getDimensions()
- end
- function love.update(dt)
- --On met à jour la position du curseur de la souris à l'écran à
- --chaque affichage.
- mouse_position_x, mouse_position_y = love.mouse.getPosition()
- end
- function love.draw()
- --On règle la couleur active sur BLANC
- --soit ROUGE = 1, VERT = 1, BLEU = 1, ALPHA = 1.
- love.graphics.setColor(1, 1, 1, 1)
- --On dessine un rectangle BLANC au centre de l'écran. D'abord on se
- --positionne au centre avec SCREEN_WIDTH / 2 et SCREEN_HEIGHT / 2
- --mais on enlève une moitié (/ 2) de la dimension du rectangle,
- --soit (SCREEN_WIDTH / FACTOR) / 2 et (SCREEN_HEIGHT / FACTOR) / 2
- love.graphics.rectangle(
- "fill",
- SCREEN_WIDTH / 2 - (SCREEN_WIDTH / FACTOR) / 2,
- SCREEN_HEIGHT / 2 - (SCREEN_HEIGHT / FACTOR) / 2,
- SCREEN_WIDTH / FACTOR,
- SCREEN_HEIGHT / FACTOR
- )
- --On regarde si les deux rectangles entrent en collision en appelant
- --la fonction collision. On passe à cette fonction les limites du
- --rectangle de la souris (mouse_position_x, mouse_position_y) et
- --celles du rectangle centrale (SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2)
- --et en ajoutant ou retirant la moitié des dimensions du rectangle
- --((SCREEN_WIDTH/ FACTOR) / 2, (SCREEN_HEIGHT / FACTOR) / 2).
- if collision(
- mouse_position_x - (SCREEN_WIDTH / FACTOR) / 2,
- mouse_position_x + (SCREEN_WIDTH / FACTOR) / 2,
- mouse_position_y - (SCREEN_HEIGHT / FACTOR) / 2,
- mouse_position_y + (SCREEN_HEIGHT / FACTOR) / 2,
- SCREEN_WIDTH / 2 - (SCREEN_WIDTH / FACTOR) / 2,
- SCREEN_WIDTH / 2 + (SCREEN_WIDTH / FACTOR) / 2,
- SCREEN_HEIGHT / 2 - (SCREEN_HEIGHT / FACTOR) / 2,
- SCREEN_HEIGHT / 2 + (SCREEN_HEIGHT / FACTOR) / 2
- ) then
- --S'il y a collision entre les deux rectangles, on règle la couleur
- --active sur ROUGE soit ROUGE = 1, VERT = 0, BLEU = 0, ALPHA = 1.
- love.graphics.setColor(1, 0, 0, 1)
- else
- --S'il n'y a pas de collision entre les deux rectangles, on règle
- --la couleur active sur BLEU
- --soit ROUGE = 0, VERT = 0, BLEU = 1, ALPHA = 1.
- love.graphics.setColor(0, 0, 1, 1)
- end
- --On dessine le rectangle à la position de la souris
- --(mouse_position_x, mouse_position_y) avec la couleur active.
- --On décale l'affichage du rectangle de la moitié de ses dimensions
- --(pour que le pointeur de la souris soit au centre du rectangle et
- --pas dans son coin supérieur gauche).
- love.graphics.rectangle(
- "fill",
- mouse_position_x - (SCREEN_WIDTH / FACTOR) / 2,
- mouse_position_y - (SCREEN_HEIGHT / FACTOR) / 2,
- SCREEN_WIDTH / FACTOR,
- SCREEN_HEIGHT / FACTOR
- )
- end
- --Cette fonction prend les limites gauches, droites, supérieures et
- --inférieures de deux rectangles et retourne une valeur booléenne.
- --S'il y a collision entre les deux rectangles, elle renvoie la valeur
- --true. Dans le cas contraire, elle renvoie la valeur false.
- function collision(left1, right1, top1, bottom1, left2, right2, top2, bottom2)
- --Cette ligne vérifie que toutes les conditions sont bien remplies
- --pour qu'il y ait collision entre deux rectangles parallèles aux
- --axes du jeu. C'est la technique AABB (Axis Aligned Bounding Box).
- --Pour la comprendre faites une recherche sur Internet ou
- --demandez-moi.
- return (left1 < right2 and right1 > left2 and top1 < bottom2 and bottom1 > top2)
- end
- --cette fonction permet de quitter le programme avec la touche ECHAP.
- function love.keypressed(key)
- if key == "escape" then
- love.event.quit()
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment