[第九只羊] 迷雾森林舞会II 房间座位设定

天亮了 昨晚是平安夜

关於迷雾森林故事

粉红烟花三个月

由於黑洞把12只 animal 吸走後的烟
分别往会场中央舞池集中
顿时 烟转化成乌云中雷电交加
骤雨马上就把中间区域淋出了一个小池塘 水深及膝
就当雨势逐渐转小之时
粉红孔雀意态阑珊的走入水池中
抖动的他的粉红色羽毛 周围的光点照着布朗运动的公式随之起舞
孔雀将他的奋力一震
池塘的水滴与粉光点结合成有机发光体
萤幕中出现了一艘巨大的方舟飞船

图片来源
刚消失的 animal 们全都在画面的船上朝着甲板走去

图片来源

集中在广场中央 水池上方
有个熟悉的身影从池塘的水中浮了出来
Rocky月光照着雨後的迷雾森林
照出了一道七色彩虹倒映在湖面上
已完全浮出水面的身影
洛神再度降临
阿虎继续拿着麦克风请台下观众掌声欢迎洛神
洛神朝着 animal 们说到
被选中的 animal 是根据过去三个月的洛神天地书记载个角色在森林间
所做的好事坏事并配合天赋给予技能
所有玩家都已知道自己的身份、阵营与胜利条件
游戏即将开始请大家拭目以待
她举手投足的优雅姿态穿梭过那道粉红色的大门
直接抵达选手们所待的方舟甲板
并出现在舞会现场孔雀 高亮度OLED萤幕的画面上
待续..

动物园派对

抱歉昨天实在有点赶有些bugs
我们先回头稍微整理一下
我们尚未建立使用者,这边先暂时先建立一个使用者

$ rails console
$ > User.create(email: '[email protected]', name: '阿虎')

先将前端建立一个可以开房间建立房间的连结

/app/views/rooms/index.erb

<div id="app"></div>
<%= link_to '建立新房间', new_rooms_path %>

建立房间里面,之後我们再来布置房间

/app/views/rooms/show.erb

// 欢迎来到游戏房间
<p>房间名称</p>
<%= @room.name %>
<p>房间板子</p>
<%= @room.board %>
<p>游戏人数</p>
<%= @room.number_of_gamer %>
<p>房间座位数量</p>
<%= @room.seats.count %>

在建立房间之後建立座位
我们修正一下座位的资料结构
把座位的使用者 id 改成选填
也摆座位状态取消
也取消座位跟使用者的关联
因为我们座位是空的时候是没有使用者的

$ rails g migration add_user_id_form_seats
class RemoveUserIdFormSeats < ActiveRecord::Migration[6.1]
  def change
    remove_column :seats, :user_id,null: false, foreign_key: true
    remove_column :seats, :status
    add_column :seats, :user_id, :integer
  end
end

取消座位与使用者关联

class User < ApplicationRecord
  has_many :blogposts
end

更新一下routes的部分

Rails.application.routes.draw do
  resources :rooms
  resources :seats

  root to: 'rooms#index'
end

/app/controller/rooms_controller/

  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)
        #  TODO: 将市长加入房间
        #  save current_user with room_id
        redirect_to room_path(@room), notice: '房间建立成功'
      else
        redirect_to new_room_path, notice: '发生错误 请重新建立房间'
      end
    else
      render :new
    end
  end
  
  private

  def create_seats(room_id, seat_count)
    return if seat_count.blank? || room_id.blank?

    seat_count.times do |seat_number|
      Seat.create(room_id: room_id, number: seat_number+1).save
    end
  end

这麽一来我们就把房间跟座位都准备好罗

阿虎每日选币

守 0.8605

天黑请闭眼


<<:  Day9# Function 及 Function Receiver

>>:  css linear-gradient

【学习笔记-JS】处理阵列的方法

接下来介绍处理阵列的方法 这些方法对於资料处理很重要 那就一起来看下去吧 处理阵列的方法 .forE...

强型闯入DenoLand[25] - 使用 Deno 打造多线程应用(2)

强型闯入DenoLand[25] - 使用 Deno 打造多线程应用(2) 在了解何谓多线程以後,...

GitHub Commit signature verification - 确定每次变更来源是可以信任的

GnuPG (简称 GPG),允许作者对资料与通信进行加密与签章。你可以在本地端使用 GPG 对 C...

Day28 JQuery应用

JQuery的应用有非常多种,概念就是当触发条件达成时,我要做些甚麽,例如:滑鼠单击一下,隐藏的选单...

[NestJS 带你飞!] DAY24 - Authentication (下)

上一篇已经处理好注册与登入的部分,但一个完整的帐户机制还需要包含 登入後 的身份识别,为什麽登入後还...