background = Image.load("background.jpg")
vaisseauIA = Image.load("IA1b.jpg")
battery1 = Image.load("battery0.jpg")
battery2 = Image.load("battery1.jpg")
battery3 = Image.load("battery2.jpg")
battery4 = Image.load("battery3.jpg")
rouge=Color.new(255,0,0)
blanc = Color.new(255,255,255)
 
balle = Image.createEmpty(3,3)
balle:clear(rouge)
 
oldpad = Controls.read()
 
currentBullet = 0
statut = "droite"
positionY = 40
positionX = 30
x = 0
y = 0
barredevie = {}
barredevie.y = 10
barredevie.vie = 100 
 
IAcurrentBullet = 0
IAstatut = "droite"
IApositionY = 70
IApositionX = 400
IAx = 0
IAy = 0
IAbarredevie ={}
IAbarredevie.y = 10
IAbarredevie.vie = 100
 
vaisseauhauteur = 45
vaisseaulargeur = 61
 
infotire = {}
for a = 1,20 do
infotire[a] = { pic = balle , firing = false, statut = "droite", x = x + 32,
y =y + 16 }
end
 
IAinfotire = {}
for a = 1,20 do
IAinfotire[a] = { pic = balle , firing = false, statut = "droite", x = IAx - 32,y =IAy + 16 }
end
 
function bulletSetup()
if currentBullet < 20 then
currentBullet = currentBullet + 1
else
currentBullet = 1
end
if statut == "gauche" then
infotire[currentBullet].x = positionX
infotire[currentBullet].y = positionY + 16
end
if statut == "droite" then
infotire[currentBullet].x = positionX + 32
infotire[currentBullet].y = positionY + 16
end
if statut == "haut" then
infotire[currentBullet].x = positionX + 16
infotire[currentBullet].y = positionY
end
if statut == "bas" then
infotire[currentBullet].x = positionX + 16
infotire[currentBullet].y = poxitionY + 32
end
 
infotire[currentBullet].statut = statut
infotire[currentBullet].firing = true
end
 
function IAbulletSetup()
if IAcurrentBullet < 20 then
IAcurrentBullet = IAcurrentBullet + 1
else
IAcurrentBullet = 1
end
if statut == "gauche" then
IAinfotire[IAcurrentBullet].x = IApositionX
IAinfotire[IAcurrentBullet].y = IApositionY + 16
end
if statut == "droite" then
IAinfotire[IAcurrentBullet].x = IApositionX - 32
IAinfotire[IAcurrentBullet].y = IApositionY + 16
end
if statut == "haut" then
IAinfotire[IAcurrentBullet].x = IApositionX - 16
IAinfotire[IAcurrentBullet].y = IApositionY
end
if statut == "bas" then
IAinfotire[IAcurrentBullet].x = IApositionX - 16
IAinfotire[IAcurrentBullet].y = IApoxitionY + 32
end
 
IAinfotire[IAcurrentBullet].statut = statut
IAinfotire[IAcurrentBullet].firing = true
end
 
function bulletFire()
for i = 1,20 do
if infotire[i].firing == true then
if infotire[i].statut == "droite" then infotire[i].x = infotire[i].x + 10 end
if infotire[i].statut == "gauche" then infotire[i].x = infotire[i].x - 10 end
if infotire[i].statut == "haut" then infotire[i].y = infotire[i].y - 10 end
if infotire[i].statut == "bas" then infotire[i].y = infotire[i].y + 10 end
screen:blit(infotire[i].x,infotire[i].y,infotire[i].pic)
end
if infotire[i].x < 0 or infotire[i].x > 480 or infotire[i].y < 0 or infotire[i].y > 272 then infotire[i].firing = false end
end
end
 
function IAbulletFire()
for i = 1,20 do
if IAinfotire[i].firing == true then
if IAinfotire[i].statut == "droite" then IAinfotire[i].x = IAinfotire[i].x - 10 end
if IAinfotire[i].statut == "gauche" then IAinfotire[i].x = IAinfotire[i].x + 10 end
if IAinfotire[i].statut == "haut" then IAinfotire[i].y = IAinfotire[i].y + 10 end
if IAinfotire[i].statut == "bas" then IAinfotire[i].y = IAinfotire[i].y - 10 end
screen:blit(IAinfotire[i].x,IAinfotire[i].y,IAinfotire[i].pic)
end
if IAinfotire[i].x < 0 or IAinfotire[i].x > 480 or IAinfotire[i].y < 0 or IAinfotire[i].y > 272 then IAinfotire[i].firing = false end
end
end
 
function collisionIAballevaisseau1 ()
for i = 1,20 do
if IAinfotire[i].firing == true then
if (positionX + vaisseaulargeur > IAinfotire[i].x) and (positionX < IAinfotire[i].x +3)
and (positionY + vaisseauhauteur > IAinfotire[i].y) and (positionY < IAinfotire[i].y + 3) 
then 
barredevie.vie = barredevie.vie - 2
IAinfotire[i].firing = false
end  
end
end
end
 
function collisionIAballevaisseau2 ()
for i = 1,20 do
if IAinfotire[i].firing == true then
if (positionX + vaisseaulargeur > IAinfotire[i].x) and (positionX < IAinfotire[i].x +3)
and (positionY + vaisseauhauteur > IAinfotire[i].y) and (positionY < IAinfotire[i].y + 3) 
then 
barredevie.vie = barredevie.vie - 2
IAinfotire[i].firing = false
end  
end
end
end
 
function collisionIAballevaisseau3 ()
for i = 1,20 do
if IAinfotire[i].firing == true then
if (positionX + vaisseaulargeur > IAinfotire[i].x) and (positionX < IAinfotire[i].x + 3)
and (positionY + vaisseauhauteur > IAinfotire[i].y) and (positionY < IAinfotire[i].y + 3) 
then 
barredevie.vie = barredevie.vie - 4
IAinfotire[i].firing = false
end  
end
end
end
 
function collisionballeIAvaisseau ()
for i = 1,20 do
if infotire[i].firing == true then
if (IApositionX + vaisseaulargeur > infotire[i].x) and (IApositionX < infotire[i].x + 3)
and (IApositionY + vaisseauhauteur > infotire[i].y) and (IApositionY < infotire[i].y + 3) 
then 
IAbarredevie.vie = IAbarredevie.vie - 4
infotire[i].firing = false
end  
end
end
end
 
function deplacementvaisseau()
pad = Controls.read()
if pad:left() then
statut = "droite"
x = x+5
if positionX>10 then
positionX=positionX-5 
end end
 
if pad:right() then
statut = "droite"
x = x-5
if positionX<240 then
positionX=positionX+5
end end
 
if pad:up() then
statut = "droite"
y = y+5
if positionY>10 then
positionY=positionY-5
end end
 
if pad:down() then
statut = "droite"
y = y-5
if positionY<260 then
positionY=positionY+5
end end
end
 
function deplacementIA(sens)
if sens == "left" then
IAstatut = "droite"
IAx = IAx+5
if IApositionX>240 then
IApositionX=IApositionX-5
end end
 
if sens == "right" then
IAstatut = "droite"
IAx = IAx-5
if IApositionX<475 then
IApositionX=IApositionX+5
end end
 
if sens == "up" then
IAstatut = "droite"
IAy = IAy+5
if IApositionY>10 then
IApositionY=IApositionY-5
end end
 
if sens == "down" then
IAstatut = "droite"
IAy = IAy-5
if IApositionY<245 then
IApositionY=IApositionY+5
end end
end
 
function IA()
 
if positionY > IApositionY  and math.random(1,3) == 1 then -- probabilitée de mvt, a réduire si difficultée augmente
deplacementIA("down")
elseif positionY < IApositionY  and math.random(1,3) == 3 then -- probabilitée de mvt, a réduire si difficultée augmente
deplacementIA("up")
end
 
-- zone aléatoire de mouvement, histoire de faire bouger ton IA de temps en temps
-- Tu peux changer les valeures de manière a ce qu'il bouge plus ou moins, le seul problème reste la fluidité du mouvement ...
randomo = math.random(1,5)
--[[if randomo == 5 then
deplacementIA("down")
end
if randomo == 4 then
deplacementIA("up")
end]]  -- Essaye si tu veux, mais c'est moins fluide avec :D
if randomo == 3 then
deplacementIA("right")
end
if randomo == 2 then
deplacementIA("left")
end
 
if math.random(1,25) == 25 then -- probabilitée de tir, a réduire si difficultée augmente
IAbulletSetup()
end
IAbulletFire()
end
 
function IA2()
 
if positionY > IApositionY  and math.random(1,3) == 1 then -- probabilitée de mvt, a réduire si difficultée augmente
deplacementIA("down")
elseif positionY < IApositionY  and math.random(1,3) == 2 then -- probabilitée de mvt, a réduire si difficultée augmente
deplacementIA("up")
end
 
-- zone aléatoire de mouvement, histoire de faire bouger ton IA de temps en temps
-- Tu peux changer les valeures de manière a ce qu'il bouge plus ou moins, le seul problème reste la fluidité du mouvement ...
randomo = math.random(1,5)
--[[if randomo == 5 then
deplacementIA("down")
end
if randomo == 4 then
deplacementIA("up")
end]]  -- Essaye si tu veux, mais c'est moins fluide avec :D
if randomo == 3 then
deplacementIA("right")
end
if randomo == 2 then
deplacementIA("left")
end
 
if math.random(1,13) == 13 then -- probabilitée de tir, a réduire si difficultée augmente
IAbulletSetup()
end
IAbulletFire()
end
 
function IA3()
 
if positionY > IApositionY  and math.random(1,3) == 1 then -- probabilitée de mvt, a réduire si difficultée augmente
deplacementIA("down")
elseif positionY < IApositionY  and math.random(1,3) == 1 then -- probabilitée de mvt, a réduire si difficultée augmente
deplacementIA("up")
end
 
-- zone aléatoire de mouvement, histoire de faire bouger ton IA de temps en temps
-- Tu peux changer les valeures de manière a ce qu'il bouge plus ou moins, le seul problème reste la fluidité du mouvement ...
randomo = math.random(1,5)
--[[if randomo == 5 then
deplacementIA("down")
end
if randomo == 4 then
deplacementIA("up")
end]]  -- Essaye si tu veux, mais c'est moins fluide avec :D
if randomo == 3 then
deplacementIA("right")
end
if randomo == 2 then
deplacementIA("left")
end
 
if math.random(1,3) == 2 then -- probabilitée de tir, a réduire si difficultée augmente
IAbulletSetup()
end
IAbulletFire()
end
 
while true do
pad = Controls.read()
screen:clear()
screen:blit(0, 0, background)
 
deplacementvaisseau()

collisionballeIAvaisseau ()
 
if difficulter == 1 then
IA ()
collisionIAballevaisseau1 ()
end
 
if difficulter == 2 then
IA2 ()
collisionIAballevaisseau2 ()
end
 
if difficulter == 3 then
IA3 ()
collisionIAballevaisseau3 ()
end
 
if pad:cross() and oldpad:cross() ~= pad:cross() then
bulletSetup()
end
 
bulletFire()
 
if barredevie.vie == 0 then
dofile("perdu.lua")
end
 
if IAbarredevie.vie == 0 then
dofile("gagner.lua")
end
 
if choixvaisseau == 1 then
vaisseau = Image.load("vaisseau.jpg")
end
 
if choixvaisseau == 2 then
vaisseau = Image.load("vaisseau2.jpg")
end
 
if choixvaisseau == 3 then
vaisseau = Image.load("vaisseau3.jpg")
end
 
screen:blit(positionX,positionY, vaisseau)
screen:blit(IApositionX,IApositionY,vaisseauIA)
screen:fillRect(60,5,barredevie.vie,barredevie.y,rouge)
screen:fillRect(390,5,IAbarredevie.vie,IAbarredevie.y,rouge)
screen:print(70,6,barredevie.vie,blanc)
screen:print(400,6,IAbarredevie.vie,blanc)
 
if System.powerGetBatteryLifePercent() >= 0 then batteryL = battery1 end
if System.powerGetBatteryLifePercent() > 25 then batteryL = battery2 end
if System.powerGetBatteryLifePercent() > 50 then batteryL = battery3 end
if System.powerGetBatteryLifePercent() > 75 then batteryL = battery4 end
 
screen:blit(5,5,batteryL)
 
screen.waitVblankStart()
screen.flip()
oldpad = pad
end
