Page 1 of 1

Some newbie questions...

Posted: Wed Jan 18, 2012 6:59 am
by c00ld00d
Hi, I'm new to this forum ( and also to LÖVE ) but I've been programming a form of Lua for 2 years. I have a few questions before I can continue making my game..

Q1: What is the LÖVE cnosole and how do I get it?

Q2: How do I make a .love file(I know it's a renamed .zip file, I don't know how to change the classfile, I'm on Windows XP)

Q3: How would I sprite my characters and objects?

Q4: How do I loop my background music? ( I don't want the player to push P again when the music is finished... )

Q5: How would I change the resolution? (I've already tried this in the conf.lua:

function love.conf(a)
a.title = "Some platformer"
a.height = 640
a.width = 480
end

but that didn't work, as it stayed on 800x600 )

Q6: How to make a message appear and dissappear by pushing a key/clicking a button? (I know how to make one appear: love.graphics.print("msg",x,y) )

And that was all. Thanks for helping in advance!

Re: Some newbie questions...

Posted: Wed Jan 18, 2012 8:59 am
by Robin
c00ld00d wrote:Q1: What is the LÖVE cnosole and how do I get it?
I'm not sure what you mean, but I think you're talking about the terminal (cmd.exe, pretty much). In love.conf(), put a.console = true. Use print() in your game to print out some things to the console window.
c00ld00d wrote:Q2: How do I make a .love file(I know it's a renamed .zip file, I don't know how to change the classfile, I'm on Windows XP)
There is a setting in Windows XP called "hide file name extensions". You need to disable that. It's in the settings for Windows Explorer somewhere, I think.
c00ld00d wrote:Q3: How would I sprite my characters and objects?
love.graphics.newImage
love.graphics.draw
c00ld00d wrote:Q4: How do I loop my background music? ( I don't want the player to push P again when the music is finished... )
Source:setLooping
c00ld00d wrote:Q5: How would I change the resolution? (I've already tried this in the conf.lua:
Almost, but you should use:

Code: Select all

function love.conf(a)
  a.title = "Some platformer"
  a.screen.height = 640
  a.screen.width = 480
end
Trips me up all the time.
c00ld00d wrote:Q6: How to make a message appear and dissappear by pushing a key/clicking a button? (I know how to make one appear: love.graphics.print("msg",x,y) )
Wrap it in an if statement:

Code: Select all

if something then
   love.graphics.print("msg",x,y) )
end
And see love.keypressed, love.keyreleased, love.mousepressed, love.mousereleased

Hope this helps.

Re: Some newbie questions...

Posted: Wed Jan 18, 2012 3:15 pm
by c00ld00d
@Robin

Wow, thanks a lot! But still a problem with how to make a message appear and dissappear. What you showed me is if something equals true or false(in an if statement to check the condition), it'll print my message. But my question was; how would I remove my message after it was printed on the screen?

EDIT:

Oh and, I tried spriting but it doesn't draw the image on the screen? And it lags horribly. How would I create an image as background or as sprite for a character/object? If it's possible: can you show me a piece of code showing how to create an image?

Re: Some newbie questions...

Posted: Wed Jan 18, 2012 4:12 pm
by Robin
c00ld00d wrote:Wow, thanks a lot! But still a problem with how to make a message appear and dissappear. What you showed me is if something equals true or false(in an if statement to check the condition), it'll print my message. But my question was; how would I remove my message after it was printed on the screen?
That happens automatically: the screen is cleared each frame.
c00ld00d wrote:Oh and, I tried spriting but it doesn't draw the image on the screen? And it lags horribly. How would I create an image as background or as sprite for a character/object? If it's possible: can you show me a piece of code showing how to create an image?
Don't create an image each frame, only in love.load():

Code: Select all

function love.load()
   someImage = love.graphics.newImage('image.png') -- or what the name of your image is
end

function love.draw()
  love.graphics.draw(someImage, 0, 0) --draws the image in the top-left corner
end

Re: Some newbie questions...

Posted: Wed Jan 18, 2012 4:26 pm
by c00ld00d
@Robin

I don't understand what you said that the print message dissappears in a new frame. This is the code I have:

Code: Select all


function love.draw()
 -- bgi = love.graphics.newImage("Background.png") where I tried to make a background, I'll fix it later.
  love.graphics.setBackgroundColor(0,170,200)
  love.graphics.setColor(0,255,20) -- block color
  for y=1,#map do
    for x=1,#map[y] do
      if map[y][x] == 1 then
        love.graphics.rectangle("fill",x*CELLSIZE,y*CELLSIZE,CELLSIZE,CELLSIZE)
      else
        if DEBUG then
          love.graphics.rectangle("line",x*CELLSIZE,y*CELLSIZE,CELLSIZE,CELLSIZE)
        end
      end
    end
  end
  love.graphics.setColor(255,255,255) -- 255,0,0,128 = red
  love.graphics.rectangle("fill",Player.x,Player.y,PLAYERSIZE, PLAYERSIZE)
---NOTE TO SELF: Make message dissappear when spacebar is pressed
  love.graphics.print("Press Space bar to begin!",200,200) ----------------------------HERE
  if DEBUG then
    love.graphics.setColor(0,255,0)
    love.graphics.print(string.format("Player at (%06.2f , %06.2f) jumping = %s falling = ", Player.x, Player.y, tostring(Player.jumping), tostring(Player.falling)), 50,0)
    love.graphics.print(string.format("Player occupies cells(%d): %s", #Player.Cells, table.concat(Player.Cells, ' | ')), 450,0)
  end
end
And here's the jump section(when spacebar is pressed):

Code: Select all

local isDown = love.keyboard.isDown
function playermove(dt)

  local newX, newY
  if isDown("a") then
    newX=Player.x-Player.S*dt
  end
  if isDown("d") then 
    newX=Player.x+Player.S*dt
  end
  if newX then 
    local offmap=isOffMap(newX, Player.y)
    local colliding=isColliding(playerOnCells(newX, Player.y))
    if not offmap and not colliding then
      Player.x=newX
    end
  end


  Player.G = Player.G + Player.S*dt

  if not Player.jumping and isDown(" ") and not Player.falling then -- JUMPING PART
	jmps = love.audio.newSource("Jump.wav") 
    love.audio.play(jmps,"stream",true)
    Player.jumping = true
    Player.G = -120 -- note to self: originally -100
  end

    
  newY= Player.y + Player.G*dt 

  local coll=isColliding(playerOnCells(Player.x, newY))
  if coll then
    if Player.G>=0 then 
      Player.jumping=false
      Player.falling=false
    end
    Player.G=0
  else
    Player.falling=true 
  end

  if not isOffMap(Player.x, newY) and not coll then
    Player.y=newY
  end
  if DEBUG then
    Player.Cells=playerOnCells(Player.x, Player.y) 
  end
end

Re: Some newbie questions...

Posted: Wed Jan 18, 2012 5:41 pm
by Robin
Make it say:

Code: Select all

if not Player.jumping then
    love.graphics.print("Press Space bar to begin!",200,200)
end
Also, when the player presses space, you create a new source. That is bad. Create the source in love.load() (where you also need to load the background image) and only play it when the player presses space.