[第二十三只羊] 迷雾森林舞会XVII 玩家x座位x游戏角色 多对多关联

天亮了 昨晚是平安夜

关於迷雾森林故事

说服

洛神:3号 8号平票,进入PK环节,3号开始发言
3号:现在也不能拍身份,怎麽办??10号号刚定义8的身份也蛮怪的,而且10号卖视野跟我讲说6号应该是好人,他哪来的视野说6号是好人,如果你们有两狼是不是可以直接自爆了,对不对,8有投10我有看到,不然你们投我好了,我是好人可是我不想要输,如果8号发言真的非常好的话,真的没办法,就这样,8跟10都很奇怪,我在听一次8好了,过

8号:好,我用我的视角跟想法,来就是说服大家看看,我觉得6号应该是狼走的,10号应该是最後一只狼的原因是因为7号遗言5 6 有身份,所以5 6可能包一只狼,那如果5 6包一只狼的话,因为我觉得5号很好啊,然後6号的话就一定会进坑,然後我刚觉得3号会排进刚的狼坑的话因为没有坑位了所以才会把3号排进来,但他刚表情很纠结,所以应该是个好人,我觉得3 8我们两个都是好人,你们可能要想一下要怎麽赢,因为女巫还在,如果现在平票,女巫晚上可以把10毒了,因为只剩下一狼,但如果狼冲票就输了,总之我觉得10号是最後一狼,6号是那个狼走的,就像3号号说的10号怎麽知道6号是好人呢?所以就试着平票,要嘛大家都弃票,晚上女巫去毒10号玩家,过了过了

洛神:第二轮 PK 3 2 1 请投票
弃票:2 5 10


图片来源
洛神:今天是平安日,天黑请闭眼
待续..

动物园派对

那我们在解释一下前天遇到的困境与列一下需求
在关连的对应关系
我们现在已有的table

  • 房间(:room)
  • 座位(:seat)
  • 使用者(:user)
  • 身份(:role)
  • 村庄(:village)

其中最後需要的关联大概会是这样

  • 1个房间,有12个座位(资料库关联已建构完成)
  • 1个座位,可以坐1个玩家(资料库已建构完成)
  • 1个座位,会对应1个游戏角色
  • 1个游戏角色,会拥有技能、职业、职业名称、阵营
  • 1个房间可以进行多场游戏
  • 1个房间可根据板子指派村庄身份牌给每个座位

所以前天遇到的困境是村庄的村民(:village)、村民身上的技能(:skill)与座位(:seat)
之间究竟该怎样关联
当初觉得使用者技能在不同的职业会有相同,可能需要独立出来再做关联
但是又卡到技能(:skill)如果跟村民(:village)分成两张table,
架构上载似乎已经太复杂而且感觉也没有必要,因为技能跟村民不会随着游戏进程而变动
所以透过昨天拖台钱滑水关键策略模式
我们要同时整理
游戏座位技能(:seat)、游戏角色(:village)、技能(:skill)、游戏回合(:game)这些table

怎麽做呢?
我们采用多对多的关联, The has_many :through Association
来达成目前的目前的目标

/models/seat.rb

class Seat < ApplicationRecord
  rolify
  belongs_to :room
  has_many :games
  has_many :villages, through: :games
  ...
/models/village.rb

class Village < ApplicationRecord
  has_many :games
  has_many :seats, through: :games
end

因为还没有commit到远端
先直接还原昨天的db做一点点修正

$ bundle exec rake db:rollback
migrations/2021100614xxxx_create_villages.rb

class CreateVillages < ActiveRecord::Migration[6.1]
  def change
    create_table :villages do |t|
      t.string :title
      t.integer :role
      t.integer :party
      t.integer :skill

      t.timestamps
    end
  end
end

建立新的关联式资料库

$ rails g model game
/models/game.rb

class Game < ApplicationRecord
  belongs_to :seat
  belongs_to :village
end

/migrations/2021100713xxxx_create_games.rb

class CreateGames < ActiveRecord::Migration[6.1]
  def change
    create_table :games do |t|
      t.integer :round, default: 1
      t.belongs_to :village, index: true
      t.belongs_to :seat, index: true
      t.timestamps
    end
  end
end

这麽一来就把游戏座位技能(:seat)、游戏角色(:village)、技能(:skill)、游戏回合(:game)
资料库暂时整合好罗
明天我们将透过这个关联来分配角色给座位

阿虎每日选币

$grt

天黑请闭眼


<<:  Day30 Open-Match 使用与参赛心得

>>:  Day 25 : Tkinter实战,配合pillow制作简易的处理照片程序(上)

[DAY15]组图(2)

Imagemap message Imagemap messages are messages co...

[Day18]C# 鸡础观念- 回头吧!孩子~ref 与 out 参数修饰词

鲑鱼出生後会往下游生活, 到了产卵季节,会逆游而上, 回到最初的起点,进行产卵产卵, C#也有像鲑鱼...

Day 8 边缘暗角效果 ( 镜头晕影 )

边缘暗角效果 ( 镜头晕影 ) 教学原文参考:边缘暗角效果 ( 镜头晕影 ) 这篇文章会介绍使用 G...

未知的第二天 - Nuxt 的出现

在对 Nuxt 感兴趣之前,相信有许多人已经接触过一阵子的 Vue 了,若产出的网站为 SPA (s...

爬取instagram留言 - Selenium

这边我是打API爬的,所以先写了序列化: class IgCommentsSerializer(se...