go语言游戏编程初识--`Ebiten`
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)}}
运行效果如下:
- 导入所需模块
其中import
的两个比较重要的库,一个是"github.com/hajimehoshi/ebiten"
这里面实现的事ebiten
的核心代码,"github.com/hajimehoshi/ebiten/ebitenutil"
里面实现的是ebiten
常用的一些工具库。
- 定义数据结构体
type Game struct {}
Game
结构体,该结构体实现了ebiten.Game
接口。该接口实现了第三步中的三个接口函数:
- 实现
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
}
- 主函数调用
ebiten.SetWindowSize(720, 480)
设置窗口大小,要是不设置就使用默认窗口大小。
ebiten.SetWindowTitle("Hello world!")
设置窗口标题
ebiten.RunGame(&Game{})
游戏主循环
go语言游戏编程初识--`Ebiten`相关推荐
- c语言游戏编程网盘下载,C语言游戏编程 计算器(5分下载)
C语言游戏编程 #include /*DOS接口函数*/ #include /*数学函数的定义*/ #include /*屏幕操作函数*/ #include /*I/O函数*/ #include /* ...
- c语言黑白棋程序设计报告,C语言游戏编程 黑白棋游戏
C语言游戏编程 /*3.3.4 源程序*/ #include "graphics.h" /*图形系统头文件*/ #define LEFT 0x4b00 /*光标左键值*/ #def ...
- c语言双缓冲怎么用,C语言游戏编程:GDI怎么实现双缓冲绘图去掉闪烁
在上篇文章中将我要用 C语言重新写一个俄罗斯方块 ,使用的是GDI的绘图模式(目前正在移植到DX上去,想添加一些更好友好的动画).数据与动画分离,动画的帧率保持在30左右.但是绘图的时候画面出现了强烈 ...
- go语言游戏编程-Ebiten使用矩阵实现对图的缩放和移动
如何使用矩阵绘图 这个程序几乎和渲染一个图片一模一样,唯一一点不同的是,增加了option参数,并依靠参数,实现了对图像的放大和移动 package mainimport ("github. ...
- go语言游戏编程-Ebiten渲染一张图片
渲染一个图片 完整实现代码: package mainimport ("fmt""github.com/hajimehoshi/ebiten""git ...
- go语言游戏编程-Ebiten实现画面的填充
Draw 完整代码如下: package mainimport ("github.com/hajimehoshi/ebiten""image/color"&qu ...
- D语言游戏编程(1):工作环境
前言 作为一个游戏程序员,D语言对我是很有吸引力的!我相信有不少的人和我有同感.我热爱编程,但是我不能说我热爱C++.坦白的讲,如果是我一个人独立编程,我很乐意使用C++,它的好处就不必多说了,但是在 ...
- c语言编程贪吃蛇游戏 下载,C语言游戏编程 贪吃蛇游戏
#include dos.h DOS接口函数 #include math.h 数学函数的定义 #include conio.h 屏幕操作函数 #include stdio.h IO函数 #includ ...
- 三国杀c语言游戏编程代码,三国杀游戏 - 源码下载|源代码 - 源码中国
压缩包 : 三国杀.rar 列表 [原创]一步一步用C#编写三国杀(二):牌堆的设计 - 忘却之都 - 博客园.files\1787546.jpg [原创]一步一步用C#编写三国杀(二):牌堆的设计 ...
最新文章
- 如何提高 Xcode 的编译速度
- 数字化转型,赋能新零售解决方案介绍
- 【小白学习C++ 教程】八、在C++指针传递引用和Const关键字
- QT使用Q_OBJECT链接不通过的一种情况
- 语言 分组计算hr_干货 | HR不得不知的面试技巧
- VB.NET 中的ref 和C#中的ref 格式区别
- 【数据结构基础】-线性表的顺序实现(数组实现)基本操作
- 画出微型计算机结构图,中级工792、画出计算机环形网络模式图.doc
- 如何让web控件FileUpload选择完文件之后就自动触发事件,让Image控件显示出图片来...
- akka入门书籍的示例代码
- LocalBroadcastManager 的实现原理,还是 Binder?
- 高并发架构消息队列面试题解析
- 工作失误:没有分析进程消耗了这么多内存的原因
- java怎么解析mdb文件_java解析MDB文件的方法,已经写成公用方法
- 小狮子荣光不复 瑞星信息去年亏损7300万元
- 产品体验报告:Keep
- MySQL数据库期末考试试题及参考答案(08)
- BUG:ERROR Error: EPERM: operation not permitted, mkdir的解决方式
- B站左程云算法视频笔记(01
- 关于js中sort排序的用法