go语言游戏编程初识--`Ebiten`

ebiten 学习(1)-综述 2021SC@SDUSC 文章目录 一、初见 ebiten 二、环境配置 1.安装 go 的 sdk 2.环境变量 3.IDEA 配置 4.样例测试 三、分工 尾声 一、初见 ebiten "A dead simple 2D game library for Go" ebiten 是 go 语言的一个 2D 游戏库,体量小,使用方便。 go 语言是当下较为火热的一种编程语言,结合了多用语言的优点,有人说 go 会变成第二个 python。 借此机会了解一般的小型游戏... 阅读详情

Ebiten

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

Hello world

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

完整代码实现如下:

package main

import (
	"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游戏库开发者文档 (v2.8.8) Ebiten(Ebitengine)是一个简洁高效的Go语言2D游戏引擎,提供简单API和跨平台支持(Windows/macOS/Linux/Web/移动/Nintendo Switch)。 阅读详情

相关推荐

用Go语言编写一个简单的Ebiten游戏示例

用Go语言编写一个简单的Ebiten游戏示例

go语言小游戏--星际大战

在游戏中总共设计了两种人物,分别是我方飞机和敌方外星人飞船。至此,游戏的基本功能都已介绍完毕,在此基础上还可以添加游戏状态等其他功能go语言小白,如果有更好的建议欢迎评论区留言~~参考:https://blog.youkuaiyun.com/darjun/article/details/128213350。

qq_63730529的博客 995

QGC 转发RTSP流 到RTMP服务器

需求: QGC安卓版在接收摄像机RTSP视频流的时候,需要将视频推送到指定的RTMP服务器。 分析: QGC在处理音视频的时候使用了GStreamer这套框架,本身这套框架是跨平台的,所以无需关系环境,只要想到相应位置,添加对应功能代码,然后配置好安卓端的依赖库即可。 添加位置: GstVideoReceiver.cpp -》start函数负责音视频的流的播放,只需在此处添加上封装好的推流函数即可。 同理在stop中添加停止推流功能。 方便起见,可在界面上配置rtmp的推流地.

qthello 2324

golang安装Ebiten(详细教程)

通过以上步骤,你应该能够成功安装 Ebiten 并开始开发游戏。记得经常查看 Ebiten 的官方文档和示例,因为游戏库可能会随时间更新和改进。如果你使用 GoLand 或其他 IDE,确保它能正确识别 Ebiten 包。Ebiten 是一个用于 Go 语言的 2D 游戏库。首先,确保你已经安装了 Go 语言环境。如果一个空白窗口出现,说明 Ebiten 已成功安装。确保你的 GOPATH 环境变量已正确设置。这个命令会下载 Ebiten 及其依赖。文件并添加 Ebiten 作为依赖。

2301_78961159的博客 1595

「点燃我,温暖你」用Python制作一个动态爱心效果

最近「点燃我,温暖你」这部剧非常火,讲述的是程序员的爱情故事。其中陈飞宇饰演的男主李峋,在剧中用程序做出的爱心跳动效果,非常炫。

Modeler_xiaoyu的博客 1万+

【Unity3D优化】优化内置shader的内存占用

在打AB包的过程中,并不会把这些Built-in的shader单独打包,并与材质球和预设体做好依赖,因此打AB包时,Unity会自行在材质球和预制体的AB包内每一个都包含进去用到的Built-in的Shader,而且运行时,由于加载的是不同的AB包,shader也是不同的实例,占用的也是多份内存。结合项目特点可以分析,由于项目里使用了大量的粒子特效,一些特殊的效果,会给特效师写定制的shader,但是这些常见的效果,特效师直接使用了Unity Built-in的shader。继续优化内存占用。

a310989583的专栏 2311

2021SC@SDUSC Ebiten 综述

2021SC@SDUSC Go语言的简单2D游戏库-Ebiten 链接:https://gitee.com/mirrors/ebiten 1、Ebiten库介绍 Ebiten是Go编程语言的开源游戏库。Ebiten的简单API允许您快速轻松地开发可跨多个平台部署的2D游戏。 ●2D图形(矩阵的几何体和颜色变换、各种合成模式、屏幕外渲染、文本渲染、自动批处理、自动纹理图谱、自定义着色器) ●输入(鼠标、键盘、游戏板、触摸...

weixin_50803761的博客 624

基于SHIS凝视型短波红外高光谱相机(900-1700nm)区分不同宝石的差异性和可分性(宝石分选)

SHIS系列凝视型高光谱相机基于液晶可调谐滤波器(LCTF),通过电控LCTF进行连续细分窄波段分光,对每个波段进行高分辨率的二维面阵成像,进行图像处理后,获得完整的高光谱高清图像序列。具有低功耗、小型化、使用方便和易于扩展的优势。其工作波段覆盖400nm至1000nm,能够捕捉宝石在不同波长下的光谱特征,为宝石鉴定提供了新的工具。

wayho的博客 707

Ebiten Go语言GUI编程

Go语言GUI编程包-Ebiten 文章目录Go语言GUI编程包-Ebiten1. 前言2. Ebiten库介绍3. Ebiten在窗口显示文字4. Ebiten在窗口显示图片4.1 直接展示图片4.1 指定位置展示图片5. Ebiten监听鼠标事件6. 其他 1. 前言 最近碰到一个题目,就是鼠标选择图片区域,然后把选中的区域进行图像处理,图像处理好说,调用opencv的库函数即可,关键是如何用鼠标选择图片区域,这就涉及到GUI编程了,因此我去了解一下如何使用Go语言的GUI编程。 Go语言没有官方GUI

m0_55708805的博客 2030

Flocking for Multi-Agent Dynamic Systems: Algorithms and Theory的理论简述和python仿真实现(附源码)

经典论文Flocking for Multi-Agent Dynamic Systems: Algorithms and Theory的学习与编程仿真,提供源码

m0_59701926的博客 1238

lammps教程:聚合物压缩,避免“bond atoms missing”

如果使用ms建模,聚合物的链会伸出到盒子外面,在导出data文件后,盒子外面的原子被周期性算法折叠进盒子对面,这就造成了边界附近的bond原子可能被分布到了盒子的两侧。并且,这个data文件不能使用npt系综进行压缩,npt系综必须使用周期性边界,在压缩时,bond原子同样会移动到对面的边界。所以,最好的解决办法是使用一个反射墙墙进行压缩,设置一个反射墙墙既可以实现压缩效果,也可以组织原子跨越box边界移动到对面。解决这个问题的原则只有一个:导出data时确保所有的bond原子没有跨越边界。

lammps_jiayou的博客 3819

Ebitengine:一个简单易用的2D游戏引擎

Ebitengine:一个简单易用的2D游戏引擎 【免费下载链接】ebiten Ebitengine - A dead simple 2D game engine for Go 项目地址: https://gitcode.com/...

gitblog_00506的博客 631

【使用FPGA实现MIPI DSI接口】——如何使用FPGA实现MIPI DSI接口?这是一个让许多开发者都感到困扰的问题。本文将介绍如何使用FPGA设计和实现...

【使用FPGA实现MIPI DSI接口】——如何使用FPGA实现MIPI DSI接口?MIPI DSI(移动产业处理器接口 - 显示串行接口)是一种用于在移动设备中传输视频数据的标准接口,它是目前大部分智能手机和平板电脑所采用的显示接口。首先,我们需要实现MIPI DSI的物理层接口。在实现MIPI DSI接口后,我们还需要编写驱动程序来控制MIPI DSI显示屏显示图像。这里只是提供了MIPI DSI接口的物理层代码示例,完整的MIPI DSI接口实现需要包括控制器和驱动程序等更多内容。

uote_e的博客 1995

Golang 简单的碰撞检测游戏(ebiten)

简单的碰撞检测游戏 游戏功能: 1、空格键发射红色块,红色块遇到左、右、上边界反弹,遇到下边界游戏结束。 2、左右键移动白色块接红色块,每接到一次加一分。 3、每5秒钟随机生成一个黄色块,红色块触碰到黄色块时,黄色块消失并加十分,黄色块同时最多存在5个 逛博客时看到了一个golang的2D游戏框架ebiten,所以写了个简单游戏来熟悉ebiten流程。 main.go package main import ( "github.com/hajimehoshi/ebiten/v2" "github.c.

NO CODE NO LIFE 1852

龙芯2K1000 OTG双模驱动深度解析

是Synopsys公司开发的USB 2.0 OTG控制器IP核,龙芯2K1000内置该IP,作为唯一的OTG控制器(PCI Dev4 Func0),物理基地址0x40000000。核心能力:同时支持Host主机模式(接U盘/键盘)、Device设备模式(虚拟串口ttyGS0)、OTG双模自动切换速率驱动路径:内核源码PMON:启用otg0设备树内核:开启HOSTPERIPHERALG_SERIAL启动参数脚本:sysfs角色切换+开机自启Host按以上配置,龙芯2K1000 DWC2 OTG可完美实现。

weixin_44932366的博客 375

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Go Ebiten小游戏开发:井字棋

井字棋是一个经典的两人对战游戏,玩家轮流在 3x3 的棋盘上放置自己的标记(通常是“圈”和“叉”),先连成一条线的玩家获胜。玩家轮流下棋检测游戏是否结束(胜利或平局)游戏结束后的重新开始功能简单的动画效果。

qq_22328011的博客 777

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Go Ebiten游戏库入门教程

Ebiten是一款基于Go言语的轻量级开源游戏库

qq_22328011的博客 1007

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ebiten实现小方块移动(暑假游戏开发)

一个方块具有起点(x,y)和宽度,高度,因为需要移动所以少不了移动速度x float64 //方块绘制横坐标起点 y float64 //方块绘制纵坐标起点 width float64 //方块的宽度 height float64 //方块的高度 speed float64 //方块的行走速度 } //将方块结构体假如Game结构体当中,方便调用 type Game struct {

JUIU9527的博客 508

DeBERTa-small-long-nli微调实战:3行代码完成任务源训练

DeBERTa-small-long-nli是一款高效的自然语言推理模型,专为长文本场景优化。本文将带你快速掌握使用该模型进行零样本分类任务的实战技巧,无需复杂配置,3行核心代码即可完成推理训练。 ## 📋 环境准备:极简安装步骤 使用该模型前,只需安装一个核心依赖包。打开终端执行以下命令: ```bash pip install transformers==4.42.3 ``` 所需依

gitblog_00589的博客 457

突破像素限制:Ebiten游戏引擎矢量绘图功能全解析

Ebiten是一款专为Go语言设计的简单2D游戏引擎,它提供了强大的矢量绘图功能,让开发者能够轻松创建高质量的游戏图形。无论是绘制复杂的游戏场景,还是设计精美的UI元素,Ebiten的矢量绘图功能都能满足你的需求。 ## 为什么选择矢量绘图? 在游戏开发中,图形渲染是至关重要的一环。传统的位图图像在放大或缩小时容易失真,而矢量图形则可以无损缩放,保持清晰的边缘和细节。这使得矢量绘图成为游戏开发

gitblog_00440的博客 543

DeBERTa-small-long-nli部署指南:CPU/GPU/NPU环境配置全攻略

想要在本地快速部署强大的自然语言推理模型吗?DeBERTa-small-long-nli是一个基于DeBERTa-v3-small架构优化的长上下文自然语言推理模型,支持1680个token的上下文长度,在各种推理任务上表现出色。这篇终极指南将为您详细介绍如何在CPU、GPU和NPU三种硬件环境下快速部署这个强大的AI模型,让您轻松获得专业的文本推理能力!🚀 ## 🔧 环境准备与依赖安装

gitblog_00169的博客 486

ebiten 实现角色移动

image * ebiten . Image //精灵图 x float64 //人物生成横坐标 y float64 //人物生成纵坐标 speed float64 //人物移动速度 } type Game struct {x int //起点x y int //起点y width int //宽度 height int //高度 }

JUIU9527的博客 420

UE5风格指南完整部署教程:从零开始实现项目规范化 [特殊字符]

想要让你的Unreal Engine 5项目看起来像是**同一个人创建的**,无论有多少开发者参与?UE5风格指南就是你的终极解决方案!这个开源项目提供了一套完整的规范化标准,让团队协作更加高效,代码维护更加简单。 ## 📋 什么是UE5风格指南? UE5风格指南是一个致力于让Unreal Engine项目保持**一致性和可维护性**的开源项目。它通过定义资产命名规范、目录结构、蓝图编码标准

gitblog_01071的博客 707

Ebiten 安装和使用

Ebiten 是一个用go语言编写的开源的跨平台的2D游戏引擎。 安装 Ebiten在使用上跟平常的Go库没啥区别,当你的程序使用Ebiten的时候Go命令行会自动的安装Ebiten。 # 为游戏创建一个目录 mkdir yourgame cd yourgame # 初始化go.mod go mod init github.com/wuyutaott/2048 # 下载ebiten go get github.com/hajimehoshi/ebiten/v2 # 运行例子 go run -tags=

wuyutaoktm的博客 920

Go游戏开发利器:ebiten、raylib-go、godot-go完整使用教程

Go语言凭借其简洁高效的特性,在游戏开发领域也占据了一席之地。本文将为你介绍三款强大的Go游戏开发工具:ebiten、raylib-go和godot-go,帮助你快速入门Go游戏开发,打造属于自己的游戏作品。 ## 一、ebiten:极简2D游戏库 ebiten是一款非常简单的Golang 2D游戏库,它提供了丰富的功能和简洁的API,让开发者能够专注于游戏逻辑的实现。 ### 1.1 主要

gitblog_00331的博客 920

用go语言实现一个平面像素小游戏(一)

使用go语言,凭借Ebiten引擎开发简单的像素平面种田小游戏

Shoulen的博客 979
上一篇: 23种设计模式C++实现UML+源码汇总
下一篇: go语言游戏编程-Ebiten实现画面的填充
andrewbytecoder
andrewbytecoder 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄10年 3476粉丝 687原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

andrewbytecoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值