Ebiten

ebiten是一个简单的使用纯go实现的游戏,使用这个库即可以实现go语言代码的学习,又可以实现对游戏编程的了解。

Hello world

让我们以一个Hello world!开始ebiten的学习,

完整代码实现如下:

package mainimport ("github.com/hajimehoshi/ebiten""github.com/hajimehoshi/ebiten/ebitenutil""log"
)type Game struct {}func (g *Game) Update() error {return nil
}func (g *Game) Draw(screen *ebiten.Image) {ebitenutil.DebugPrint(screen, "Hello world!")
}func (g *Game) Layout(outsideWidth, outsideHeight int) (screenWidth, screenHeight int) {return 320, 240
}func main() {ebiten.SetWindowSize(720, 480)ebiten.SetWindowTitle("Hello world!")if err := ebiten.RunGame(&Game{}); err != nil {log.Fatal(err)}}

运行效果如下:

  1. 导入所需模块

其中import的两个比较重要的库,一个是"github.com/hajimehoshi/ebiten"这里面实现的事ebiten的核心代码,"github.com/hajimehoshi/ebiten/ebitenutil"里面实现的是ebiten常用的一些工具库。

  1. 定义数据结构体
type Game struct {}

Game结构体,该结构体实现了ebiten.Game接口。该接口实现了第三步中的三个接口函数:

  1. 实现ebiten.Game接口
// 图像刷新函数
// 这个接口会按照每秒60(默认)次的频率进行调用
// 这个函数正常运行会一直返回nil的error,当返回非nil值时,你的game将会被挂起
func (g *Game) Update() error {return nil
}
//绘图函数
// 没帧图 都会调用Draw函数进行绘制,如果你想要60帧,那你就得每秒调用该函数60次
func (g *Game) Draw(screen *ebiten.Image) {ebitenutil.DebugPrint(screen, "Hello world!")
}
// 该接口接受外部尺寸,即桌面尺寸,返回游戏尺寸,即无论桌面尺寸多大,游戏的尺寸是固定的(返回的事固定值)
func (g *Game) Layout(outsideWidth, outsideHeight int) (screenWidth, screenHeight int) {return 320, 240
}
  1. 主函数调用

ebiten.SetWindowSize(720, 480)设置窗口大小,要是不设置就使用默认窗口大小。

ebiten.SetWindowTitle("Hello world!")设置窗口标题

ebiten.RunGame(&Game{})游戏主循环

go语言游戏编程初识--`Ebiten`相关推荐

  1. c语言游戏编程网盘下载,C语言游戏编程 计算器(5分下载)

    C语言游戏编程 #include /*DOS接口函数*/ #include /*数学函数的定义*/ #include /*屏幕操作函数*/ #include /*I/O函数*/ #include /* ...

  2. c语言黑白棋程序设计报告,C语言游戏编程 黑白棋游戏

    C语言游戏编程 /*3.3.4 源程序*/ #include "graphics.h" /*图形系统头文件*/ #define LEFT 0x4b00 /*光标左键值*/ #def ...

  3. c语言双缓冲怎么用,C语言游戏编程:GDI怎么实现双缓冲绘图去掉闪烁

    在上篇文章中将我要用 C语言重新写一个俄罗斯方块 ,使用的是GDI的绘图模式(目前正在移植到DX上去,想添加一些更好友好的动画).数据与动画分离,动画的帧率保持在30左右.但是绘图的时候画面出现了强烈 ...

  4. go语言游戏编程-Ebiten使用矩阵实现对图的缩放和移动

    如何使用矩阵绘图 这个程序几乎和渲染一个图片一模一样,唯一一点不同的是,增加了option参数,并依靠参数,实现了对图像的放大和移动 package mainimport ("github. ...

  5. go语言游戏编程-Ebiten渲染一张图片

    渲染一个图片 完整实现代码: package mainimport ("fmt""github.com/hajimehoshi/ebiten""git ...

  6. go语言游戏编程-Ebiten实现画面的填充

    Draw 完整代码如下: package mainimport ("github.com/hajimehoshi/ebiten""image/color"&qu ...

  7. D语言游戏编程(1):工作环境

    前言 作为一个游戏程序员,D语言对我是很有吸引力的!我相信有不少的人和我有同感.我热爱编程,但是我不能说我热爱C++.坦白的讲,如果是我一个人独立编程,我很乐意使用C++,它的好处就不必多说了,但是在 ...

  8. c语言编程贪吃蛇游戏 下载,C语言游戏编程 贪吃蛇游戏

    #include dos.h DOS接口函数 #include math.h 数学函数的定义 #include conio.h 屏幕操作函数 #include stdio.h IO函数 #includ ...

  9. 三国杀c语言游戏编程代码,三国杀游戏 - 源码下载|源代码 - 源码中国

    压缩包 : 三国杀.rar 列表 [原创]一步一步用C#编写三国杀(二):牌堆的设计 - 忘却之都 - 博客园.files\1787546.jpg [原创]一步一步用C#编写三国杀(二):牌堆的设计 ...

最新文章

  1. 如何提高 Xcode 的编译速度
  2. 数字化转型,赋能新零售解决方案介绍
  3. 【小白学习C++ 教程】八、在C++指针传递引用和Const关键字
  4. QT使用Q_OBJECT链接不通过的一种情况
  5. 语言 分组计算hr_干货 | HR不得不知的面试技巧
  6. VB.NET 中的ref 和C#中的ref 格式区别
  7. 【数据结构基础】-线性表的顺序实现(数组实现)基本操作
  8. 画出微型计算机结构图,中级工792、画出计算机环形网络模式图.doc
  9. 如何让web控件FileUpload选择完文件之后就自动触发事件,让Image控件显示出图片来...
  10. akka入门书籍的示例代码
  11. LocalBroadcastManager 的实现原理,还是 Binder?
  12. 高并发架构消息队列面试题解析
  13. 工作失误:没有分析进程消耗了这么多内存的原因
  14. java怎么解析mdb文件_java解析MDB文件的方法,已经写成公用方法
  15. 小狮子荣光不复 瑞星信息去年亏损7300万元
  16. 产品体验报告:Keep
  17. MySQL数据库期末考试试题及参考答案(08)
  18. BUG:ERROR Error: EPERM: operation not permitted, mkdir的解决方式
  19. B站左程云算法视频笔记(01
  20. 关于js中sort排序的用法

热门文章

  1. 食品行业ERP选型 需把握关键的20%
  2. 关于数据访问模式(三)—— Data Accessor模式
  3. poj 2985(并查集+线段树求K大数)
  4. nyoj-619 青蛙过河
  5. Object Detection中的IOU
  6. C# XML的序列化与反序列化
  7. .Net高并发解决思路(转)
  8. Python 的字符串内建函数
  9. 【Java学习笔记】字符串和Date的转换
  10. To-do-List