Demo 标签

Love2d 几何坦克大战 - 1

经过两天断断续续的代码,实现了单个坦克的基本行为,也就是移动,射击,效果如下 怎么样,看起来是不是有模有样? 而这个实现代码其实也非常简单,根据之前的教程,加上官方 wiki 的查询,以及群里大神的一两句指点就可以做出来啦~ 示例的完整代码托管在 github 上,请戳链接 这里重点介绍部分代码(也就是根据大神指点查询 wiki 的部分) --画坦克躯干 love.graphics.origin() rotateGraph(centerX,centerY,Tank.bodyA); love.graphics.rectangle("line", bodyX, bodyY, bodyW, bodyH) --画坦克头部 love.graphics.origin() rotateGraph(centerX,centerY,Tank.headA) love.graphics.circle("line", centerX, centerY, Tank.headR, Tank.headS) love.graphics.rectangle("line",fireX,fireY,Tank.fireW,....

阅读全文 »

LoveExample-18 向指定的位置发射子弹

Long time no see~ 虽然可能本来看的人也不多吧 示例在视觉上其实很朴素,不过实现了定点射击的功能,这个功能感觉还是比较常用的。 大概思路就是,在 update 方法中,不断将获取到的鼠标位置(如果点击了话)放到表中,同时又不断的从表中取出存放的子弹信息进行绘制。 逻辑上并不难,但是有些 lua 语言本身的点。 代码如下: function love.load() SPEED = 250 StartPos = {x=250, y=250, width=50, height=50} --The starting point that the bullets are fired from, acts like the shooter. bullets={} --The table that contains all bullets. end function love.draw() --Sets the color to red and draws the "bullets". love.graphics.setColor(255, 0, 0) --This loops t....

阅读全文 »

LoveExample-17 使用特殊字体

这里只是英文字体,似乎对中文字体支持的不是很好 还好,按照我对它的用法,大概是写不了多少中文的 其实非剧情类的,一般的英文也没什么障碍了 -- Example: Using a truetype font function love.load() -- Create a new font with 32pt size and set it as default. local f = love.graphics.newFont("assets/Grundschrift-Normal.otf", 24) love.graphics.setFont(f) end text = [[ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incid....

阅读全文 »

LoveExample-15~16 图片旋转

平面旋转,也即 xy 旋转,本人自创的词儿 效果就是向月亮环绕地球的旋转,只不过不自转 -- Example: Rotating images angle = 0 function love.load() image = love.graphics.newImage("assets/love-ball.png") end function love.update(dt) angle = (angle + dt) % (2 * math.pi) --决定了图片的向心旋转 x, y = 400 + math.cos(angle)*100, 300 + math.sin(angle)*100 --决定了图片位置的旋转 end function love.draw() --image:图片本身 --x,y:图片位置坐标 --angle:图片旋转角度,加上这个参数,会在指定位置上旋转图片指定角度 love.graphics.draw(image, x, y,angle) end love 本身的 API 还是很好理解的,问题是在于数学函数的运用,用什么样的函数做出什么样的运动轨迹,很考验数学....

阅读全文 »

LoveExample-12~14 自定义鼠标、键盘控制位移

看到这段代码我是一脸蒙逼,我之前的推测竟然是打脸么? function love.load() -- Load the "cursor" (with default hot spot 0, 0) cursor = love.mouse.newCursor("assets/love-cursor.png") -- Set the cursor love.mouse.setCursor( cursor ) end 然而并不是—— function love.load() -- Load the "cursor" image = love.graphics.newImage("assets/love-ball.png") -- Hide the default mouse. love.mouse.setVisible(false) end function love.draw() -- Draw the "cursor" at the mouse position. love.graphics.draw(image, love.mouse.getX(), love.mouse.getY()....

阅读全文 »

LoveExample-11 Animation

这一节引用了外部库,没看懂,先占个位,再研究。。。 -- Example: Create and use an Animation require("animation") function newImagePO2(filename) local source = love.image.newImageData(filename) local w, h = source:getWidth(), source:getHeight() --math.ceil 返回不小于参数的最小整数 --math.pow(x,y)==x^y:x的y次方 --math.log(x [, base]):返回以指定底的 x 的对数。 默认的 base 是 e (因此此函数返回 x 的自然对数)。 -- Find closest power-of-two. --local wp = math.pow(2, math.ceil(math.log(w)/math.log(2))) --local hp = math.pow(2, math.ceil(math.log(h)/math.log(2))) local wp....

阅读全文 »

LoveExample-5..10 设置指针可见性、获取输入键等

接下来的几篇 demo 都很简单,一片一片的写没什么意义,说起来之前三篇其实也可以合起来,事已至此,先这样吧 [5] 获取鼠标按键,代码本身就已经做了很好地说明了: function love.load() love.graphics.setFont(love.graphics.newFont(11)) end function love.draw() -- Left mouse button. if love.mouse.isDown(1) then love.graphics.print("Left mouse button is down", 50, 50) end -- Right mouse button. if love.mouse.isDown(2) then love.graphics.print("Right mouse button is down", 50, 100) end -- Middle mouse button. if love.mouse.isDown(3) then love.graphics.print("Middle mouse button ....

阅读全文 »

LoveExample-3 设置鼠标位置

次新代码并不多,加上已经很晚了,也就不再多说,看代码就好 -- Example: Setting the mouse position function love.load() love.graphics.setFont(love.graphics.newFont(11)) end function love.draw() love.graphics.print("Press a key to move the mouse to a random point", 50, 50) end -- Press a key to move the mouse to -- some random point. function love.keypressed(k) local x, y = math.random(0,800), math.random(0,600) love.mouse.setPosition(x, y) end 这个函数的意义,大概在于可以设置鼠标自动到某个按钮的位置上吧。

阅读全文 »

LoveExample-2 获取鼠标位置

本系列算是入门练习,只讨论代码表面功能,不做深入研究 拟在最后用这些内容实现一个小游戏,还没想好,学完再说吧 function love.load() love.graphics.setFont(love.graphics.newFont(11)) end function love.draw() -- Gets the x- and y-position of the mouse. local x, y = love.mouse.getPosition() -- Draws the position on screen. love.graphics.print("The mouse is at (" .. x .. "," .. y .. ")", 50, 50) end newFont 里面大概设置了字体大小,11 的效果感觉很小,不知道其单位是啥,不重要,日后再看吧…… 这里涉及 lua 比较独特的语法,顺手搜了一个教程:lua 教程 Lua 可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。 运算符 .. :两个英文句号,....

阅读全文 »

LoveExample-1 加载图片

本帖为系列代码研习教程,项目地址:Love-Example-Browser 第一节代码很短: function love.load() image = love.graphics.newImage("assets/love-ball.png") end function love.draw() love.graphics.draw(image, 400, 300) end 总这段代码看,读取文件的基准目录,应该是 main.lua 所在的地方,无论这段代码是否写在了 main.lua 中。 如此,有几个问题有待实践验证 文件基准是否为 main.lua,如果这段代码在别处是否依然以 main.lua 为准?上级目录是否能访问到? draw 方法后面跟了两个参数,这两个参数是否会影响图片的大小?

阅读全文 »