From 1a041ce6bbc349d07de8a1a4a0921adf34ce4f42 Mon Sep 17 00:00:00 2001 From: Leszek Winnicki Date: Sat, 22 Apr 2017 20:27:46 +0200 Subject: [PATCH] :) --- MerriweatherSans-ExtraBold.ttf | Bin 0 -> 62568 bytes enemies.lua | 7 + main.lua | 299 +++++++++++++++++++++++++++++------------ maploader.lua | 33 +++++ menu.lua | 33 +++++ platforms.lua | 5 + tile1.png | Bin 0 -> 363 bytes tile2.png | Bin 0 -> 373 bytes 8 files changed, 288 insertions(+), 89 deletions(-) create mode 100644 MerriweatherSans-ExtraBold.ttf create mode 100644 maploader.lua create mode 100644 menu.lua create mode 100644 tile1.png create mode 100644 tile2.png diff --git a/MerriweatherSans-ExtraBold.ttf b/MerriweatherSans-ExtraBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5c378775a81aedb81fc8cf312d7233d4844e3770 GIT binary patch literal 62568 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 literal 0 HcmV?d00001 diff --git a/enemies.lua b/enemies.lua index 6923f21..bdeeb17 100644 --- a/enemies.lua +++ b/enemies.lua @@ -7,6 +7,13 @@ function e:new(x,y,w,h,l) enemy.w=w enemy.h=h enemy.dir=1 + enemy.onground=false + enemy.dy=0 enemy.lifes=l table.insert(e.enemies, enemy) +end +function e:clear() + for k in pairs (e.enemies) do + e.enemies[k] = nil + end end \ No newline at end of file diff --git a/main.lua b/main.lua index b5ec28f..2336f0b 100644 --- a/main.lua +++ b/main.lua @@ -2,124 +2,245 @@ require("player") require("platforms") require("enemies") require("collision") +require("menu") +require("maploader") +points=0 +mp={ + {0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,"e",0}, + {0,0,0,0,1,1,1,1,1}, + {0,0,0,0,0,0,0,0,0}, + {1,1,1,1,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0} + } function love.load() lose=false win=false + moveleft=true + moveright=true + player.x=0 + player.y=0 + loadmap(mp) + --[[ p:new(0, 200, 320, 30) p:new(300, 300, 200, 30) p:new(0, 300, 200, 30) - p:new(700, 300, 200, 30) + p:new(600, 300, 200, 30) p:new(480, 200, 320, 30) p:new(0, 400, 320, 30) p:new(480, 400, 320, 30) - e:new(100, 170, 30, 30, 3) + e:new(100, 0, 30, 30, 3) e:new(300, 270, 30, 30, 3) + ]]-- + font=love.graphics.newFont("MerriweatherSans-ExtraBold.ttf", 20) end function love.draw() - if win then - love.graphics.print("YOU WIN", 0, 0, 0, 2, 2) - elseif lose then - love.graphics.print("YOU LOSE", 0, 0, 0, 2, 2) + if startmenu then + love.graphics.setColor(play.color[1], play.color[2], play.color[3]) + love.graphics.rectangle("fill", play.x, play.y, play.w, play.h) + love.graphics.setColor(255-play.color[1], 255-play.color[2], 255-play.color[3]) + love.graphics.translate((play.x+play.w/2)-45, (play.y+play.h/2)-13) + love.graphics.setFont(font) + love.graphics.print("Play", 0, 0, 0, 1, 1) + love.graphics.translate(-((play.x+play.w/2)-45), -((play.y+play.h/2)-13)) + love.graphics.setColor(quit.color[1], quit.color[2], quit.color[3]) + love.graphics.rectangle("fill", quit.x, quit.y, quit.w, quit.h) + love.graphics.setColor(255-quit.color[1], 255-quit.color[2], 255-quit.color[3]) + love.graphics.translate((quit.x+quit.w/2)-45, (quit.y+quit.h/2)-13) + love.graphics.setFont(font) + love.graphics.print("Quit", 0, 0, 0, 1, 1) else - love.graphics.setColor(255, 255, 255) - love.graphics.draw(player.img, player.x, player.y) - love.graphics.setColor(182,182,109) - for _,b in pairs(player.bullets) do - love.graphics.rectangle("fill", b.x, b.y, b.w, b.h) + if pausemenu then + love.graphics.setColor(play.color[1], play.color[2], play.color[3]) + love.graphics.rectangle("fill", play.x, play.y, play.w, play.h) + love.graphics.setColor(255-play.color[1], 255-play.color[2], 255-play.color[3]) + love.graphics.translate((play.x+play.w/2)-90, (play.y+play.h/2)-13) + love.graphics.setFont(font) + love.graphics.print("Back To Game", 0, 0, 0, 1, 1) + love.graphics.translate(-((play.x+play.w/2)-90), -((play.y+play.h/2)-13)) + love.graphics.setColor(quit.color[1], quit.color[2], quit.color[3]) + love.graphics.rectangle("fill", quit.x, quit.y, quit.w, quit.h) + love.graphics.setColor(255-quit.color[1], 255-quit.color[2], 255-quit.color[3]) + love.graphics.translate((quit.x+quit.w/2)-90, (quit.y+quit.h/2)-13) + love.graphics.setFont(font) + love.graphics.print("Quit To Menu", 0, 0, 0, 1, 1) + love.graphics.translate(-((quit.x+quit.w/2)-90), -((quit.y+quit.h/2)-13)) end - love.graphics.setColor(109, 182, 182) - for _,pl in pairs(p.platforms) do - love.graphics.rectangle("fill", pl.x, pl.y, pl.w, pl.h) + if win then + startmenu=true + win=false + e:clear() + t:clear() + love.load() + elseif lose then + startmenu=true + lose=false + e:clear() + t:clear() + love.load() + else + love.graphics.setColor(239, 121, 89) + love.graphics.setFont(font) + love.graphics.print("Points: "..points, 0, 0, 0, 1, 1) + love.graphics.setColor(255, 255, 255) + love.graphics.draw(player.img, player.x, player.y) + love.graphics.setColor(182,182,109) + for _,b in pairs(player.bullets) do + love.graphics.rectangle("fill", b.x, b.y, b.w, b.h) + end + love.graphics.setColor(109, 182, 182) + for _,ti in pairs(t.tiles) do + love.graphics.draw(ti.type, ti.x, ti.y) + end + for _,e in pairs(e.enemies) do + love.graphics.setColor(182-109, 182*2-109, 109) + love.graphics.rectangle("fill", e.x, e.y, e.w, e.h) + end end - for _,e in pairs(e.enemies) do - love.graphics.setColor(182-109, 182*2-109, 109) - love.graphics.rectangle("fill", e.x, e.y, e.w, e.h) + end +end +function love.keyreleased(key) + if key=='escape' and not startmenu then + if pausemenu then + pausemenu=false + else + pausemenu=true end end end function love.update(dt) - if love.keyboard.isDown('d') then - player.x=player.x+player.speed - end - if love.keyboard.isDown('a') then - player.x=player.x-player.speed - end - if love.keyboard.isDown('lshift') then - player.speed=4 - else - player.speed=3 - end - if love.mouse.isDown(1) and player.cooldown==0 then - player:fire() - end - if player.jump then - if player.jumped==0 then - player.dy=-16 - player.ddy=1 - end - if player.dy==0 or player.onground then - player.jumped=0 - player.jump=false + if love.mouse.isDown(1) then + if startmenu and quit.cooldown==0 then + if play.mouse() then + startmenu=false + end + if quit.mouse() then + love.event.quit() + end + elseif pausemenu then + if play.mouse() then + pausemenu=false + end + if quit.mouse() then + pausemenu=false + startmenu=true + quit.cooldown=20 + e:clear() + p:clear() + love.load() + end else - player.jumped=1 - end - player.dy=player.dy+player.ddy - player.y=player.y+player.dy - end - for _,pl in pairs(p.platforms) do - if player.x+player.w>=pl.x and player.x<=pl.x+pl.w and player.y+player.h>=pl.y and player.y+player.h<=pl.y+pl.h then - player.onground=true - player.y=pl.y-player.h + if player.cooldown==0 then + player:fire() + end end end - if player.jump==false and player.onground==false then - player.dy=player.dy+1 - player.y=player.y+player.dy - end - if love.keyboard.isDown('space') and player.onground then - player.jump=true - end - for q,bl in pairs(player.bullets) do - if bl.dirx>bl.diry then - bl.x=bl.x+20 - bl.y=bl.y+(bl.diry/bl.dirx)*20 + if not startmenu and not pausemenu then + if love.keyboard.isDown('d') and moveright then + player.x=player.x+player.speed + end + if love.keyboard.isDown('a') and moveleft then + player.x=player.x-player.speed + end + if love.keyboard.isDown('lshift') then + player.speed=4 else - bl.y=bl.y+20 - bl.x=bl.x+(bl.dirx/bl.diry)*20 + player.speed=3 end - for _,pl in pairs(p.platforms) do - if collision(bl, pl) then - table.remove(player.bullets, q) + if player.jump then + if player.jumped==0 then + player.dy=-16 + player.ddy=1 + end + if player.dy==0 or player.onground then + player.jumped=0 + player.jump=false + else + player.jumped=1 + end + player.dy=player.dy+player.ddy + player.y=player.y+player.dy + end + for _,ti in pairs(t.tiles) do + if player.x+player.w>=ti.x and player.x<=ti.x+32 and player.y+player.h>=ti.y and player.y+player.h<=ti.y+32 then + player.onground=true + player.y=ti.y-player.h + end + end + if player.jump==false and player.onground==false then + player.dy=player.dy+1 + player.y=player.y+player.dy + end + if love.keyboard.isDown('space') and player.onground then + player.jump=true + end + for q,bl in pairs(player.bullets) do + if bl.dirx>bl.diry then + bl.x=bl.x+20 + bl.y=bl.y+(bl.diry/bl.dirx)*20 + else + bl.y=bl.y+20 + bl.x=bl.x+(bl.dirx/bl.diry)*20 end - end - for q1,en in pairs(e.enemies) do - if collision(en, bl) then - table.remove(player.bullets, q) - en.lifes=en.lifes-1 - if en.lifes==0 then - table.remove(e.enemies, q1) + for _,ti in pairs(t.tiles) do + if collision(bl, ti) then + table.remove(player.bullets, q) + end + end + for q1,en in pairs(e.enemies) do + if collision(en, bl) then + table.remove(player.bullets, q) + en.lifes=en.lifes-1 + if en.lifes==0 then + table.remove(e.enemies, q1) + end end end end - end - for _,en in pairs(e.enemies) do - if collision(en, player) and not lose and not win then - lose=true - end - en.x=en.x+2*en.dir - for _,pl in pairs(p.platforms) do - if pl.x==en.x and pl.y==en.y+en.w then - en.dir=1 - elseif pl.x+pl.w==en.x+en.w and pl.y==en.y+en.w then - en.dir=-1 + for _,en in pairs(e.enemies) do + if collision(en, player) and not lose and not win then + lose=true + end + en.x=en.x+2*en.dir + for _,ti in pairs(t.tiles) do + if en.y+en.h>=ti.y and en.y+en.h<=ti.y+ti.h then + if ti.x==en.x and ti.y==en.y+en.h then + en.dir=1 + elseif ti.x+ti.w==en.x+en.w then + en.dir=-1 + end + en.onground=true + end end end + if player.cooldown~=0 then + player.cooldown=player.cooldown-1 + end + if #e.enemies==0 and not lose and not win then + win=true + end + for _,ene in pairs(e.enemies) do + if not ene.onground then + ene.dy=ene.dy+1 + ene.y=ene.y+ene.dy + end + ene.onground=false + end + player.onground=false + if player.x==0 then + moveleft=false + else + moveleft=true + end + if player.x==love.graphics.getWidth()-player.w then + moveright=false + else + moveright=true + end + else + if quit.cooldown~=0 then + quit.cooldown=quit.cooldown-1 + end end - if player.cooldown~=0 then - player.cooldown=player.cooldown-1 - end - if #e.enemies==0 and not lose and not win then - win=true - end - player.onground=false end \ No newline at end of file diff --git a/maploader.lua b/maploader.lua new file mode 100644 index 0000000..3f709f1 --- /dev/null +++ b/maploader.lua @@ -0,0 +1,33 @@ +t={} +t.tiles={} +t.type={} +t.type[1]=love.graphics.newImage("tile1.png") +t.type[2]=love.graphics.newImage("tile2.png") +function t:new(typ, x, y) + tile={} + tile.x=x + tile.y=y + tile.w=32 + tile.h=32 + tile.type=t.type[typ] + table.insert(t.tiles, tile) +end +function t:clear() + for k in pairs (t.tiles) do + t.tiles[k] = nil + end +end +function loadmap(map) + t:clear() + e:clear() + for q,y in pairs(map) do + for c,x in pairs(y) do + if x~=0 and type(x)=="number" then + t:new(x, (c*32)-32, (q*32)-32) + elseif x=="e" then + e:new(0,0,(c*32)-32,(q*32)-32,3) + print(tostring(q..c)) + end + end + end +end \ No newline at end of file diff --git a/menu.lua b/menu.lua new file mode 100644 index 0000000..7c965c5 --- /dev/null +++ b/menu.lua @@ -0,0 +1,33 @@ +startmenu=true +play={} +play.w=love.graphics.getWidth()/1.25 +play.h=love.graphics.getHeight()/20 +play.x=love.graphics.getWidth()/2-play.w/2 +play.y=love.graphics.getHeight()/4-play.h/2 +play.color={211, 215, 123} +play.mouse=function() + if love.mouse.getX()>play.x and + love.mouse.getX()play.y and + love.mouse.getY()quit.x and + love.mouse.getX()quit.y and + love.mouse.getY()k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcX91fH32|H2Dgk1_n|Q9eymj~YMqSIC^?&26;{Bdq{`_(JudP`IMU&Ov-{8M>X1?l4?hk*tq@Nls-g~rt zcJ(mk!EAFc^Ol(Cq*$U@5c?7E( z->vR=#=Cin+=lr_+=8UaH^`*A1?68jvP@b+zO|~h=i{|0emdKI;Vst E0KjOF`2YX_ literal 0 HcmV?d00001 diff --git a/tile2.png b/tile2.png new file mode 100644 index 0000000000000000000000000000000000000000..6588dd0d4b56348ba6bc54944667b6a24155a09c GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcX91fH32|H2Dgk1};w*#}E(iv)4`w9x@PdzF2Z>TG0ws)}>5c zPLio{bFz=m=h;7VGo!aZx0z3WCFl0vpLH+IZfA7-!X)#gVSxe5@+AfeD@qRu&ORr1 zDUJV%@BQ`6Q=j{3%$mQgv1$dMX!rG62Z2o{6P#~cI*{lfV4A{|)W*Zk!s_fMV2}dR zdNV*_3Oh?`w%t=db{2K50H3RDEbUzZjmH`u$SBOo=I7{RJJR(pfx(^e;T`|_6q!{H zhNV^w!q;j}O=S<*w$MR?XF=Kt4yLxA0tQxRHHEYjGHe1{A@-T(!43KUL{&d%Ve@EQ5`*Ws?&)xlP&bb47Rse&F!PC{x JWt~$(698ifirxSK literal 0 HcmV?d00001