Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Cette ligne permet d'afficher des traces dans la console pendant l'éxécution
- io.stdout:setvbuf('no')
- -- Empèche Love de filtrer les contours des images quand elles sont redimentionnées
- -- Indispensable pour du pixel art
- love.graphics.setDefaultFilter("nearest")
- -- Cette ligne permet de déboguer pas à pas dans ZeroBraneStudio
- if arg[#arg] == "-debug" then require("mobdebug").start() end
- math.randomseed(love.timer.getTime())
- --ICI LES VARIABLES ET TABLES---------------------------------------------------------------------------
- local ecrant_courant = "menu"
- victory = false
- victoryTimer = 0
- heros = {}
- canvas = {}
- canvas.heros = love.graphics.newCanvas(120,80)
- canvas.enemy1 = love.graphics.newCanvas(80,80)
- canvas.enemy2 = love.graphics.newCanvas(80,80)
- --element char--
- canvas.baseChar = {}
- canvas.baseChar[1] = love.graphics.newCanvas(80,80)
- canvas.baseChar[2] = love.graphics.newCanvas(80,80)
- canvas.baseChar[3] = love.graphics.newCanvas(80,80)
- canvas.tourelleChar = love.graphics.newCanvas(40,120)
- canvas.bossBase = love.graphics.newCanvas(480,360)
- canvas.bossTourelle = love.graphics.newCanvas(70,80)
- canvas.launcherType1 = {}
- canvas.launcherType1[1] = love.graphics.newCanvas(120,100)--basic ferme
- canvas.launcherType1[2] = love.graphics.newCanvas(120,100)-- ouverture porte 1/2 avec fond alien1
- canvas.launcherType1[3] = love.graphics.newCanvas(120,100) --ouverture 3/4 fond alien1
- canvas.launcherType1[4] = canvas.launcherType1[1]--basic ferme
- --canvas.launcherType2 = love.graphics.newCanvas(120,100) --ouverture total fond alien1
- canvas.tir1 = love.graphics.newCanvas(15,15)
- canvas.tir2 = love.graphics.newCanvas(15,15)
- canvas.tir3 = love.graphics.newCanvas(15,15)
- canvas.tir4 = love.graphics.newCanvas(15,25)
- camera = {}
- camera.y = 0
- camera.vitesse = 0.8
- chronotir = 0
- chronoLaunch = 120
- --------------------------ENEMY----------------------
- enemy = {}
- enemy[1] = {
- {0,0,1,1,1,1,0,0},
- {0,1,1,1,1,1,1,0},
- {1,1,1,1,1,1,1,1},
- {1,1,1,1,1,1,1,1},
- {1,1,1,1,1,1,1,1},
- {1,1,1,1,1,1,1,1},
- {0,1,1,1,1,1,1,0},
- {0,0,1,1,1,1,0,0},
- }
- enemy[2] = {
- {0,0,0,0,0,0,0,0},
- {1,0,0,0,0,0,0,1},
- {1,1,0,0,0,0,1,1},
- {1,1,1,0,0,1,1,1},
- {1,1,1,0,0,1,1,1},
- {1,1,0,0,0,0,1,1},
- {1,0,0,0,0,0,0,1},
- {0,0,0,0,0,0,0,0},
- }
- ----------------------------MENU----------------------------
- menu = {}
- menu.tabAlphabet = {}
- menu.tabAlphabet.A = {
- {1,1,1,1,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,1,1,1,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- }
- menu.tabAlphabet.B = {
- {1,1,1,1,0},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,1,1,1,0},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,1,1,1,0},
- }
- menu.tabAlphabet.C = {
- {1,1,1,1,1},
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,1,1,1,1},
- }
- menu.tabAlphabet.D = {
- {1,1,1,0,0},
- {1,0,0,1,0},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,1,0},
- {1,1,1,0,0},
- }
- menu.tabAlphabet.E = {
- {1,1,1,1,1},
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,1,1,1,1},
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,1,1,1,1},
- }
- menu.tabAlphabet.F = {
- {1,1,1,1,1},
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,1,1,1,0},
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,0,0,0,0},
- }
- menu.tabAlphabet.G = {
- {1,1,1,1,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,0},
- {1,0,1,1,1},
- {1,0,0,0,1},
- {1,1,1,1,1},
- }
- menu.tabAlphabet.H = {
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,1,1,1,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- }
- menu.tabAlphabet.I = {
- {0,0,1,0,0},
- {0,0,1,0,0},
- {0,0,1,0,0},
- {0,0,1,0,0},
- {0,0,1,0,0},
- {0,0,1,0,0},
- {0,0,1,0,0},
- }
- menu.tabAlphabet.J = {
- {1,1,1,1,1},
- {0,0,0,0,1},
- {0,0,0,0,1},
- {0,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,1,1,1,1},
- }
- menu.tabAlphabet.K = {
- {1,0,0,0,1},
- {1,0,0,1,0},
- {1,0,1,0,0},
- {1,1,0,0,0},
- {1,0,1,0,0},
- {1,0,0,1,0},
- {1,0,0,0,1},
- }
- menu.tabAlphabet.L = {
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,1,1,1,1},
- }
- menu.tabAlphabet.M = {
- {1,0,0,0,1},
- {1,1,0,1,1},
- {1,0,1,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- }
- menu.tabAlphabet.N = {
- {1,0,0,0,0,0,1},
- {1,1,0,0,0,0,1},
- {1,0,1,0,0,0,1},
- {1,0,0,1,0,0,1},
- {1,0,0,0,1,0,1},
- {1,0,0,0,0,1,1},
- {1,0,0,0,0,0,1},
- }
- menu.tabAlphabet.O = {
- {1,1,1,1,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,1,1,1,1},
- }
- menu.tabAlphabet.P = {
- {1,1,1,1,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,1,1,1,1},
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,0,0,0,0},
- }
- menu.tabAlphabet.Q = {
- {1,1,1,1,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,1,1,1,1},
- {0,0,0,1,0},
- {0,0,0,0,1},
- }
- menu.tabAlphabet.R = {
- {1,1,1,1,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,1,1,1,1},
- {1,0,1,0,0},
- {1,0,0,1,0},
- {1,0,0,0,1},
- }
- menu.tabAlphabet.S = {
- {1,1,1,1,1},
- {1,0,0,0,0},
- {1,0,0,0,0},
- {1,1,1,1,1},
- {0,0,0,0,1},
- {0,0,0,0,1},
- {1,1,1,1,1},
- }
- menu.tabAlphabet.T = {
- {1,1,1,1,1},
- {0,0,1,0,0},
- {0,0,1,0,0},
- {0,0,1,0,0},
- {0,0,1,0,0},
- {0,0,1,0,0},
- {0,0,1,0,0},
- }
- menu.tabAlphabet.U = {
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,0,0,0,1},
- {1,1,1,1,1},
- }
- menu.tabAlphabet.V = {
- {1,0,0,0,0,0,1},
- {1,0,0,0,0,0,1},
- {0,1,0,0,0,1,0},
- {0,1,0,0,0,1,0},
- {0,0,1,0,1,0,0},
- {0,0,1,0,1,0,0},
- {0,0,0,1,0,0,0},
- }
- menu.tabAlphabet.W = {
- {1,0,0,1,0,0,1},
- {1,0,1,0,1,0,1},
- {1,0,1,0,1,0,1},
- {0,1,0,0,0,1,0},
- {0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0},
- }
- menu.tabAlphabet.X = {
- {1,0,0,0,0,0,1},
- {0,1,0,0,0,1,0},
- {0,0,1,0,1,0,0},
- {0,0,0,1,0,0,0},
- {0,0,1,0,1,0,0},
- {0,1,0,0,0,1,0},
- {1,0,0,0,0,0,1},
- }
- menu.tabAlphabet.Y = {
- {1,0,0,0,0,0,1},
- {0,1,0,0,0,1,0},
- {0,0,1,0,1,0,0},
- {0,0,0,1,0,0,0},
- {0,0,0,1,0,0,0},
- {0,0,0,1,0,0,0},
- {0,0,0,1,0,0,0},
- }
- menu.tabAlphabet.Z = {
- {1,1,1,1,1,1,1},
- {0,0,0,0,0,1,0},
- {0,0,0,0,1,0,0},
- {0,0,0,1,0,0,0},
- {0,0,1,0,0,0,0},
- {0,1,0,0,0,0,0},
- {1,1,1,1,1,1,1},
- }
- menu.tabIndexAlphabet = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}
- menu.alphabetSheet = {}
- liste_sprites_menu = {}
- liste_sprites_jeu = {}
- liste_aliens = {}
- liste_tirs = {}
- --NIVEAU/MAP--------------------------------------------------------------------------------------------
- --FONCTION NEWSQUELETTE DE BASE-------------------------------------------------------------------------
- function math.angle(x1,y1, x2,y2) return math.atan2(y2-y1, x2-x1) end
- function collide(a1, a2)
- if (a1==a2) then return false end
- local dx = a1.x - a2.x
- local dy = a1.y - a2.y
- if (math.abs(dx) < a1.canvas:getWidth()/2+a2.canvas:getWidth()/2) then
- if (math.abs(dy) < a1.canvas:getHeight()/2+a2.canvas:getHeight()/2) then
- return true
- end
- end
- return false
- end
- function CreeSpriteMenu(pIndex,pX,pY,pScaleW,pScaleH,pAnime)
- sprite = {}
- sprite.index = pIndex
- sprite.x = pX
- sprite.y = pY
- sprite.scaleW = pScaleW
- sprite.scaleH = pScaleH
- table.insert(liste_sprites_menu,sprite)
- return sprite
- end
- function CreeSpriteJeu(pNomCanvas,pX,pY,pAngle,pScaleW,pScaleH,pSpeedX,pSpeedY,pEnergy,pAnime)
- sprite = {}
- sprite.canvas = pNomCanvas
- sprite.x = pX
- sprite.y = pY
- sprite.angle = math.rad(pAngle)
- sprite.scaleW = pScaleW
- sprite.scaleH = pScaleH
- sprite.speedX = pSpeedX
- sprite.speedY = pSpeedY
- sprite.energy = pEnergy
- sprite.initVie = pEnergy
- sprite.delete = false
- table.insert(liste_sprites_jeu,sprite)
- sprite.frame = 1
- sprite.listeFrames = {}
- sprite.maxFrame = 1
- return sprite
- end
- function CreeAlien(pType,pX,pY,pAngle,pScaleW,pScaleH,pSpeedX,pSpeedY,pEnergy,pAnime)
- alien = {}
- local pNomCanvas = ""
- if pType == 1 then
- pNomCanvas = canvas.enemy1
- alien = CreeSpriteJeu(pNomCanvas,pX,pY,pAngle,pScaleW,pScaleH,pSpeedX,pSpeedY,pEnergy,pAnime)
- table.insert(liste_aliens,alien)
- end
- if pType == 2 then
- pNomCanvas = canvas.enemy2
- alien = CreeSpriteJeu(pNomCanvas,pX,pY,pAngle,pScaleW,pScaleH,pSpeedX,pSpeedY,pEnergy,pAnime)
- table.insert(liste_aliens,alien)
- end
- if pType == 3 then --tourelle enemy octosprite
- pNomCanvas = canvas.launcherType1[1]
- alien = CreeSpriteJeu(pNomCanvas,pX,pY,pAngle,pScaleW,pScaleH,pSpeedX,pSpeedY,pEnergy,pAnime)
- table.insert(liste_aliens,alien)
- end
- if pType == 4 then
- pNomCanvas = canvas.tourelleChar
- alien = CreeSpriteJeu(pNomCanvas,pX,pY,pAngle,pScaleW,pScaleH,pSpeedX,pSpeedY,pAnime)
- table.insert(liste_aliens,alien)
- alien.chronotir = 0
- alien.type = pType
- alien.endormie = true
- alien.tourelleChar = true
- alien.energy = 5
- pNomCanvas = canvas.baseChar[1]
- alien = CreeSpriteJeu(pNomCanvas,pX,pY,pAngle,pScaleW,pScaleH,pSpeedX,pSpeedY,pAnime)
- table.insert(liste_aliens,alien)
- alien.chronotir = 0
- alien.type = pType
- alien.endormie = true
- alien.energy = 10
- end
- if pType == 1 then
- local dir = math.random(1,2)
- if dir == 1 then
- alien.speedX = alien.speedX*-1
- else
- alien.speedX = alien.speedX
- end
- alien.rotate = 1
- elseif pType == 2 then
- alien.angleTir = 0
- elseif pType == 4 then
- alien.frame = 1
- alien.listeFrames = canvas.baseChar
- alien.maxFrame = #canvas.baseChar
- elseif pType == 3 then
- alien.frame = 1
- alien.listeFrames = canvas.launcherType1
- alien.maxFrame = #canvas.launcherType1
- end
- alien.chronotir = 0
- alien.type = pType
- alien.endormie = true
- end
- function CreeTir(pNomCanvas,pX,pY,pAngle,pScaleW,pScaleH,pSpeedX,pSpeedY,pType,pAllegance)
- tir = CreeSpriteJeu(pNomCanvas,pX,pY,pAngle,pScaleW,pScaleH,pSpeedX,pSpeedY,pAnime)
- table.insert(liste_tirs,tir)
- tir.type = pType
- tir.allegance = pAllegance
- end
- function loadMenu()
- print("chargement de l'alphabet")
- local n
- for n=1,#menu.tabIndexAlphabet do
- local canvas = love.graphics.newCanvas(70,70)
- love.graphics.setCanvas(canvas)
- local l,c
- local x,y = 0,0
- love.graphics.setColor(math.random(40,255),math.random(40,255),math.random(40,255))
- for l=1,#menu.tabAlphabet[menu.tabIndexAlphabet[n]] do
- for c=1,#menu.tabAlphabet[menu.tabIndexAlphabet[n]][l] do
- local id = menu.tabAlphabet[menu.tabIndexAlphabet[n]][l][c]
- if id > 0 then
- --love.graphics.setColor(244,235,66) pour les canvas hors lettres config des couleur dans le canvas
- love.graphics.rectangle("fill",x,y,10,10)
- --probleme de gestion de coleur avec le code qui suit voir comment resoudre ceci
- -- love.graphics.setColor(255,255,255)
- -- love.graphics.setColor(50,152,35)
- -- love.graphics.rectangle("line",x,y,10,10)
- end
- x=x+10
- end
- x=0
- y = y + 10
- end
- table.insert(menu.alphabetSheet,canvas)
- end
- print("chargement de l'alphabet terminé")
- love.graphics.setColor(255,255,255)
- love.graphics.setCanvas()
- local x = 60
- local y = 150
- local line1 = {9,3,9,0,20,15,21,20,0,4,5,2,21,20,5}
- -- ici première ligne
- local n
- for n=1, #line1 do
- id = line1[n]
- if id > 0 then
- CreeSpriteMenu(id,x,y,1.2,1.2)
- end
- x=x+65
- if n < #line1/2 then
- y = y-15
- elseif n >= #line1/2 then
- y = y + 15
- end
- end
- --ici 2ème ligne
- local line2 = {7,1,13,5,0,3,15,4,5,21,18,0,19,20,21,4,5,14,20}
- x = 150
- y = 350
- for n=1, #line2 do
- id = line2[n]
- if id > 0 then
- if n==1 or n==6 or n==13 then
- CreeSpriteMenu(id,x,y,1.5,1.5)
- else
- CreeSpriteMenu(id,x,y,0.75,0.75)
- end
- end
- x=x+45
- end
- --3ème ligne
- local line3 = {7,1,13,5,0,10,1,13,0,16,21,18,5,0,3,15,4,5}
- x=60
- y=600
- for n=1, #line3 do
- id = line3[n]
- if id > 0 then
- if n==1 or n==5 or n>8 then
- CreeSpriteMenu(id,x,y,1.2,1.2)
- else
- CreeSpriteMenu(id,x,y,0.75,0.75)
- end
- end
- if n < #line3/2 then
- y = y + 8
- x=x+40
- elseif n >= #line3/2 then
- y = y - 7
- x=x+65
- end
- end
- --line push space
- local line4 = {16,21,19,8,0,19,16,1,3,5,0,6,15,18,19,20,1,18,20}
- x = 200
- y = 475
- for n=1, #line4 do
- id = line4[n]
- if id > 0 then
- if n>14 then
- CreeSpriteMenu(id,x,y,0.60,0.60)
- else
- CreeSpriteMenu(id,x,y,0.35,0.35)
- end
- end
- if n>13 then
- x = x+45
- else
- x=x+25
- end
- end
- end
- function loadJeu()
- --------------CANVAS HEROS---------------------------------------
- print("chargements des heros")
- love.graphics.setCanvas(canvas.heros)
- local h = canvas.heros:getHeight()
- local l = canvas.heros:getWidth()
- love.graphics.setColor(66, 134, 244)--bleu
- love.graphics.polygon("fill",0,80,120,80,60,0)
- --aile gauche
- love.graphics.setColor(244, 43, 29)--rouge
- love.graphics.polygon("fill",0,80,l/7*3,80,l/7*3,h-(h/3.5*3))
- love.graphics.setColor(161, 66, 244)--violet
- love.graphics.polygon("fill",0,80,l/7*2,80,l/7*2,h-(h/3.5*2))
- love.graphics.setColor(111, 232, 51)--vert
- love.graphics.polygon("fill",0,80,l/7,80,l/7,h-(h/3.5))
- --aile droite
- love.graphics.setColor(244, 43, 29)--rouge
- love.graphics.polygon("fill",120,80,l/7*4,80,l/7*4,h-(h/3.5*3))
- love.graphics.setColor(161, 66, 244)--violet
- love.graphics.polygon("fill",120,80,l/7*5,80,l/7*5,h-(h/3.5*2))
- love.graphics.setColor(111, 232, 51)--vert
- love.graphics.polygon("fill",120,80,l/7*6,80,l/7*6,h-(h/3.5))
- --bulle cockpit
- love.graphics.setColor(239, 236, 35)
- local n
- for n=1,15 do
- love.graphics.circle("fill",l/2,0+(l/7/2)+n,l/7/2)
- end
- love.graphics.setColor(255,255,255)
- love.graphics.setCanvas()
- heros = CreeSpriteJeu(canvas.heros,heros.x,heros.y,0,1,1,500,500)
- heros.x = largeur/2
- heros.y = hauteur - canvas.heros:getHeight()
- heros.energy = 10
- print("chargements des heros terminé")
- -----------------------TIRS---------------------------------------
- print("chargment des tirs")
- ----tirs 1 orange----
- love.graphics.setCanvas(canvas.tir1)
- love.graphics.setColor(239, 124, 23)--orange
- love.graphics.circle("fill",canvas.tir1:getWidth()/2,canvas.tir1:getHeight()/2,7)
- love.graphics.setColor(255,255,255)
- love.graphics.setCanvas()
- ----tirs alien 1------
- love.graphics.setCanvas(canvas.tir2)
- love.graphics.setColor(247, 243, 12)--jaune
- love.graphics.circle("fill",canvas.tir2:getWidth()/2,canvas.tir2:getHeight()/2,7)
- love.graphics.setColor(255,255,255)
- love.graphics.setCanvas()
- ------tirs alien 2 -----------
- love.graphics.setCanvas(canvas.tir3)
- love.graphics.setColor(196, 65, 244)--violet
- love.graphics.circle("fill",canvas.tir3:getWidth()/2,canvas.tir3:getHeight()/2,7)
- love.graphics.setColor(255,255,255)
- love.graphics.setCanvas()
- love.graphics.setCanvas(canvas.tir4)
- love.graphics.setColor(196, 152, 19)--cuivre
- love.graphics.rectangle("fill",0,0,15,15)
- love.graphics.circle("fill",7.5,15,7.5)
- -- local n
- -- x,y,z = 7.5,7.5,7.5
- -- for n=1,50 do
- -- love.graphics.circle("fill",x,y,z)
- -- y = y + 0.02
- -- z = z - 0.1
- -- end
- love.graphics.setColor(255,255,255)
- love.graphics.setCanvas()
- print("chargment des tis terminé")
- --------------------------CANVAS ENEMY 1------------------------
- print("chargement des enemys")
- love.graphics.setCanvas(canvas.enemy1)
- local x,y = 0,0
- for l=1,#enemy[1] do
- for c=1,#enemy[1][l] do
- local id = enemy[1][l][c]
- if id > 0 then
- love.graphics.setColor(12, 110, 247)--bleu
- love.graphics.rectangle("fill",x,y,9,9,5,5)
- end
- x=x+10
- end
- x=0
- y = y + 10
- end
- love.graphics.setColor(247, 243, 12)--jaune
- love.graphics.circle("fill",canvas.enemy1:getWidth()/2,canvas.enemy1:getHeight()/2,10)
- love.graphics.setColor(255,255,255)
- love.graphics.setCanvas()
- ----------------enemy2--------------------------
- love.graphics.setCanvas(canvas.enemy2)
- local l,c
- local x,y = 0,0
- for l=1,#enemy[2] do
- for c=1,#enemy[2][l] do
- local id = enemy[2][l][c]
- if id > 0 then
- love.graphics.setColor(66, 244, 72)--vert
- love.graphics.rectangle("fill",x,y,9,9,5,5)
- end
- x=x+10
- end
- x=0
- y = y + 10
- end
- love.graphics.setColor(196, 65, 244)--violet
- love.graphics.circle("fill",canvas.enemy2:getWidth()/2,canvas.enemy2:getHeight()/2,10)
- love.graphics.setColor(255,255,255)
- love.graphics.setCanvas()
- ---------------------- base char 1------------------------
- love.graphics.setCanvas(canvas.baseChar[1])
- -----chenille gauche--------------
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,0,20,20/3)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,0,20,20/3)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,20/3,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,20/3,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,20+20/3,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,20+20/3,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,40+20/3,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,40+20/3,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,60+20/3,20,20/3*2)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,60+20/3,20,20/3*2)
- --------chenille droite-------------------
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,0,20,20/3)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,0,20,20/3)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,20/3,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,20/3,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,20+20/3,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,20+20/3,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,40+20/3,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,40+20/3,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,60+20/3,20,20/3*2)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,60+20/3,20,20/3*2)
- ------------ base tourelle--------------
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",20,10,40,60)
- love.graphics.setColor(255,255,255)
- love.graphics.setCanvas()
- ---------------------- base char 1------------------------
- love.graphics.setCanvas(canvas.baseChar[2])
- -----chenille gauche--------------
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,0,20,20/3*2)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,0,20,20/3*2)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,20/3*2,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,20/3*2,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,20+20/3*2,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,20+20/3*2,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,40+20/3*2,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,40+20/3*2,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,60+20/3*2,20,20/3)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,60+20/3*2,20,20/3)
- --------chenille droite-------------------
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,0,20,20/3*2)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,0,20,20/3*2)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,20/3*2,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,20/3*2,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,20+20/3*2,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,20+20/3*2,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,40+20/3*2,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,40+20/3*2,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,60+20/3*2,20,20/3)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,60+20/3*2,20,20/3)
- love.graphics.rectangle("line",60,60+20/3*2,20,20/3)
- ------------ base tourelle--------------
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",20,10,40,60)
- love.graphics.setColor(255,255,255)
- love.graphics.setCanvas()
- ---------------------- base char 3------------------------
- love.graphics.setCanvas(canvas.baseChar[3])
- -----chenille gauche--------------
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,0,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,0,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,20,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,20,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,40,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,40,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,60,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,60,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",0,80,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",0,80,20,20)
- --------chenille droite-------------------
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,0,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,0,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,20,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,20,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,40,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,40,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,60,20,20)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,60,20,20)
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",60,80,20,20/3)
- love.graphics.setColor(0,0,0)
- love.graphics.rectangle("line",60,80,20,20/3)
- love.graphics.rectangle("line",60,80,20,20/3)
- ------------ base tourelle--------------
- love.graphics.setColor(4, 117, 25)--vert foncé
- love.graphics.rectangle("fill",20,10,40,60)
- love.graphics.setColor(255,255,255)
- love.graphics.setCanvas()
- -------------tourelle-----------------
- love.graphics.setCanvas(canvas.tourelleChar)
- love.graphics.setColor(4, 117, 25)
- love.graphics.rectangle("fill",12.5,75,15,45)
- love.graphics.circle("fill",20,60,20)
- love.graphics.setColor(50,125,200)
- love.graphics.circle("line",20,60,20)
- love.graphics.circle("line",25,55,5)
- love.graphics.setColor(50,125,200)
- love.graphics.rectangle("line",12.5,80,15,40)
- love.graphics.setColor(255,255,255)
- love.graphics.setCanvas()
- -----------------TOURELLE LAUNCHE ALIEN-------------------
- -----------TYPE 1----------------
- ---Ferme-----------
- love.graphics.setCanvas(canvas.launcherType1[1])
- love.graphics.setColor(66, 62, 62)--gris
- love.graphics.rectangle("fill",0,0,120,100)
- love.graphics.setColor(226, 23, 9) --rouge
- love.graphics.rectangle("fill",50,0,20,100)
- love.graphics.rectangle("fill",0,40,120,20)
- love.graphics.setColor(255,255,255)
- love.graphics.setCanvas()
- ---ouverture 1/2-----------
- love.graphics.setCanvas(canvas.launcherType1[2])
- love.graphics.setColor(12, 110, 247)--bleu
- love.graphics.rectangle("fill",20,10,80,80)
- love.graphics.setColor(247, 243, 12)--jaune
- love.graphics.circle("fill",60,50,10)
- love.graphics.setColor(226, 23, 9) --rouge
- love.graphics.rectangle("fill",0,0,50,40)
- love.graphics.setColor(226, 23, 9) --rouge
- love.graphics.rectangle("fill",0,60,50,40)
- love.graphics.setColor(226, 23, 9) --rouge
- love.graphics.rectangle("fill",70,0,50,40)
- love.graphics.setColor(226, 23, 9) --rouge
- love.graphics.rectangle("fill",70,60,50,40)
- love.graphics.setColor(66, 62, 62)--gris
- love.graphics.rectangle("fill",0,0,40,30)
- love.graphics.setColor(66, 62, 62)--gris
- love.graphics.rectangle("fill",0,70,40,30)
- love.graphics.setColor(66, 62, 62)--gris
- love.graphics.rectangle("fill",80,0,40,30)
- love.graphics.setColor(66, 62, 62)--gris
- love.graphics.rectangle("fill",80,70,40,30)
- ---ouverture 3/4-----------
- love.graphics.setCanvas(canvas.launcherType1[3])
- love.graphics.setColor(12, 110, 247)--bleu
- love.graphics.rectangle("fill",20,30,80,40)
- love.graphics.setColor(12, 110, 247)--bleu
- love.graphics.rectangle("fill",30,20,60,60)
- love.graphics.setColor(12, 110, 247)--bleu
- love.graphics.rectangle("fill",40,10,40,80)
- love.graphics.setColor(247, 243, 12)--jaune
- love.graphics.circle("fill",60,50,10)
- love.graphics.setColor(226, 23, 9) --rouge
- love.graphics.rectangle("fill",0,0,30,20)
- love.graphics.setColor(226, 23, 9) --rouge
- love.graphics.rectangle("fill",0,80,30,20)
- love.graphics.setColor(226, 23, 9) --rouge
- love.graphics.rectangle("fill",90,0,30,20)
- love.graphics.setColor(226, 23, 9) --rouge
- love.graphics.rectangle("fill",90,80,30,20)
- love.graphics.setColor(66, 62, 62)--gris
- love.graphics.rectangle("fill",0,0,20,10)
- love.graphics.setColor(66, 62, 62)--gris
- love.graphics.rectangle("fill",0,80,20,10)
- love.graphics.setColor(66, 62, 62)--gris
- love.graphics.rectangle("fill",100,0,20,10)
- love.graphics.setColor(66, 62, 62)--gris
- love.graphics.rectangle("fill",100,80,20,10)
- -- love.graphics.setColor(226, 23, 9) --rouge
- -- love.graphics.setColor(226, 23, 9) --rouge
- -- love.graphics.rectangle("fill",50,0,20,100)
- -- love.graphics.rectangle("fill",0,40,120,20)
- -- love.graphics.setColor(66, 62, 62)--gris
- -- love.graphics.rectangle("fill",0,0,120,100)
- -- love.graphics.setColor(226, 23, 9) --rouge
- -- love.graphics.rectangle("fill",50,0,20,100)
- -- love.graphics.rectangle("fill",0,40,120,20)
- -- love.graphics.setColor(255,255,255)
- love.graphics.setCanvas()
- print("chargement des enemys terminé")
- ------------------------Creation des enemy en sprite---------------------------
- -- enemy1 = CreeAlien(1,largeur/2,hauteur/2,0,1,1,0,0,3)
- -- enemy2 = CreeAlien(2,200,100,0,1,1,0,0,4)
- -- tourelle = CreeAlien(4,largeur/3,hauteur/2,0,1,1,0,0)
- CreeAlien(3,largeur/2,hauteur/2,0,1,1,0,0)
- end
- -------------------------------------UPDATE-------------------------------------------------------------
- function updateMenu()
- end
- --local ratioRotate = 0
- function updateJeu(dt)
- -- ratioRotate = ratioRotate + 0.001
- ----------------------update des tirs-----------------
- local n
- for n=#liste_tirs,1,-1 do
- tir = liste_tirs[n]
- tir.y = tir.y + (tir.speedY * dt)
- tir.x = tir.x + (tir.speedX * dt)
- if tir.allegance == "horde" then
- if collide(tir,heros) then
- tir.delete = true
- table.remove(liste_tirs,n)
- print("JE SUIS TOUCHE")
- heros.energy = heros.energy - 1
- if heros.energy <= 0 then
- ecrant_courrant = "gameover"
- end
- end
- end
- if tir.allegance == "alliance" then
- local nAlien
- for nAlien=#liste_aliens,1,-1 do
- alien = liste_aliens[nAlien]
- if alien.endormie == false then
- if collide(tir,alien) then
- tir.delete = true
- table.remove(liste_tirs,n)
- print("ENEMY HITED")
- alien.energy = alien.energy - 1
- if alien.energy <= 0 then
- alien.delete = true
- table.remove(liste_aliens,nAlien)
- end
- end
- end
- end
- end
- if tir.y > hauteur or tir.y < 0 or tir.x > largeur or tir.x < 0 then
- tir.delete = true
- table.remove(liste_tirs,n)
- end
- end
- ------update des aliens------
- for n=#liste_aliens,1,-1 do
- alien = liste_aliens[n]
- if alien.y >=0 then
- alien.endormie = false
- end
- if alien.endormie == false then
- alien.y = alien.y + (alien.speedY * dt)
- alien.x = alien.x + (alien.speedX * dt)
- alien.chronotir = alien.chronotir - 1
- if alien.type == 1 then
- alien.angle = alien.angle + (90*dt)--bug avec - (90*dt)
- if alien.angle > 360 or alien.angle < - 360 then
- alien.angle = alien.angle%360
- end
- -- if math.abs(math.floor(alien.angle)) == 90 or math.abs(math.floor(alien.angle)) == 180
- -- or math.abs(math.floor(alien.angle)) == 270 or math.abs(math.floor(alien.angle)) == 0 then
- if math.abs(math.floor(alien.angle))%90 == 0 then --or alien.angle %180 or alien.angle % 270 or alien.angle %360 then
- CreeTir(canvas.tir2,alien.x,alien.y + canvas.enemy1:getHeight()/2,0,1,1,0,500,2,"horde")
- CreeTir(canvas.tir2,alien.x,alien.y - canvas.enemy1:getHeight()/2,0,1,1,0,-500,2,"horde")
- CreeTir(canvas.tir2,alien.x + canvas.enemy1:getWidth()/2,alien.y ,0,1,1,500,0,2,"horde")
- CreeTir(canvas.tir2,alien.x - canvas.enemy1:getWidth()/2,alien.y,0,1,1,-500,0,2,"horde")
- end
- end
- if alien.type == 2 then
- alien.angle = alien.angle + (5*dt)
- if alien.chronotir <= 0 then
- alien.angleTir = alien.angleTir + (49*dt)
- CreeTir(canvas.tir3,alien.x,alien.y,0,1,1,500*math.cos(alien.angleTir),500*math.sin(alien.angleTir),3,"horde")
- CreeTir(canvas.tir3,alien.x,alien.y,0,1,1,-500*math.cos(alien.angleTir),-500*math.sin(alien.angleTir),3,"horde")
- alien.chronotir = 10
- end
- end
- if alien.type == 4 then
- if alien.tourelleChar then
- if alien.chronotir <= 0 then
- local angle
- angle = math.angle(alien.x,alien.y,heros.x,heros.y)
- alien.angle = angle + 4.7
- CreeTir(canvas.tir4,alien.x,alien.y,alien.angle,1,1,100*math.cos(angle),100*math.sin(angle),4,"horde")
- alien.chronotir = math.random(40,60)
- tir.angle = angle + 4.7
- end
- end
- end
- else
- alien.y = alien.y + camera.y
- end
- end
- --update gestion de tous les sprite jeu----------------
- for n=#liste_sprites_jeu,1,-1 do
- sprite = liste_sprites_jeu[n]
- if sprite.maxFrame > 1 then
- if sprite.type==4 then
- sprite.frame = sprite.frame + 0.2
- if math.floor(sprite.frame) > sprite.maxFrame then
- sprite.frame = 1
- else
- sprite.canvas = sprite.listeFrames[math.floor(sprite.frame)]
- end
- elseif sprite.type == 3 then
- chronoLaunch = chronoLaunch - 1
- if chronoLaunch <= 0 then
- sprite.frame = sprite.frame + 0.02
- if math.floor(sprite.frame) > sprite.maxFrame then
- sprite.frame = 1
- chronoLaunch = 120
- CreeAlien(1,sprite.x,sprite.y,0,1,1,50,100,3)
- else
- sprite.canvas = sprite.listeFrames[math.floor(sprite.frame)]
- end
- end
- end
- end
- if sprite.delete == true then
- table.remove(liste_sprites_jeu,n)
- end
- end
- if love.keyboard.isDown("up") then
- if heros.y > 0 + canvas.heros:getHeight()/2 then
- heros.y = heros.y - (heros.speedY*dt)
- else
- heros.y = 0 + canvas.heros:getHeight()/2
- end
- end
- if love.keyboard.isDown("down") then
- if heros.y < hauteur - canvas.heros:getHeight()/2 then
- heros.y = heros.y + (heros.speedY*dt)
- else
- heros.y = hauteur - canvas.heros:getHeight()/2
- end
- end
- if love.keyboard.isDown("left") then
- if heros.x > 0 + canvas.heros:getWidth()/2 then
- heros.x = heros.x - (heros.speedX*dt)
- else
- heros.x = 0 + canvas.heros:getWidth()/2
- end
- end
- if love.keyboard.isDown("right") then
- if heros.x < largeur - canvas.heros:getWidth()/2 then
- heros.x = heros.x + (heros.speedX*dt)
- else
- heros.x = largeur - canvas.heros:getWidth()/2
- end
- end
- camera.y = camera.y + (camera.vitesse*dt)
- end
- --if condition gameover then
- --ecrant_courant = "gameOver"
- --if condition victory then
- --victory = true
- --victoryTimer=500
- --victoryTimer = victoryTimer - 1
- --if victoryTimer <= 0 then
- -- ecrancourant = "victory"
- --vict
- --victory = true
- --end
- function updateGameOver()
- end
- function updateVictory()
- end
- -----------------------------------------DRAW-----------------------------------------------------------
- function drawMenu()
- local n
- for n=1, #liste_sprites_menu do
- sprite = liste_sprites_menu[n]
- love.graphics.draw(menu.alphabetSheet[sprite.index],sprite.x,sprite.y,0,sprite.scaleW,sprite.scaleH
- ,menu.alphabetSheet[sprite.index]:getWidth()/2,menu.alphabetSheet[sprite.index]:getHeight()/2)
- end
- love.graphics.print("nb de sprite_menu = "..tostring(#liste_sprites_menu))
- end
- function drawJeu()
- local n
- for n=#liste_sprites_jeu,1,-1 do
- sprite = liste_sprites_jeu[n]
- love.graphics.setBlendMode("alpha")
- love.graphics.draw(sprite.canvas,sprite.x,sprite.y,sprite.angle,sprite.scaleW,sprite.scaleH,
- sprite.canvas:getWidth()/2,sprite.canvas:getHeight()/2)
- end
- --dessin de la barre hp heros--
- heros.initVie = 10
- if heros.energy >= heros.initVie/3 * 2 then
- love.graphics.setColor(51,255,0)
- love.graphics.rectangle("fill",heros.x - heros.canvas:getWidth()/2, heros.y + heros.canvas:getHeight(),heros.energy*12,5)
- elseif heros.energy < heros.initVie/3 * 2 and heros.energy >= heros.initVie/3 then
- love.graphics.setColor(255,102,0)
- love.graphics.rectangle("fill",heros.x - heros.canvas:getWidth()/2, heros.y + heros.canvas:getHeight(),heros.energy*12,5)
- elseif heros.energy < heros.initVie/3 then
- love.graphics.setColor(255,0,0)
- love.graphics.rectangle("fill",heros.x - heros.canvas:getWidth()/2, heros.y + heros.canvas:getHeight(),heros.energy*12,5)
- end
- love.graphics.setColor(255,255,255)
- -- love.graphics.rectangle("fill",largeur/2,hauteur/2,50,50)
- -- love.graphics.setColor(51,255,0)
- -- love.graphics.circle("fill",largeur/2,hauteur/2,25)
- -- love.graphics.setColor(255,255,255)
- -- love.graphics.print("nb sprites : "..tostring(#liste_sprites_jeu))
- -- love.graphics.print("nb tirs : "..tostring(#liste_tirs),0,20)
- -- love.graphics.print("hp.hero : "..tostring(heros.energy),0,30)
- ---- love.graphics.print("angle = "..tostring(math.floor(liste_aliens[1].angle)),0,30)
- -- love.graphics.print("pi value "..tostring(math.pi/4),0,50)
- -- love.graphics.print("alien canvas = "..tostring(alien.canvas),0,60)
- end
- function drawGameOver()
- end
- function drawVictory()
- end
- -------------------------------------------GENERAL LOAD/UPDATE/DRAW----------------------------------------
- function love.load()
- love.window.setMode(1024,768)
- love.window.setTitle("GameCodeurStudentShooter")
- largeur = love.graphics.getWidth()
- hauteur = love.graphics.getHeight()
- loadMenu()
- end
- function love.update(dt)
- if ecrant_courant == "jeu" then
- updateJeu(dt)
- elseif ecrant_courant == "menu" then
- updateMenu()
- elseif ecrant_courant == "gameover" then
- updateGameOver()
- elseif ecrant_courant == "victory" then
- updateVictory()
- end
- end
- function love.draw()
- if ecrant_courant == "jeu" then
- drawJeu()
- elseif ecrant_courant == "menu" then
- drawMenu()
- elseif ecrant_courant == "gameover" then
- drawGameOver()
- elseif ecrant_courant == "victory" then
- drawVictory()
- end
- end
- function love.keypressed(key)
- if key == "space" then
- if ecrant_courant == "menu" then
- ecrant_courant = "jeu"
- loadJeu()
- elseif ecrant_courant == "jeu" then
- CreeTir(canvas.tir1,heros.x,heros.y - heros.canvas:getHeight()/2,0,1,1,0,-500,1,"alliance")
- end
- end
- if key == "escape" then
- love.event.push("quit")
- end
- if key =="v" then
- local state = not love.mouse.isVisible() -- the opposite of whatever it currently is
- love.mouse.setVisible(state)
- end love.mouse.isVisible()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement