iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
SideProject30

placeholder系列 第 17

30天打造線上多人桌遊網站-Day 17-開始遊戲-3次失敗-遊戲結束

  • 分享至 

  • xImage
  •  

0. 前情提要

本日目標

  1. done 系統配置遊戲
  2. done 玩家選擇行動
  3. done (三次打牌失敗)
  4. done 遊戲結束

https://ithelp.ithome.com.tw/upload/images/20231003/2015098777cBdgxyiN.png

1. 系統配置遊戲

=> app/channels/chat_room_channel.rb 新增 start_game 方法
=> app/javascript/channels/chat_room_channels.js 新增 this.perform("start_game", messageBody);
=> app/javascript/controllers/hello_controller.js 新增 startGame()
=> app/views/game_rooms/_game_room.html.erb 新增 按鈕

配置完成後

遊戲會得到

  1. 一組玩家順序
  2. 持有手牌的玩家
  3. 8 個資訊標記
  4. 抽牌堆

2. 玩家選擇行動

這裡讓玩家隨機打出手上的牌
=> 直接判定失敗
=> 抽牌
=> 獲得防火標記
=> 換下一位玩家

3. 三次打牌失敗

當獲得第三個防火標記時,將遊戲狀態 => 遊戲結束

4. 心得

研究了一下 Turbo Stream,可以很容易的把資料庫的資料更動即時更新到瀏覽器

順便把昨天的其中一題解決了

done re-render GameRoom when player joined the room

參考程式碼

class GameRoom < ApplicationRecord
+ broadcasts_to ->(game_room) { "game_rooms" }, inserts_by: :prepend
end

<%# app/views/game_rooms/index.html.erb %>
+ <%= turbo_stream_from "game_rooms" %>

-- https://www.hotrails.dev/turbo-rails/turbo-streams
會另外找一天好好介紹XD

一些可能比較難做的部分:

遊戲時自己不可以看到自己的牌
提示的功能

TODO List

  1. todo 建立玩家 ActiveRecord Model
  2. todo update identified_by :uuid to current_user.id
  3. todo 自己不可以看到自己的牌
  4. todo 提示的功能

5. 結語

用很亂的 code 先完成了 第一版 happypath XD

HOW-TO

  1. New Game Room
  2. back to Index
  3. Join the room
  4. open another tab as another player
  5. Join the same room
  6. Start Game
  7. Play Card
  8. Won 3 fire tokens
  9. Game Completed /images/emoticon/emoticon61.gif

試玩連結 -> https://ironman2023-hanabi.zeabur.app/


上一篇
30天打造線上多人桌遊網站-Day 16-玩家建立,加入房間
下一篇
30天打造線上多人桌遊網站-Day 18-PORO
系列文
placeholder20
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言