ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要

前回の投稿では、接続コンポーネントを簡単に紹介し、その接続を使用してシンプルなプライベートチャットモデルを実装しましたが、今日はリアルタイムのマッチアンドアンサーモデルを作成します。一般的な設計アイデアは、ユーザーAが接続を入力するために登録し、そのCIDをURLに追加し、それを友達Bに転送することです。Bは、URLパラメーターを使用してケースを開き、部屋を作成してAに招待を送信します。Aが部屋に入ると、答えが始まり、答えは正しいです。ポイントを追加し、間違った答えが追加された場合、最終スコアがカウントされます。
1.データベース
ストレージの質問用にquestionTableデータベースに3つのフィールドが追加されます。タイトルにはタイトルが格納され、オプションにはオプションが格納され、JSON形式で記述されます。correctIndexには、正解のシリアル番号が格納されます。プレーヤーデータが格納されているuserTableデータベースのニックネームフィールドにはプレーヤーのニックネームが格納され、matchPointにはプレーヤーの勝ちの合計が格納されます。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
2.サービス
GetQuestionsサービスは、questionTableの質問を出力してフロントデスクに送信します。postUserサービスは、データベースから優勝したプレーヤーを見つけ(見つからない場合はプレーヤーデータを追加)、そのマッチポイントフィールドを更新します。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
3.変数
次の図は、
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
試合の最終結果示すためにケースで使用される変数finalResult であり、この場合、「勝利」、「失敗」、「引き分け」の値が割り当てられ、勝敗、引き分けを示します。その結果、自分のスコアと対戦相手のスコアを示すために、「私たちのスコア」と「対戦相手のスコア」が割り当てられます。
AnswerIndexとopponentAnswerIndexは、自分と相手の回答結果、つまり選択したオプションのシリアル番号を表しており、初期値は-1です。
QuestionIndexは現在の質問のシリアル番号を表し、currentQuestionは現在の質問を保存するために使用され、すべての質問はquestionListに保存されます。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
WaitTimeは、質問に答える前の準備のカウントダウンです。初期値は5です。limitTimeは、回答時間のカウントダウンです。初期値は20です。
roomIDは、接続によって作成された部屋のID番号を格納します。opponentInfoとuserInfoは、スコアとニックネームとCIDコードを含む、対戦相手とそれ自体の情報を格納します。cidは、共有パラメーター(ゲーム開始者のCIDコード)にURLパラメータを格納します。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
4.リアルタイムのバトル応答プロセス
1.最初のステップでは、開始プレイヤーAがケースを開き、ニックネームを入力して[開始]ボタンをクリックします。次に、現在のプレイヤーが最初に登録され、次にAの情報がuserInfoに格納されます。このとき変数に注意してください「Cid」はまだ空なので、残りの条件付きブランチが実行されます。システムは、現在のユーザーAのCIDコードをURLに追加し、バナーを表示します。上記は、追加されたパラメーターを持つ共有リンクです。ユーザーはこのリンクを共有しますただの友達B
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
2. 2番目のステップで、BはAが共有するリンクを開き、ケースに入力します。フロントデスクはURLのパラメーターを読み取り、初期化中に「cid」に出力します。つまり、「cid」に保存されたAのCIDコード値は空です。このようにして、BがuserInfoに情報を登録して保存した後、cidの空でない条件付きブランチが実行されます。最初に、データベースから質問を取得するためにgetQuestionsが呼び出され、ルームIDとして乱数が生成され、ルームが作成されます。作成が成功すると、BはAに送信します。個人的なメッセージの場合、メッセージのメソッドコンテンツは「starGame」です。つまり、ゲームに参加するよう招待されます。同時に、メッセージのコンテンツには、roomID、プレーヤーのニックネーム、およびすべてのトピックが含まれます。送信後、フロントデスクはプレイページにジャンプし、次の操作を待ちます。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
3. 3番目のステップは、AがBからパーソナルメッセージを受信することです。接続がパーソナルメッセージを監視し、メッセージコンテンツのメソッドが「startGame」の場合、opponentInfoが空かどうかを判断します。空の場合は、対戦相手がないことを意味します。相手から送信されたroomID、タイトルデータ、相手のニックネーム、スコア、CIDが保存され、相手の部屋に追加されます。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
ルームに参加した後、Aはルーム内にルームメッセージを送信して、ルーム内のユーザー(つまりB)にプレーヤーAのニックネームとCIDを通知し、最後に再生ページにジャンプしてwaitIntervalトリガーの再生を開始します。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
もちろん、可能性もあります。たとえば、別のプレーヤーCもAによって共有されたリンクを取得してケースに入ったが、現時点ではAがBの部屋に入っているため、プレーヤーAの機会情報パラメーターがすでに空ではない場合、Aは拒否メッセージをCに返します。接続は、拒否メッセージであることを監視および判断します。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
4.プレーヤーCは単なるエピソードです。プレーヤーBがプレーヤーAから送信されたルームメッセージを受信したときの処理を振り返ってみましょう。接続がメソッド「enterGame」でルームメッセージを受信し、送信者が自分でない場合は、相手の情報を送信します。 opponentInfoに格納され、waitIntercalトリガーの再生を開始します。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
5.waitIntervalトリガーとlimitIntervalトリガー
上記のステップAとBの後、両方のプレーヤーがwaitIntervalトリガーを実行しました。これは、各質問が質問に答え始める前の準備のカウントダウンを実装し、最後に質問を終了しますリストの最初の質問を「currentQuestion」に割り当て、次に自分自身をリセットして、limitIntervalトリガーを再生します。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
limitIntervalトリガーは、応答時間のカウントダウンを制御します。ここには2つのケースがあります。1つは、プレイヤーが質問に答えたことです。ロジックのこの部分は、オプションのクリックイベントに書き込まれ、カウントダウンが終了するまで2人のプレイヤーがいます。回答がない場合は、setVariateアクショングループを実行します。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
6. setVariateアクショングループ
setVariateアクショングループは、最初にquestionIndexの値を決定します。questionListの行数から1を引いた数と等しくない場合、現在の質問が最後の質問ではないことを意味します。 waitIntervalトリガーとlimitIntervalトリガーを設定します。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
それらが等しい場合は、すべての質問に答えていることを意味し、自分と対戦相手のスコアを比較して、一致の結果を表示します。勝者の場合は、postUserサービスを呼び出して、データベース内のマッチポイントを更新します。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
7.プレーヤー選択オプション次
に、カウントダウンが終了する前にプレーヤーが質問に答える状況について説明します。プレーヤーがオプション行またはオプション行の選択ボタンをクリックすると、オプションのシリアル番号がanswerIndexに割り当てられます。未回答のゲームは終了せず(つまり、initialAnswerはまだ初期値-1であり、finalResultはまだ初期値0ではありません)、プレーヤーはメソッドメソッドを含む個人メッセージを対戦相手に送信し、メッセージの内容は回答の結果です。次に、checkAnswerおよびsetVariateアクショングループを実行します。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
同様に、プレーヤーがメソッドを選択したパーソナルメッセージを受信すると、メッセージ内の相手の回答の結果がSponsorAnserに割り当てられ、2つのアクショングループcheckAnswerおよびsetVariateも実行されます。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
8. checkAnswerアクショングループ
checkAnswerアクショングループは、現在の質問の回答結果を判断するために使用されます。対戦相手が0以上(つまり、初期値-1ではない)場合は、現在の質問が対戦相手の回答であり、対戦相手の回答が正しいかどうかを判断します。対戦相手の回答は正解で、対戦相手のスコアは1増加します。chooseResult値「対戦相手のスコア」は対戦相手のスコアを示します。間違っている場合、スコアは1増加します。chooseResult値「私たちのスコア」は対戦相手のスコアを示します。 1)これは、現在の質問があなた自身の答えであることを意味し、判断と対応する操作は同じように行われます。
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要
最後に、プロセス全体は次のように要約されます
ivx接続コンポーネントを使用して、リアルタイムのバトル回答の質問を達成するための経験の概要

おすすめ

転載: blog.51cto.com/14556317/2487632