This is basically how its done. The left and right panels become the controls on touch devices. Top shows state in game and bottom will show items. Its psychologically reinforced yo. From the outset.
Thursday, June 20, 2013
Tuesday, June 18, 2013
Current Projects
Check out the new Game and 3d pages!
Also I'm workin on music for an art game by Cislunar. It's beginning to look a lot like a creative season!
Also I'm workin on music for an art game by Cislunar. It's beginning to look a lot like a creative season!
Monday, June 17, 2013
GoodByeLove2d
New REBEL> Goodbye Love2d
function love.load() -- GM Stuff mode = "title" -- other modes game, map, store, end -- handcar stuff hcar = love.graphics.newImage("handcar.png") car = love.graphics.newImage("handcar.png") hcarB = love.graphics.newImage("handcarB.png") x = 100 y = 288 speed = 7 drag = 20 -- the amount we slow down every second. isMoving = false; rhit = false lhit = false canL = false canR = true sql = love.audio.newSource("squeak.ogg", "static") sqr = love.audio.newSource("squeak2.ogg", "static") brake = love.audio.newSource("break.ogg", "static") sql:setVolume(0.2) sqr:setVolume(0.2) brake:setVolume(0.5) -- slavecar stuff sico = love.graphics.newImage("coin.png") scar = love.graphics.newImage("scar.png") numSlaves = 5 -- enemy Stuff enemy = love.graphics.newImage("tyrant.png") take = love.audio.newSource("take.ogg", "static") ex = -225 ey = 100 eRate = 25 -- background stuff bg = love.graphics.newImage("bg.png"); bgx= 0 bgy= 0 -- tile background bg2x = 746 -- UI stuff score = 0 vPos = 46 vMax = 714 trackLength = 15 slaves = 1 levelComplete = false gameOver = false -- Map Stuff map = love.graphics.newImage("map.jpg") tarOff = love.graphics.newImage("markOff.png") tarOn = love.graphics.newImage("markOn.png") nBtn = love.graphics.newImage("headNorth.png") canStart = false cities = { { name = "San Antonio", dist = 40, cap = 2, x = 250, y = 420}, { name = "Vicksburg", dist = 36, cap = 4, x = 385, y = 379}, { name = "New Orleans", dist = 27, cap = 6, x = 415, y = 437}, { name = "Atlanta", dist = 22, cap = 4, x = 511, y = 340}, { name = "Savannah", dist = 19, cap = 3, x = 590, y = 378}, { name = "Pittsburgs Landing", dist = 14, cap = 2, x = 433, y = 313}, { name = "Petersburg", dist = 10, cap = 1, x = 628, y = 241} } location = "*****" capacity = "*****" distance = "*****" -- yea! The ol curtain. curtAlpha = 255 end function love.keypressed(k) if k == 'escape' then love.event.quit() end if mode == "game" then -- managed to get some control in here let's gate it up! if levelComplete == false then if k == 'right' then rhit = true; love.audio.play(sqr) if lhit == false and canR then x = x+speed isMoving = true canR = false canL = true end end if k == 'left' then lhit = true; love.audio.play(sql) if rhit == false and canL then x = x+speed canL = false canR = true end end end end end function love.keyreleased(k) if mode == "game" then if levelComplete == false then if k == 'right' then car = hcar; rhit = false; end if k == 'left' then car = hcarB; lhit = false; end end end end function keepTiling() if bgx < -750 then bgx = 747 end if bg2x < -750 then bg2x = 750 end end function updateEnemy() -- let's find some good enemy logic. The player should be able -- to outrun the enemy. plus we have to fake some kind of collision behavior if not levelComplete then if vPos > 100 then ex = ex + eRate*love.timer.getDelta()%rate if ex + enemy:getWidth()*1.5-50 > x then numSlaves = numSlaves -1; ex = ex - enemy:getWidth()-100; love.audio.play(take) end elseif vPos == vMax then ex = ex - eRate*love.timer.getDelta() end else -- move away if on screen at end of level. ex = ex - eRate*love.timer.getDelta()*7 end end function love.update(dt) -- let's start separating these game modes. if mode == "game" then updateGame() elseif mode == "title" then updateTitle() elseif mode == "map" then updateMap() end end function fadeOut(nextScene) -- change the game mode and then fade to the scene if curtAlpha < 255 then curtAlpha = curtAlpha + 15 elseif curtAlpha >= 255 then if nextScene == "map" then resetGame() end mode = nextScene curtAlpha = 255 end end function fadeIn() if curtAlpha > 0 then curtAlpha = curtAlpha - 15 elseif curtAlpha < 0 then curtAlpha = 0 end end function resetGame() score = 0 location = "*****" capacity = "*****" distance = "*****" canStart = false vPos = 46 levelComplete = false gameOver = false ex = -225 x = 100 end function updateMap() -- we have to reset the game .. kinda .. aintwe~? if love.mouse.isDown('r','l') then --fadeOut('game') elseif curtAlpha > 0 then fadeIn() end end function updateTitle() if love.mouse.isDown('r','l') then fadeOut('map') elseif curtAlpha > 0 then fadeIn() end end function updateGame() if curtAlpha > 1 and gameOver == false then fadeIn() end rate = x-100 -- player position from resting place. if rate < 0 then rate = 0 end dt = love.timer.getDelta() keepTiling() updateEnemy() if isMoving then -- move BG and player x = x-drag*dt bgx = bgx-(drag*dt)*rate; -- bg2x = bg2x-drag*love.timer.getDelta()*rate; -- keep handcar on screen ( CLAMP ) if x <= 100 then isMoving = false end if x > 600 then x = 600 ex = ex-50*dt end -- move tracker and keep track on level progress. vPos = vPos + rate/trackLength*dt if vPos >= vMax then isMoving = false vPos = vMax levelComplete = true end -- scoring score = score + math.ceil(rate) end if levelComplete then -- bells and whistles don't update vpos if x > 100 then x = x-drag*3*dt bgx = bgx-(drag*dt)*rate; love.audio.play(brake) else love.audio.stop(brake) -- we win if we free at least one slave. if numSlaves > 0 then gameOver = true end end end if gameOver then fadeOut("map") -- should go to some review scene. or something. end end function drawSlaveIcons() for i=1, numSlaves, 1 do love.graphics.draw(sico, (x-128)+(i*10), y+15) end end function drawMapIcons() for i=1, #cities, 1 do love.graphics.draw( tarOff, cities[i].x, cities[i].y ) if love.mouse.getX() > cities[i].x and love.mouse.getX() < cities[i].x + 40 and love.mouse.getY() > cities[i].y and love.mouse.getY() < cities[i].y + 40 and love.mouse.isDown('r','l') then canStart = true love.graphics.draw( tarOn, cities[i].x, cities[i].y ) -- and display the information in the info box. capacity = cities[i].cap numSlaves = cities[i].cap -- speed adjustment for slaveload. speed = 10 - cities[i].cap distance = cities[i].dist trackLength = cities[i].dist location = cities[i].name -- maybe will change the art one day. end end love.graphics.draw(nBtn,450,100); if love.mouse.getX() > 450 and love.mouse.getX() < 450+nBtn:getWidth() and love.mouse.getY() > 100 and love.mouse.getY() < 100+nBtn:getHeight() and love.mouse.isDown('r','l') and canStart then fadeOut("game") end end function love.draw() -- if mode is inGame , menu, map , shop if mode == "game" then love.graphics.setBackgroundColor( 128,128,255 ) love.graphics.setColor(255,255,255) love.graphics.draw(bg,bgx,bgy) love.graphics.draw(car,x,y); love.graphics.draw(scar,x-128,y); drawSlaveIcons() love.graphics.draw(enemy,ex,ey) -- UI stuff love.graphics.setColor(0,0,0) love.graphics.rectangle( "fill", 0, 0, 768, 100 ) love.graphics.rectangle( "fill", 0, 412, 768, 100 ) love.graphics.setColor(255,255,255) love.graphics.print( love.timer.getFPS()..":fps",x+47,y+80) -- show fps !!! love.graphics.setLineWidth(3) love.graphics.line(50,50,718,50) love.graphics.print("S",30,40) love.graphics.print("E",730,40) love.graphics.print("V",vPos,35) --love.graphics.print(rate,25,25) love.graphics.print("LEVEL : "..location, 25, 425) love.graphics.print("SCORE : "..score, 25,450); love.graphics.print("SLAVES : "..numSlaves, 25,475); -- perhaps we draw the transition over everything. That'll be fun. elseif mode == "title" then love.graphics.print("Harriet Tubmans Underground Railroad",250,250) love.graphics.setBackgroundColor(0,0,0) elseif mode == "map" then love.graphics.draw(map,0,0) love.graphics.setColor(0,0,0,150) love.graphics.rectangle("fill",0,0,400,275) love.graphics.setColor(255,255,255) -- info corner for stage selection love.graphics.print( "STAGE SELECT: ",50,25) love.graphics.print( "Choose a starting point in slaver territory >>",50,50) love.graphics.print( "Target: "..location,50,75) love.graphics.print( "Capacity: "..capacity,50,100) love.graphics.print( "Distance: "..distance,50,125) love.graphics.print( "Alternate pressing the Left and Right Arrow Keys \nto push the cart Northward. \n\nIf all of your slaves get captured you lose!\n\nHold HEAD NORTH To Begin.", 50, 150) -- drawing the map targets. drawMapIcons() end love.graphics.setColor(0,0,0,curtAlpha) love.graphics.rectangle("fill",0,0,768,512) love.graphics.setColor(255,255,255) end
Subscribe to:
Posts (Atom)