Skip to content

RyushiAok/HappyNewYear2025

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Snake

memo

盤面表現

  • 外枠のセルの値は1で固定
  • 枠内のセルの値は残存時間を表し,Snakeの移動(画面更新)に伴い以下のルールに従い更新される
    • 卵を取得できなかった場合,残存時間を1減らす.ただし最小は0
    • 移動先の残存時間にSnakeの長さを加える
let obstacles =
    if ate then
        state.cells.obstacles + snake.length * head
    else
        torch.max (state.cells.obstacles - (1 - state.cells.border), 0) + snake.length * head
外枠に衝突 Snake自身に衝突

終了判定

  • 「Snakeの先頭より残存時間が長いセルが存在するかどうか」で終了判定する
let isOver =
    (torch.greater (obstacles, snake.length)).sum().ToScalar().ToInt32() > 0

状態管理

  • MailboxProcessorによりアクターモデルとしてゲームの状態管理を実装する
let processor =
    MailboxProcessor<Message>.Start(fun inbox ->
        let rec loop state =
            async {
                let! command = inbox.Receive()

                let state =
                    match command with
                    | Action command -> update command state

About

Snake Game - 巳年の書初めです🐍

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published