見出し画像

Djangoでブラックジャックを目指す 21 得点情報の追加

今回やること
全プレイヤーに得点情報の追加


前回までやったこと

Djangoのプロジェクトを作る
start appでacounts ,game の2つのappのひな型を作成
accounts (app)にログイン用のCustomUserのモデルを作成
settings.pyを編集ログインユーザーを作成したCustomUserに変更
game に(app)にモデルをセットする
game (app)にforms.py(という空のファイル)を作成
formをセットする
allatuthを使ってログイン周りのアカウント部分を作成
ゲーム画面までのルーティング
表示用のベーステンプレートの複製
テンプレートとViewを連携させる
エントランスページ最低限の機能を考える
部屋作成機能 の実装
entrance → gameroom へのルーティング
カードの一覧作成処理
カードの一覧のIDを取得
カードリストをシャッフル→DB格納
初期デッキ生成処理の組み込み
ゲームボタンの生成
ゲーム準備完了ボタンの処理
全員参加意思が行われた時のターン進行処理
エントランス表示処理の変更
元の部屋に帰るメゾット追加
元の部屋の戻る処理の確認
2ターン目の流れの確認
カードをドローする処理の動作確認
フェイズを進行させる
手札の表示
点数処理
役の確認チェック
プレイヤーの行動処理
ルームに内のプレイヤー全員の手札を表示

勝利者判定の流れ

前回のプレイヤー全員の手札のリストを引数で取得
辞書リストから単体を取り出し手札の情報を取得
手札から役または点数を取得
点数を辞書に追加格納
別のメゾットでbust=0,BlackJack=25として点数の大きいものを勝利者として格納する(次回予定)

完成コード

<appFolder>/ views.py 追加部分

def all_player_pointset(all_player_hands):
   all_player_dict=[]
   for player_dict in all_player_hands:
       point = is_bust_or_bj(player_dict.get('hand'))
       player_dict.update({'point':point})#辞書にポイント情報を(役)をわたす
       all_player_dict.append(player_dict);

   return all_player_dict

解説(流れとの照らし合わせ)

前回のプレイヤー全員の手札のリストを引数で取得
all_player_pointset(all_player_hands):

辞書リストから単体を取り出し手札の情報を取得
for player_dict in all_player_hands:
player_dict.get('hand')

2行目は次の項目の引数に使用されている
前回手札はhandのkeyで辞書に格納しているためget(hand)


手札から役または点数を取得
point = is_bust_or_bj(player_dict.get('hand'))

プレイヤーの手札から点数もしくは役を計算させるためのメゾット
中身については過去の記事を参照

点数を辞書に追加格納
player_dict.update({'point':point})
updateで辞書に追加する

次回予定

勝利者判定
思ったより最大値判定でエラーが出てしまって
次回へ
とりあえず今週までに完成させたい




この記事が気に入ったらサポートをしてみませんか?