吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1090|回复: 16
上一主题 下一主题
收起左侧

[其他原创] go语言实现情侣互动游戏

[复制链接]
跳转到指定楼层
楼主
Jocelyn123 发表于 2025-4-6 21:18 回帖奖励
本帖最后由 Jocelyn123 于 2025-4-6 21:21 编辑

# 假期情侣间互动游戏(好感加倍)

## 场景描述

清明时节,窗外细雨绵绵,和对象窝在温暖的家中,享受着难得的假期。因为太无聊了,突发奇想用go写了一个随机动作互动游戏。游戏开始,系统用语音提示:“摸头发”,“摸耳朵”... 突然,系统提示:“抢!”,双方迅速伸手去夺抱枕,谁先拿到获胜。每当“抢”出现时,房间里就充满欢快的打闹声,连窗外的雨声都成了陪衬。三天假期,这个小游戏成了爱的互动,笑声驱散了阴雨的沉闷,也让彼此的陪伴更加甜蜜。

## 功能描述

Go语言实现的随机动作生成器程序,该程序通过权重机制实现不同动作的差异化概率触发。

## 技术实现要点

1. **跨平台文本转语音**:程序使用`exec.Command`调用不同平台的语音合成工具,包括macOS的`say`、Linux的`espeak`和Windows的PowerShell语音API。
2. **权重随机算法**:通过为每个动作分配不同权重值,实现了"抢"动作5倍于其他动作的触发概率,使用累计权重值计算实现随机选择。
3. **实时交互设计**:程序采用无限循环结构持续生成动作指令,当选中"抢"动作时,会暂停2秒并触发系统提示音(Windows平台)。

## 应用场景

​        1.互动游戏中的随机事件触发

​        2.教学演示中的随机提问系统

​        3.行为训练中的随机指令生成

## 实现代码

```go
package main

import (
        "fmt"
        "math/rand"
        "os"
        "os/exec"
        "runtime"
        "time"
)

func textToSpeech(text string) error {
        var cmd *exec.Cmd
        switch runtime.GOOS {
        case "darwin":
                cmd = exec.Command("say", text)
        case "linux":
                cmd = exec.Command("espeak", text)
        case "windows":
                psScript := fmt.Sprintf(`Add-Type -AssemblyName System.speech; $speak = New-Object System.Speech.Synthesis.SpeechSynthesizer;$speak.Volume = 100;$speak.Speak("%s")`, text)
                cmd = exec.Command("powershell", "-Command", psScript)
        default:
                return fmt.Errorf("unsupported platform")
        }
        cmd.Stdout = os.Stdout
        cmd.Stderr = os.Stderr
        return cmd.Run()
}

func warnNotice() error {
        cmd := exec.Command("powershell", "[console]::beep(800, 300)")
        cmd.Stdout = os.Stdout
        cmd.Stderr = os.Stderr
        return cmd.Run()
}

func main() {
        for {
                // 定义动作及其权重
                actions := []struct {
                        name   string
                        weight int // 权重 权重越高 命中率也高
                }{
                        {"抢", 5},
                        {"摸鼻子", 1},
                        {"摸耳朵", 1},
                        {"摸眼睛", 1},
                        {"摸头发", 1},
                        {"摸嘴巴", 1},
                        {"摸下巴", 1},
                        {"摸眉毛", 1},
                }

                // 计算总权重
                totalWeight := 0
                for _, a := range actions {
                        totalWeight += a.weight
                }

                // 生成随机数
                rand.Seed(time.Now().UnixNano())
                r := rand.Intn(totalWeight)
                // 根据权重选择动作
                cumulative := 0
                var selected string
                for _, a := range actions {
                        cumulative += a.weight
                        if r < cumulative {
                                selected = a.name
                                break
                        }
                }

                err := textToSpeech(selected)
                if err != nil {
                        fmt.Println("Error:", err)
                }
                if selected == "抢" {
                        time.Sleep(2 * time.Second)
                        // 报警声
                        //_ = warnNotice()
                }
        }
}
```

## 核心代码


## 运行结果


## 最后

实现逻辑很简单,通俗的话来说就是产生随机数,取数组元素。三天假期结束,牛马继续搬砖。期待下一个假期,五一节。。。

image.png (9.35 KB, 下载次数: 1)

image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
苏紫方璇 发表于 2025-4-7 10:37
md格式帖子需要使用编辑器里的markdown编辑器
【公告】发帖代码插入以及添加链接教程(有福利)
https://www.52pojie.cn/thread-713042-1-1.html
(出处: 吾爱破解论坛)
沙发
dfy167 发表于 2025-4-7 07:29
3#
HXlyf 发表于 2025-4-7 08:16
4#
szy4444 发表于 2025-4-7 08:58
有意思,感谢
5#
mw26973 发表于 2025-4-7 09:08
这个是真想学
6#
cagu 发表于 2025-4-7 09:12
先得找个伴儿一起玩,哈哈,多谢分享了
7#
handsomekk 发表于 2025-4-7 09:20
哈哈,再改改还能玩的更刺激
9#
baishibukele 发表于 2025-4-7 11:00
有成品没有?
10#
makaay 发表于 2025-4-7 12:13
能让对象开心,动动手做个小程序。也是美滋滋的。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-23 10:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表