commit b7b95f023fd45fc3159455b658b16ca11fac743d Author: Astro Date: Sun Mar 21 20:10:19 2021 +0100 funktioniert diff --git a/Grundschrift-Normal.otf b/Grundschrift-Normal.otf new file mode 100644 index 0000000..4129d79 Binary files /dev/null and b/Grundschrift-Normal.otf differ diff --git a/arm.png b/arm.png new file mode 100644 index 0000000..46c3882 Binary files /dev/null and b/arm.png differ diff --git a/baummonster.png b/baummonster.png new file mode 100644 index 0000000..cd2f466 Binary files /dev/null and b/baummonster.png differ diff --git a/faust.png b/faust.png new file mode 100644 index 0000000..e94d511 Binary files /dev/null and b/faust.png differ diff --git a/feuerwerksrakete.png b/feuerwerksrakete.png new file mode 100644 index 0000000..73b56a6 Binary files /dev/null and b/feuerwerksrakete.png differ diff --git a/flame.png b/flame.png new file mode 100644 index 0000000..d71a1cf Binary files /dev/null and b/flame.png differ diff --git a/flame2.png b/flame2.png new file mode 100644 index 0000000..24246af Binary files /dev/null and b/flame2.png differ diff --git a/geist.png b/geist.png new file mode 100644 index 0000000..26282cd Binary files /dev/null and b/geist.png differ diff --git a/kingkong.png b/kingkong.png new file mode 100644 index 0000000..70ed503 Binary files /dev/null and b/kingkong.png differ diff --git a/lindwurm.png b/lindwurm.png new file mode 100644 index 0000000..5689e8d Binary files /dev/null and b/lindwurm.png differ diff --git a/main.lua b/main.lua new file mode 100644 index 0000000..fe5f675 --- /dev/null +++ b/main.lua @@ -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 diff --git a/parachute.png b/parachute.png new file mode 100644 index 0000000..b22fb51 Binary files /dev/null and b/parachute.png differ diff --git a/robot.png b/robot.png new file mode 100644 index 0000000..3e3ff0b Binary files /dev/null and b/robot.png differ diff --git a/steinmonster.png b/steinmonster.png new file mode 100644 index 0000000..f3a99e1 Binary files /dev/null and b/steinmonster.png differ