美文网首页Golang语言社区
Go语言 实现匹配机制

Go语言 实现匹配机制

作者: Golang语言社区 | 来源:发表于2019-01-04 06:50 被阅读19次
package main

import (
    "LollipopGo/LollipopGo/util"
    "fmt"
    "net/http"
    "time"
)

// 匹配的结构
type Match_player struct {
    UID int
    Lev int
}

// 匹配的chan
var Match_Chan chan *Match_player
var Imax int = 0

// 初始化
func init() {

    data := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}
    re := InitDSQ(data)
    fmt.Println(re)

    Match_Chan = make(chan *Match_player, 100)
    return
}

func InitDSQ(data1 []int) [4][4]int {

    data := data1
    erdata := [4][4]int{}
    j, k := 0, 0

    // 循环获取
    for i := 0; i < 8*2; i++ {
        // 删除第i个元素
        icount := util.RandInterval_LollipopGo(0, int32(len(data))-1)
        fmt.Println("随机数:", icount)
        //datatmp := data[icount]

        if len(data) == 1 {
            erdata[3][3] = data[0]

        } else {
            //------------------------------------------------------------------
            if int(icount) < len(data) {
                erdata[j][k] = data[icount]
                k++
                if k%4 == 0 {
                    j++
                    k = 0
                }

                data = append(data[:icount], data[icount+1:]...)
            } else {
                erdata[j][k] = data[icount]
                k++
                if k%4 == 0 {
                    j++
                    k = 0
                }
                data = data[:icount-1]
            }
            //------------------------------------------------------------------
        }
        fmt.Println("生成的数据", erdata)
    }

    return erdata
}

// 主函数
func main1() {

    // 第一个数据:
    idata := &Match_player{
        UID: 1,
        Lev: 6,
    }
    Putdata(idata)

    // 第二个数据:
    idata1 := &Match_player{
        UID: 2,
        Lev: 20,
    }
    Putdata(idata1)

    // 第三个数据:
    idata2 := &Match_player{
        UID: 3,
        Lev: 90,
    }
    Putdata(idata2)

    // 第四个数据:
    idata3 := &Match_player{
        UID: 3,
        Lev: 900,
    }
    Putdata(idata3)
    Putdata(idata3)
    Putdata(idata3)

    // defer close(Match_Chan)
    Imax = len(Match_Chan)
    // 取数据
    // DoingMatch()
    //go Sort_timer()

    strport := "8892" //  GM 系统操作 -- 修改金币等操作
    http.HandleFunc("/GolangLtdGM", IndexHandlerGM)
    http.ListenAndServe(":"+strport, nil)

    return
}

// 压入
func Putdata(data *Match_player) {
    // fmt.Print("put:", data, "\t")
    Match_Chan <- data
    // fmt.Print("len:", len(Match_Chan), "\t")
    return
}

// 获取
func DoingMatch() {

    Data := make(map[int]*Match_player)
    // 全部数据都拿出来
    // data := make(chan map[string]*Match_player, 100)
    // data <- Match_Chan
    for i := 0; i < Imax; i++ {
        if data, ok := <-Match_Chan; ok {
            fmt.Print(data, "\t")
            Data[i+1] = data
        } else {
            fmt.Print("woring", "\t")
            break
        }
    }
    // 打印数据保存
    fmt.Println(Data)
    return
}

func Sort_timer() {
    // 控制排队的速度
    timer := time.NewTimer(time.Millisecond * 400)
    for {
        select {
        case <-timer.C:
            {
                // 获取channel数据的函数。
                DoingMatch()
            }
        }
    }
}

// 排序算法  每8秒排序一次
func Sort_channel() {
    return
}

// 数据处理
func IndexHandlerGM(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "hello world")
    // 需要处理 get请求等
}

//------------------------------------------------------------------------------


社区交流群:221273219
Golang语言社区论坛 :
www.Golang.Ltd
LollipopGo游戏服务器地址:
https://github.com/Golangltd/LollipopGo
社区视频课程课件GIT地址:
https://github.com/Golangltd/codeclass


Golang语言社区

相关文章

  • Go语言 实现匹配机制

    社区交流群:221273219Golang语言社区论坛 : www.Golang.LtdLollipopGo游戏服...

  • golang内存逃逸

    一篇很好的博客: Go 语言机制之栈与指针 Go 语言机制之逃逸分析 Go 语言机制之内存剖析 Go 语言机制之数...

  • GO语言入门第四节 Go语言异常处理机制

    Go语言的异常机制 ​ Go语言没有传统意义上的错误机制,Go 语言的创始人认为程序员对异常的使用对代...

  • Go语言实现TCP通信

    章节 go 优势 go 实现 TCP 通信 1 go 语言优势 1.1 go 语言优势 2 go 实现TCP通信 ...

  • Golang语言社区 课程2018年12月6日 更新说明

    Golang语言社区 课程2018年12月6日 更新说明 Go语言单机、联网贪吃蛇实现 课程更新: 第十六节:匹配...

  • 环境

    导读: 由于GO语言的机制, 实现类不用显示实现接口, 所以需要一个好的IDE帮你查找实现类 IDE推荐: jet...

  • Golang learning 结构体 struct 与面向对

    Go 语言并不是传统意义上的面向对象语言,但是实现很小的面向对象的机制。匿名嵌入并不是继承,无法实现多态处理,虽然...

  • go语言gc实现、触发机制

    算法: 标记-清除:从根变量开始遍历所有引用的对象,引用的对象标记为"被引用",没有被标记的进行回收。 优点:解决...

  • GO 读写锁sync.RWMutex(1)

    继GO语言锁机制(1)后,我们继续来探讨GO语言的锁机制 sync.RWMutex (读写锁,R代表度,W代表写)...

  • 什么是Docker?

    什么是Docker? Docker 是基于Go语言实现的开源容器项目。利用操作系统本身已有的机制和特性,可以实现远...

网友评论

    本文标题:Go语言 实现匹配机制

    本文链接:https://www.haomeiwen.com/subject/voezlqtx.html