funktioniert

This commit is contained in:
Astro 2021-03-21 20:10:19 +01:00
commit b7b95f023f
14 changed files with 229 additions and 0 deletions

BIN
Grundschrift-Normal.otf Normal file

Binary file not shown.

BIN
arm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

BIN
baummonster.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 738 B

BIN
faust.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 B

BIN
feuerwerksrakete.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 B

BIN
flame.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 964 B

BIN
flame2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

BIN
geist.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

BIN
kingkong.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 B

BIN
lindwurm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 882 B

229
main.lua Normal file
View File

@ -0,0 +1,229 @@
x, y = 400, 300
s2 = 0
sy = 0
pp = 0
gegner_intervall = 0
gegner = {}
gegner_geboren = 0
raketen = {}
explosionen = {}
freund = { x = 200, y = 300 }
rakete_laden = 0
function love.load()
robot = love.graphics.newImage("robot.png")
flame = love.graphics.newImage("flame.png")
parachute = love.graphics.newImage("parachute.png")
feuerwerksrakete = love.graphics.newImage("feuerwerksrakete.png")
faust = love.graphics.newImage("faust.png")
kingkong = love.graphics.newImage("kingkong.png")
geist = love.graphics.newImage("geist.png")
lindwurm = love.graphics.newImage("lindwurm.png")
baummonster = love.graphics.newImage("baummonster.png")
steinmonster = love.graphics.newImage("steinmonster.png")
-- font = love.graphics.newFont("Grundschrift-Normal.otf", 24)
-- love.graphics.setFont(font)
end
function love.update(dt)
-- Bewegung eigener Roboter
if love.keyboard.isDown("left") then
x = x - 100 * dt
end
if love.keyboard.isDown("right") then
x = x + 100 * dt
end
if x < 0 then
x = 0
end
if x > 800 - 32 then
x = 800 - 32
end
if love.keyboard.isDown("up") then
sy = sy - 1 * dt
end
if love.keyboard.isDown("down") then
sy = sy + 1 * dt
end
if sy > 1 then
sy = 1
end
y = y + sy
if y > 600 - 32 then
y = 600 - 32
sy = 0
end
if y < 0 and sy < 0 then
sy = -sy
end
-- Rakete losschiessen
rakete_laden = rakete_laden + dt
if love.keyboard.isDown("space") and rakete_laden > 0.1 then
rakete_laden = 0
table.insert(raketen, { x = x, y = y, s = 10 })
end
-- Raketen weiterfliegen lassen
for r, rakete in ipairs(raketen) do
rakete.s = rakete.s * 1.1
rakete.y = rakete.y - rakete.s * dt
end
-- Gegner treffen mit Rakete
for g, gegner1 in ipairs(gegner) do
for r, rakete in ipairs(raketen) do
if rakete.x > gegner1.x - 16 and rakete.x < gegner1.x + 16 and rakete.y > gegner1.y - 16 and rakete.y < gegner1.y + 16 then
gegner1.leben = gegner1.leben - 25
table.remove(raketen, r)
print("neue explosion")
table.insert(explosionen, { x = rakete.x, y = rakete.y, t = 0 })
end
end
end
for g, gegner1 in ipairs(gegner) do
if gegner1.leben < 1 then
table.remove(gegner, g)
end
end
for r, rakete in ipairs(raketen) do
-- Oberer Bildschirmrand
if rakete.y < 0 then
table.remove(raketen, r)
end
end
for i, explosion in ipairs(explosionen) do
explosion.t = explosion.t + dt
if explosion.t > 1 then
table.remove(explosionen, i)
end
end
-- Neue Gegner
gegner_intervall = gegner_intervall + dt
if gegner_intervall > 0 then
gegner_intervall = -3
local bild = math.floor(4 * math.random())
local kraft = 0.4 * math.random()
if bild == 0 then
kraft = 10 * kraft
end
if gegner_geboren % 30 == 29 then
table.insert(gegner, { x = 100 + 600 * math.random(), y = -100, s = 0, kraft = kraft, leben = 400, bild = 4 })
else
table.insert(gegner, { x = 100 + 600 * math.random(), y = -100, s = 0, kraft = kraft, leben = 100, bild = bild })
end
gegner_geboren = gegner_geboren + 1
end
-- Bewegung Gegner
for i, g in ipairs(gegner) do
if g.x > x then
g.s = g.s - g.kraft * dt
end
if g.x < x then
g.s = g.s + g.kraft * dt
end
if g.s > 100 * dt then
g.s = 100 * dt
end
if g.s < -100 * dt then
g.s = -100 * dt
end
g.x = g.x + g.s
if g.x < 0 then
g.x = 0
end
if g.x > 800 - 32 then
g.x = 800 - 32
end
if g.y > y then
g.y = g.y - 100 * dt
end
if g.y < y then
g.y = g.y + 100 * dt
end
end
-- Bewegung Freund
if table.getn(gegner) > 0 then
local g = gegner[1]
if freund.x < g.x then
freund.x = freund.x + 100 * dt
end
if freund.x > g.x then
freund.x = freund.x - 100 * dt
end
if freund.y < g.y then
freund.y = freund.y + 100 * dt
end
if freund.y > g.y and g.y > 0 then
freund.y = freund.y - 100 * dt
end
end
-- Freund verpruegelt Gegner
for g, gegner1 in ipairs(gegner) do
if gegner1.x > freund.x and gegner1.x < freund.x + 32 and gegner1.y > freund.y and gegner1.y < freund.y + 32 then
gegner1.leben = gegner1.leben - 30 * dt
end
end
end
function love.draw()
love.graphics.setColor(1,1,1, 1)
love.graphics.setBackgroundColor(0.5, 0.5, 1)
if sy < 0 then
love.graphics.draw(flame, x, y + 32)
end
if sy > 0 and pp < 29 then
pp = pp + 1
end
if sy <= 0 and pp > 0 then
pp = pp - 1
end
if pp > 0 then
love.graphics.draw(parachute, x, y - pp)
end
love.graphics.draw(robot, x, y)
-- Durch alle Gegner
for i, g in ipairs(gegner) do
-- Zeichne
if g.bild == 0 then
love.graphics.draw(lindwurm, g.x, g.y)
elseif g.bild == 1 then
love.graphics.draw(geist, g.x, g.y)
elseif g.bild == 2 then
love.graphics.draw(robot, g.x, g.y)
elseif g.bild == 3 then
love.graphics.draw(baummonster, g.x, g.y)
elseif g.bild == 4 then
love.graphics.draw(steinmonster, g.x, g.y)
end
-- Setze Balkenfarbe
love.graphics.setColor(1 - (g.leben / 100), g.leben / 100, 0, 1)
-- Zeichne Balken fuer leben
love.graphics.rectangle("fill", g.x, g.y + 32, 32 * g.leben / 100, 4, 0, 0, 0)
love.graphics.setColor(1,1,1,1)
-- Zeichne Faust
if g.x >= x - 16 and g.x < x + 16 then
love.graphics.draw(faust, g.x + 16, g.y)
end
end
love.graphics.draw(kingkong, freund.x, freund.y)
for i, rakete in ipairs(raketen) do
love.graphics.draw(feuerwerksrakete, rakete.x, rakete.y)
end
for i, explosion in ipairs(explosionen) do
love.graphics.setColor(1, 1 - explosion.t, 0, 1 - explosion.t)
love.graphics.circle("fill", explosion.x, explosion.y, 100 * explosion.t, 10)
end
love.graphics.setColor(1,1,1, 1)
-- love.graphics.print(math.floor(x).." "..math.floor(y).." "..sy, 0, 0)
love.graphics.print("Gegner: "..(#gegner), 0, 0)
end

BIN
parachute.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 B

BIN
robot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

BIN
steinmonster.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB