Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8704

[WIP]ChatSpace -CHARACTER'S WAR-

$
0
0

はじめに

これはメモ帳です
TECH CAMPというプログラミング教室に通っている添野といいます。
TECH CAMPでは「ChatSpace」という簡単なwebチャットアプリを開発しますが、
私はこれを改造し、ゲームアプリ化を図っています。この経緯をここに示し、更新していきます。

使用言語、ライブラリ等

Ruby,Rails,HTML,CSS,JavaScript,jQuery,SQL
エディタ:vscode

ゲームタイトル(アプリ名)

ChatSpace -CHARACTER'S WAR-です。

どんなゲーム?

チャットアプリ内で戦争を行います

ChatSpaceはチャットアプリなので、文字列を投稿できます。
私はその文字列たちを戦闘させる仕組みを作っていきます。

ユーザーがやることはシンプルで、文字列を登録するだけです。

ルール

ユーザーは「チーム」を編成できます。
チームとは、字数4~16文字で編成された文字列です。
ユーザーはCPUもしくは他のユーザーが登録した「チーム」と対戦できます

文字ごとの個性

・アルファベット、日本語が使用できます。記号などその他の文字は使用できません。

・文字は「体力」「攻撃力」「スピード」「戦闘型」「移動型」「属性」の6つのステータスを持ちます。
・ステータスはユーザーが任意に割り振ることはできず、文字ごとに予めランダムで設定されています。

例:「力」という文字のパラメータは以下です。
 体力:10pt、攻撃力:5pt、スピード:0.5pt、属性:火
 移動型:散策 (完全にランダムで移動します)
 戦闘型:直線前方3 (毎ターン直線前方3マスに攻撃します)

※開発中のため色々と変更になる可能性が高いです

属性について

属性はの5つです。
属性によって有利不利の概念があります。
火は木に有利、水は火に有利、木は水に有利です。光と闇はお互いに有利です。

ゲームについての説明は以上です。以下は開発にあたり使用するデータになります。

(以下、随時更新しています)

[WIP]データベース(2020.03.04 14:30更新)

はじめに、データベース設計をしていきます。
上記で説明した「チーム」や「文字ごとの個性」という概念について、それぞれテーブル分けして定義します。

usersテーブル

ユーザーを識別します。
 ・ 複数のチームを所有できます。

ColumnTypeOptions
namestringnull: false
passwordstringnull: false
emailstringnull: false
team_idintegernull: false, foreign_key: true

Assosiation
has_many :teams

teamsテーブル

チームを定義します。
 ・ 1人のユーザーによって所有されます。
 ・ 複数の文字(chars)を所有できます。
 ・ 文字数は4~16の制限を設けます。

ColumnTypeOptions
namestringnull: false
user_idintegernull: false, foreign_key: true
char_idintegernull: false, foreign_key: true

Assosiation
belongs_to :user
has_many :chars

Validation
validates :char_id, length: { in: 4..16 } ←文字数制限の定義方法を調査中

charsテーブル

 ・ ユーザーの指定した文字の情報がテーブルに存在すれば情報を渡します。
 ・ ユーザーの指定した文字の情報がテーブルに存在しなければ新たに情報をランダム生成して格納します。
 ・ 1つのチームに所有されます。
 ・ 1つの戦闘型(btype)を所有します。
 ・ 1つの移動型(mtype)を所有します。
 ・ 1つの属性(element)を所有します。

ColumnTypeOptions
namestringnull: false
vitalityintegernull: false
attackintegernull: false
speedintegernull: false
team_idintegernull: false, foreign_key: true
btype_idintegernull: false, foreign_key: true
mtype_idintegernull: false, foreign_key: true
element_idintegernull: false, foreign_key: true

Assosiation
belongs_to: team
belongs_to: btype
belongs_to: mtype
belongs_to: element

btypesテーブル

 ・ このテーブルは予め情報を入れ、編集しません。
 ・ 1つのcharによって所有されます。
 ・ "space"には攻撃する座標の位置を指定します。←恐らく、もう一つテーブルの追加が必要?

ColumnTypeOptions
namestringnull: false
spaceintegernull: false

Assosiation
belongs_to: char

mtypesテーブル

 ・ このテーブルは予め情報を入れ、編集しません。
 ・ 1つのcharによって所有されます。
 ・ "move"には移動方法の種類を定義します。←恐らく、もう一つテーブルの追加が必要?

ColumnTypeOptions
namestringnull: false
moveintegernull: false

Assosiation
belongs_to: char

elementsテーブル

 ・ このテーブルは予め情報を入れ、編集しません。
 ・ 1つのcharによって所有されます。
 ・ "ratio-to"には各属性に与える攻撃力の倍率が入ります。
 ・ "ratio-from"には各属性から受ける攻撃力の倍率が入ります。

ColumnTypeOptions
namestringnull: false
ratio-to-firedoublenull: false
ratio-to-waterdoublenull: false
ratio-to-wooddoublenull: false
ratio-to-lightnessdoublenull: false
ratio-to-darknessdoublenull: false
ratio-from-firedoublenull: false
ratio-from-waterdoublenull: false
ratio-from-wooddoublenull: false
ratio-from-lightnessdoublenull: false
ratio-from-darknessdoublenull: false

Assosiation
belongs_to: char


Viewing all articles
Browse latest Browse all 8704

Latest Images

Trending Articles

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>