[第十四只羊] 迷雾森林舞会VII 开完房间後走进房间

天亮了 昨晚是平安夜

关於迷雾森林故事

焦虑抑制剂

4号:我跟全场站不同边耶,我站7耶,我跟7号玩家共事过几个月,应该是不常玩所以不知道这样跳会被怀疑,因为他就觉得我很紧张,我是预言家没有先讲,就会被大家怀疑,可能很久没玩会犯这个错误,加上他跳成这副德性,9号吃相很难看啊,天啊我对手太烂了这样,这是9号非常基本款的招数,对9号来说信手捻来,後面的来讲到7号的时候他一副就是我没有想要理你们了认不到你们家的事情,他不是尴尬也不是玩累了,就是觉得好无聊喔这个游戏的这种感觉XD,听到他的OS,我觉得5跟8听得懂我在讲什麽,因为他们两位很犹豫,我不知道有没有get错,加上一面倒,所以我很站7边,尤其全部人都在扛推6,我觉得很奇怪,所以我站7边,9很明显是狼王,1号金水我就吞不下去了,因为7号跳这麽烂,你不用发个金水拉票,所以我就觉得你在做队友身份,你可能做给狼队身份,我觉得2是好的但是3超级打2,因为2是唯一一张有犹豫到底7是不是真预言家的玩家,所以我觉得2有讲到有讲到这个东西篇好,现在全部风向已经是信9推7了,那干嘛突然演一波,然後3打的坑是2 6 7 8,他也是有推6,跟9的口径是一致的,因为9也有推2也有推6,跟9的口径很一致,9也有推3跟6,所以3跟9坑太像了所以3也入我坑,所以我的坑现在有1 9 3,如果再抓一个我可能会抓8容错,因为9有跟8对话,握会觉得跟9有对到话的人都偏向在做身份,因为他就觉得7号跳那麽烂了这场我一定稳跳赢,所以我现在对话的人全部都在帮你做身份,我的感觉,而且我现在也没办法归一个外置位我也只能7 9,7 9投,如果真的衰到
7出去没有启动技能女巫请直接把9毒掉,我是想投9,9如果是狼王我就让他带这也没有办法,我有跳没跳都没差,我是骑士,如果撞到狼枪我就是两神换一狼,没办法就只能这样,如果我真的厉害应该是要从外置位归到一狼,但我不敢,我真的不敢归到外置位,所以我就直接让局势明显一点,说不定我如果撞9结果9是好人那我不就..没关系骑士选择撞9

洛神:骑士发动技能撞9,9号不是狼人,4号玩家出局,接下来进行第一轮放逐投票
投7:1 2 3 5 6 8 9 10
投9:7
7号玩家出局,启动角色技能,你要带走的对象是?
7号:枪杀9号玩家
洛神:9号玩家出局,请至淘汰区
7号:跟我的狼队友们说什麽好呢?我觉得5 6有身份
洛神:天黑请闭眼

待续..

动物园派对

有了登入系统之後我们就可以把current user加入房间
我们先到座位的model加几个我们会常常呼叫的方法
我们会常需要看座位是不是有空位,是不是已有玩家入座
所以先把空位跟非空位都先写在 Seat.rb的 model 之中

/app/models/seat.rb

class Seat < ApplicationRecord
  belongs_to :room

  def self.empty_seat_collection(room)
    empty_seat_ids = []
    room.seats.each do |seat|
      if seat.user_id.blank?
        empty_seat_ids << seat
      end
    end
    empty_seat_ids
  end

  def self.occupied_seat_collection(room)
    occupied_seat_ids = []
    room.seats.each do |seat|
      if seat.user_id.present?
        occupied_seat_ids << seat
      end
    end
    occupied_seat_ids
  end
end

接下来先把创建房间的玩家指定为室长
这边我们会用到这个 rolify gem
rolify 装完之後用法很简单 只要指定角色给该位使用者就可以了
再来我们重新回到之前做好的建立房间
重新写一个方法叫做指定室长assign_seat_to_mayor(@room)

/app/controllers/rooms_controller.rb

  def create
    @room = Room.new(room_params)
    if @room.validate(room_params)
      @room.board = Room.boards[room_params[:board]]
      @room.save
      if @room.seats.count == 0
        create_seats(@room.id, @room.number_of_gamer)
        assign_seat_to_mayor(@room)
        redirect_to room_path(@room), notice: '房间建立成功'
      else
        redirect_to new_room_path, notice: '发生错误 请重新建立房间'
      end
    else
      render :new
    end
  end

接下来就可以指定创建房间的人为室长
指定的语法是

current_user.add_role :mayor

同时当使用者离开房间的时候我们要更新座位、移除原本的室长,
当房间还有人的时候,重新任意指定新室长
离开房间的人,我们还必须清除他的座位,并移除使用者本身正在游戏的房间id

/app/controllers/rooms_controller.rb

  def assign_seat_to_mayor(room)
    empty_seats = Seat.empty_seat_collection(room)
    if empty_seats.count > 0
      seat = empty_seats.sample
      seat.update(user_id: current_user.id)
      current_user.update(room_id: current_user.id)
      current_user.add_role :mayor
    end
  end

  def purify_user_before_left_room(room)
    occupied_seats = Seat.occupied_seat_collection(room)

    # clear user rolify in the room and re-assign mayor role
    clear_the_seat = occupied_seats.select{|s| s.user_id = current_user.id}
    clear_the_seat.update(user_id: nil)
    current_user.update(room_id: nil)
    current_user.remove_role :mayor if current_user.has_role? :mayor
    # clear seat from occupied to empty

    if empty_seats <= 0
      # hide the empty room
    else
      # assign new mayor
      seat = occupied_seats.sample
      new_mayor = User.find(seat.id)
      new_mayor.add_role :mayor
    end
  end

这麽一来我们就完成室长建立房间、坐下座位,以及座位指定玩家的这些功能罗

阿虎每日选币

我们今天来看比特,没跌破 $41688 其他就随意,详细一点说,大跌在即请有买的看倌多多小心,$41688只是单独指短期不跌破可以看看其他标的,但要小心诱多,修正大回调在 $43000没守住时就已经底定,$36000 没守住应该会跌破 $30000

天黑请闭眼


<<:  【没钱买ps,PyQt自己写】Day 14 - 使用 QSlider 制作可拖曳的滑条

>>:  DAY14 - 档案类的物件关系厘清(3) - ArrayBuffer

灵异现象 - 我根本没这个帐号阿

灵异现象 - 我根本没这个帐号阿 灵异现象 故事接着小新公司被入侵之後的延续, 小新在厂商调查的同时...

Python 生成 Windows 执行档教学 (Pyinstaller, PowerShell)

壹、前言 将 python 程序封装,使用者将更便於使用,而不需担心设定 python 环境 mac...

Delphi 列举(筛选)子目录下符合档案【附例】

Purpose:运用’回呼函数Callback’,列举(筛选)子目录下符合档案 Enviro:Del...

Day28 Data Storage in iOS 04 - Core Data 简介

Core Data 官方文件 Core Data 是 iOS 的资料库,可让使用者在本地端储存资料 ...

Day 20 「就是真诚」TDD 的实弹演习:Magneto Effect

打球像做人 上图是笔者几年前拿网路上的图来东凑西凑,拼出来的桌面,本只是拿来练 Photo Imp...