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 方法后面跟了两个参数,这两个参数是否会影响图片的大小?

阅读全文 »

Love2D开发环境的搭建

说到开发环境,大概很多人都被 Java 的 JDK,Maven 什么的环境变量折磨过 此外还要在 eclipse 里面配置默认 JDK,maven 设置文件,tomcat 路径等等等等 好在 Sym 用 Jetty 省略了 tomcat 的配置,也不用先 build 再 install 再启动 tomcat 了 Love2D 的开发环境十分方便,Sublime Text 足矣,也有 IDE 如 ZeroBrane,搜索下载即可,这里不再赘述 1. 在官网下载 love 安装包 2. 打开 Sublime Text(以 3 为例),点击 new build system 3. 输入如下配置: { "selector": "source.lua", "cmd": ["C:/Program Files/LOVE/love.exe", "${projectpath:${filepath}}"], "shell": true, "file_regex": "^Error: (?:[^:]+: )?([^: ]+?):(\d+):() ([^:]*)$" } 只需要替换下 love 的安装路径....

阅读全文 »

使用 Love2D 写一个贪吃蛇小游戏

以下文字均为本人原创,因此有可能说错什么,请不要介意,欢迎指正~ 代码由 Alexar 大大所写(自己实现的那版结构比较乱而且有 bug…),群号见下部隐藏区域 love2d 引擎的代码结构 function love.load() --资源预加载 end function love.update(dt) --实时渲染 end function love.draw() --绘图 end 是不是很简单,通过 load 方法加载资源,或者做一些预处理,通过 draw 方法绘制想要的图案,再通过 update 不断刷新画面,一个游戏或者动画就形成了。 love2d 引擎的游戏,均以 main.lua 文件作为入口(我就是喜欢这种由确切入口的,有迹可循),而 main.lua 中,上述三个方法是必须的,其实还有个隐藏的主函数 love.run(),用以调用这三个方法。如果有什么特殊要求,可以自定义主函数,直接写出就会覆盖(有点像 java 的构造函数规则)。从官方 wiki 中可以看到run 的代码: function love.run() if love.math then love.m....

阅读全文 »

你好,Solo!

这个标题让我很想笑 打Dota的时候,经常看队友之间(不怕神一样的对手就怕猪一样的对手系列)一言不合大吵起来 然后:不服solo!输的叫爹! 虽说有点冲动,但是一年¥100的博客,我觉得还是可以接受的 就当是给小D添点儿奶粉钱了 😂 (虽然不知道他有没有断奶) 很庆幸能加入B3log,真是相见恨晚,据说B3log群已经建了10年了,也就是说我读大学的时候,已经有这些东西了,为什么我就没看到呢?为什么就没有人跟我介绍呢? 唉,怪自己当时头发长见识短(大学期间头发长度达到了顶峰。。。既没人管又懒得理) 几个月来,感觉自己的提高比参加工作的的前两年要大得多,倘若大学期间能接触b3log,现在应该能自己写出一个完整的项目了吧 群里的大神真的很多,有的还在读大学,也有十年的老司机,这是个精彩的地方,虽说迟了很多年,但依然很幸运 本文是为了测试Solo,并非总结 不敢写总结啊,容易立flag,立了flag就容易达不到……空谈误国,实干兴邦啊!

阅读全文 »