IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 2021SC@SDUSC Ebiten(一) 基础框架及图像填充代码详解 -> 正文阅读

[开发工具]2021SC@SDUSC Ebiten(一) 基础框架及图像填充代码详解

2021SC@SDUSC

Go语言的简单2D游戏库-Ebiten? ?

?

目录

Go语言的简单2D游戏库-Ebiten? ?

1、入门:Hello World!?

2、图像填充


1、入门:Hello World!?

代码

创建一个main.go这样的文件:

package main

import (
	"log"

	"github.com/hajimehoshi/ebiten/v2"
	"github.com/hajimehoshi/ebiten/v2/ebitenutil"
)

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(640, 480)
	ebiten.SetWindowTitle("Hello, World!")
	if err := ebiten.RunGame(&Game{}); err != nil {
		log.Fatal(err)
	}
}

然后,通过go run以下方式执行这个 Go 程序:

go run main.go

如果您看到带有“Hello, World!”文本的屏幕,恭喜您,您的程序成功运行!:

代码如何工作

package main

import (
	"log"

	"github.com/hajimehoshi/ebiten/v2"
	"github.com/hajimehoshi/ebiten/v2/ebitenutil"
)

进口 Ebiten 包。该程序导入两个包:github.com/hajimehoshi/ebiten/v2github.com/hajimehoshi/ebiten/v2/ebitenutil.

github.com/hajimehoshi/ebiten/v2?是Ebiten的核心包,提供绘图和输入功能。

github.com/hajimehoshi/ebiten/v2/ebitenutil是 Ebiten 的实用程序包。在这个程序中,这个包用于在屏幕上打印调试信息。

Ebiten 中还有其他几个包。有关更多详细信息,请参阅包页面

type Game struct{}

定义Game结构。Game实现ebiten.Game接口。ebiten.Game具有 Ebiten 游戏的必要函数:UpdateDrawLayout。让我们一一看看。

func (g *Game) Update() error {
	return nil
}

定义(*Game).Update函数,每个刻度都会调用。Tick 是逻辑更新的时间单位。默认值为 1/60 [s],然后Update默认每秒调用 60 次(即 Ebiten 游戏以每秒 60 次滴答运行)。

Update更新游戏的逻辑状态。这个 hello-world 示例没有任何状态,然后这个函数什么都不做。

Update返回错误值。在此代码中,Update始终返回nil.?一般来说,当更新函数返回非零错误时,Ebiten 游戏暂停。由于这个程序从不返回非零错误,除非用户关闭窗口,否则 Ebiten 游戏永远不会停止。

func (g *Game) Draw(screen *ebiten.Image) {

定义(*Game).Draw函数,即每帧调用一次。帧是渲染的时间单位,这取决于显示器的刷新率。如果显示器的刷新率为 60[Hz],Draw则称为每秒 60 次。

Draw接受一个参数screen,它是一个指向 an 的指针ebiten.Image。在 Ebiten 中,所有图像,如从图像文件创建的图像、屏幕外图像(临时渲染目标)和屏幕都被表示为ebiten.Image对象。screen参数是渲染的最终目的地。该窗口显示screen每一帧的最终状态。

	ebitenutil.DebugPrint(screen, "Hello, World!")
}

ebitenutil.DebugPrint是一个实用函数,用于在图像上呈现调试消息。在这种情况下,screen作为调试打印的渲染目标传递。由于screen复位(或其他字清零)时Draw被调用,DebugPrint应该叫每次。

func (g *Game) Layout(outsideWidth, outsideHeight int) (screenWidth, screenHeight int) {
	return 320, 240
}

定义(*Game).Layout功能。Layout接受外部尺寸,即桌面上的窗口尺寸,并返回游戏的逻辑屏幕尺寸。此代码忽略参数并返回固定值。这意味着无论窗口大小如何,游戏屏幕大小始终相同。Layout将更有意义,例如,当窗口可调整大小时。

func main() {

定义main函数,它是这个程序的入口点。

	ebiten.SetWindowSize(640, 480)

ebiten.SetWindowSize设置窗口的大小。不调用它,使用默认的窗口大小。

	ebiten.SetWindowTitle("Hello, World!")

ebiten.SetWindowTitle?设置窗口的标题。

	if err := ebiten.RunGame(&Game{}); err != nil {
		log.Fatal(err)
	}
}

ebiten.RunGame是运行 Ebiten 游戏主循环的函数。参数是一个Game对象,它实现ebiten.Game.?ebiten.RunGame发生错误时返回非零错误值。在这个程序中,当返回一个非 nil 错误时,这个错误被记录为一个致命错误。

2、图像填充

代码

package main

import (
	"image/color"
	"log"

	"github.com/hajimehoshi/ebiten/v2"
)

type Game struct{}

func (g *Game) Update() error {
	return nil
}

func (g *Game) Draw(screen *ebiten.Image) {
	screen.Fill(color.RGBA{0xff, 0, 0, 0xff})
}

func (g *Game) Layout(outsideWidth, outsideHeight int) (screenWidth, screenHeight int) {
	return 320, 240
}

func main() {
	ebiten.SetWindowSize(640, 480)
	ebiten.SetWindowTitle("Fill")
	if err := ebiten.RunGame(&Game{}); err != nil {
		log.Fatal(err)
	}
}

结果将是这样的:

代码如何工作

	screen.Fill(color.RGBA{0xff, 0, 0, 0xff})

(*ebiten.Image).Fill是一个用指定颜色填充图像的函数。参数colorcolor.Color在标准image/color包中实现接口的值。在此示例中,颜色值为红色(红色和 alpha 部分为0xff.)

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:28:46  更:2021-10-09 16:28:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:49:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码