iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
Software Development

透過迷霧,看破一切~~ZOOPARTY 動物園派對桌遊設計系列 第 9

[第九隻羊] 迷霧森林舞會II 房間座位設定

天亮了 昨晚是平安夜

關於迷霧森林故事

粉紅煙花三個月

由於黑洞把12隻 animal 吸走後的煙
分別往會場中央舞池集中
頓時 煙轉化成烏雲中雷電交加
驟雨馬上就把中間區域淋出了一個小池塘 水深及膝
就當雨勢逐漸轉小之時
粉紅孔雀意態闌珊的走入水池中
抖動的他的粉紅色羽毛 周圍的光點照著布朗運動的公式隨之起舞
孔雀將他的奮力一震
池塘的水滴與粉光點結合成有機發光體
螢幕中出現了一艘巨大的方舟飛船

圖片來源
剛消失的 animal 們全都在畫面的船上朝著甲板走去

圖片來源

集中在廣場中央 水池上方
有個熟悉的身影從池塘的水中浮了出來
Rocky月光照著雨後的迷霧森林
照出了一道七色彩虹倒映在湖面上
已完全浮出水面的身影
洛神再度降臨
阿虎繼續拿著麥克風請台下觀眾掌聲歡迎洛神
洛神朝著 animal 們說到
被選中的 animal 是根據過去三個月的洛神天地書記載個角色在森林間
所做的好事壞事並配合天賦給予技能
所有玩家都已知道自己的身份、陣營與勝利條件
遊戲即將開始請大家拭目以待
她舉手投足的優雅姿態穿梭過那道粉紅色的大門
直接抵達選手們所待的方舟甲板
並出現在舞會現場孔雀 高亮度OLED螢幕的畫面上
待續..

動物園派對

抱歉昨天實在有點趕有些bugs
我們先回頭稍微整理一下
我們尚未建立使用者,這邊先暫時先建立一個使用者

$ rails console
$ > User.create(email: 'tiger@zoo.com', 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

天黑請閉眼


上一篇
[第八隻羊] 迷霧森林舞會I 建立遊戲房間
下一篇
[第十隻羊] 迷霧森林舞會III 參見排版神器 Tailwind
系列文
透過迷霧,看破一切~~ZOOPARTY 動物園派對桌遊設計30

尚未有邦友留言

立即登入留言