前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Golang语言情怀--第141期 Go语言Ebiten引擎《荒野坦克大战》开发PC端:调试登录服务器完成

Golang语言情怀--第141期 Go语言Ebiten引擎《荒野坦克大战》开发PC端:调试登录服务器完成

作者头像
李海彬
发布2024-11-19 13:18:07
发布2024-11-19 13:18:07
8400
代码可运行
举报
文章被收录于专栏:Golang语言社区Golang语言社区
运行总次数:0
代码可运行

LollipopGo游戏服务器架构图

首先给大家说下,LollipopGo架构示意图,如下:

Ebiten框架开发《荒野坦克大战》PC版本

本节主要调试登录,客户端链接登录服务器,目前已经测试完成,并且成功拿点登录服务器的token数据,如下图:

代码如下:

代码语言:javascript
代码运行次数:0
复制
package login

import (
    impl "LollipopGo/network"
    "encoding/base64"
    "encoding/json"
    "gamepad/_config"
    twlib_user "github.com/Golangltd/Twlib/user"
    "github.com/golang/glog"
)

// 数据{"app" :"tank" ,"flag" :"Facebook"data":"id: "Guest 824859","name\":\"Guest_824859\",\"gender\":\"\"\”email\" :\"\" ,\"picture\" :\"\" ,\"avatar\" :\"\"}"
// {"app" :"tank" ,"flag" :"Facebook","data":{"id": "Guest 824859","name":"Guest_824859","gender":"","email" :"","picture":"","avatar":""}}"
// 登录的结构
type LoginST struct {
    App  string `json:"app"`
    Flag string `json:"flag"`
    Data Player `json:"data"`
}

type Player struct {
    Id      string `json:"id"`
    Name    string `json:"name"`
    Gender  string `json:"gender"`
    Email   string `json:"email"`
    Picture string `json:"picture"`
    Avatar  string `json:"avatar"`
}

type LoginData struct {
    Token      string
    Url        string
    ServerList []*twlib_user.ServerList
    AesKey     string
}

// 请求登录服务器
func Login(id, loginname string) bool {

    urldatast := LoginST{
        App:  "tank",
        Flag: "Facebook",
        Data: Player{
            Id:   id,
            Name: loginname,
        },
    }

    urldatastr, _ := json.Marshal(urldatast.Data)
    url := ""
    if _config.IsProd {
        url = _config.ProUrl + "app=" + urldatast.App + "&flag=" + urldatast.Flag + "&data=" + string(urldatastr)
    } else {
        url = _config.TestUrl + "app=" + urldatast.App + "&flag=" + urldatast.Flag + "&data=" + string(urldatastr)
    }
    glog.Info("-------------------登录发送数据:", "app="+urldatast.App+"&flag="+urldatast.Flag+"&data="+string(urldatastr))
    returndata := impl.Get(url)
    glog.Info("-------------------登录数据返回:", returndata)

    //-----------------------------------------------------------------------------------------------------------------
    base64Str := returndata[1 : len(returndata)-1] //"SGVsbG8gV29ybGQh"
    decodedBytes := make([]byte, base64.StdEncoding.DecodedLen(len(base64Str)))
    n, err := base64.StdEncoding.Decode(decodedBytes, []byte(base64Str))
    if err != nil {
        glog.Info("解码错误:", err)
        return false
    }
    // 打印解码后的字符串
    //------------------------------------------------------------------------------------------------------------------
    // 解码
    var playerData LoginData
    err = json.Unmarshal(decodedBytes[:n], &playerData)
    if err != nil {
        glog.Info("Error:", err)
        return false
    }
    glog.Info("解析后的Token数据:", playerData.Token)
    //------------------------------------------------------------------------------------------------------------------
    // 存储数据到本地数据
    //------------------------------------------------------------------------------------------------------------------
    return true
}

本节就暂时到这里,明天继续EbitEngine编程。代码比较简单,不明白的可以留言。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言情怀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LollipopGo游戏服务器架构图
  • Ebiten框架开发《荒野坦克大战》PC版本
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档