Go キーボードを打っている風の画面

Goのebitenパッケージでつくりました。

ソースコード

package main

import (
    "log"
    "os"

    "github.com/hajimehoshi/ebiten/audio"
    "github.com/hajimehoshi/ebiten/audio/wav"
    "github.com/hajimehoshi/ebiten/ebitenutil"

    "github.com/hajimehoshi/ebiten"
)

var (
    text = `The Adventures of Tom Sawyer is set in the
1840's in the fictitious town of St. Petersburg,
Missouri, where Tom lives with his deceased mother's
sister, Aunt Polly, and his half-brother, Sid.

After Tom plays hooky from school, he is made to
whitewash Aunt Polly's fence as punishment, but
persuades his friends to do it for him.`
    count        = 0
    frameCount   = 0
    audioContext *audio.Context
    audioPlayer  *audio.Player
)

func init() {
    var err error
    audioContext, err = audio.NewContext(44100)
    if err != nil {
        log.Fatal(err)
    }

    f, err := os.Open("SE/keyboard.wav")
    if err != nil {
        log.Fatal(err)
    }

    d, err := wav.Decode(audioContext, f)
    if err != nil {
        log.Fatal(err)
    }

    audioPlayer, err = audio.NewPlayer(audioContext, d)
    if err != nil {
        log.Fatal(err)
    }

    audioPlayer.SetVolume(0.10)
}

func update(screen *ebiten.Image) error {

    frameCount++

    if ebiten.IsDrawingSkipped() {
        return nil
    }

    ebitenutil.DebugPrintAt(screen, text[:count], 5, 5)

    if count < len(text) && frameCount%5 == 0 {
        audioPlayer.Rewind()
        audioPlayer.Play()
        count++
        frameCount = 0
    }

    return nil
}

func main() {
    if err := ebiten.Run(update, 330, 240, 2, "moveSentence"); err != nil {
        log.Fatal(err)
    }
}

動いている様子

音量が大きいので注意してください。

キーボードの音源:魔王魂 フリー効果音素材「機械音」 パソコン03
https://maoudamashii.jokersounds.com/list/se14.html
表示している文章は、著作権フリーの文章があるサイト「Lit2Go」にある
「The Adventures of Tom Sawyer」の冒頭を使用しました。

使用している関数の解説

func DebugPrintAt(image *ebiten.Image, str string, x, y int)

imageの(x座標, y座標)の位置にstrを表示する

func (p *Player) SetVolume(volume float64)

pに設定されている音源の音量をvolumeに設定する
volumeに設定可能な値 : 0.0 ~ 1.0(float64)

func (p *Player) Rewind() error

pに設定されている音源の開始位置を先頭まで巻き戻す

func (p *Player) Play() error

pに設定されている音源を再生する

参考URL

https://godoc.org/github.com/hajimehoshi/ebiten
https://godoc.org/github.com/hajimehoshi/ebiten/ebitenutil
https://godoc.org/github.com/hajimehoshi/ebiten/audio
スポンサーリンク
レクタングル広告(大)
レクタングル広告(大)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする