Code Monkey home page Code Monkey logo

autogames's People

Contributors

708yamaguchi avatar hiroishida avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

autogames's Issues

トラビスの設定に関する質問

@708yamaguchi
学生ばんが認証さたのでトラビス設定したいのだが、"Branch protection rule" のところでBranch name patternを設定する部分があるんだけど, そこはなににした?"origin/master"とか?

[議論用] autogamesのプログラム構成について

色々機能を実装していたのですが,プログラム構造や関数名がややこしくて僕には管理しにくくなってきました.
そこで,プログラムが大きくなりすぎる前に新しく書き直したほうがいいんじゃないか,と考えました.

自分なりに綺麗な実装方法を考えてみて,以下にポンチ図を示したのですが,どうでしょうか?
autogames

元のpptx:
autogames.pptx

(2019/08/28更新)

山口のTODO

  • 相手の番が終わったことを分かるようにする(つまり相手が終わるまで待つ)
  • server.pyをクラスにする
  • 盤面可視化関数show_field()を明示的に作り、可視化を必須にする。
  • 毎回ipythonを立てるのではなく、自動で対戦プログラムが起動するようにする。その際、agentクラスを作り、client.pyをロードするようにする。
  • autogamesのプログラム構成をポンチ絵にする
  • tictactoeクラスの親クラスとしてgameクラス(two_player_gameクラス)をつくり、抽象化する (1手進めるput関数、盤面状態を知るget関数、ゲームの終了判定関数、プレイヤの手順を確認する関数、、、など)
  • gameクラスに次に打てる手の一覧を返す関数をつくり、禁止手を判断する
  • ソケット通信を、全てjsonの形で行うようにする
  • autogamesのプログラム構成ポンチ絵を更新する
  • serverやclient用のプログラムをbashのコマンドとして呼べるようにする。
  • client.pyやtictactoe_game.pyと、ユーザが書き換えるゲームアルゴリズムプログラムの分離を行い、ソケット通信でデータをやり取りする。
  • python以外の言語で、tictactoeのゲームアルゴリズムを実装する。
  • C言語でも、jsonの配列を使うことで、ゲームの盤面や次の一手を通信できるようにする。
  • client.pyのself.join_game()関数とserver.pyのself.start_game_server()関数を消して、それぞれのプログラム内のmain関数に統合する。
  • agent.pyの中で、tictactoe_game.pyなどのゲームクラスをロードしないように(非依存に)する。なぜなら、agent.cppなど他のゲームアルゴリズム用プログラムではtictactoe.pyなどのゲームクラスをロードできないから。
  • 汎用的なclient.pyを作るのではなく、各言語に応じたclientプログラム(client.pyやclient.cやclient.java)を作り、agent側でそれらをincludeすることで、serverと通信する。
  • 盤面の表示を各プレイヤから見た盤面に変換する。これにより、盤面のどちら側に座るかでプログラムを書き分ける必要がないようにする。(本当に必要か?)
  • tictactoe以外のゲームクラスを実装し、ゲームクラスを抽象化して洗練する。(共通で必要な関数などを洗い出す。)
  • C言語用のMakefileを書き、テストなどでも使い回す。(可読性の向上)
  • agentプログラムが、自分のplayer_numberを知れるようにする。
  • 人間が対戦できるインタラクティブモードを実装する。(自分のアルゴリズムと対戦したい、デバッグ効率の向上)
  • 盤面を表示する際、列や行の番号を書く
  • 以上の内容をまとめてREADMEの更新。build statusも貼っておく。
  • 一人用ボードゲーム(2048とか迷路とか)を実装する。(こちらのほうがユーザとしては使いやすい気もする)

石田さんのTODO

  1. pycache 全部ignore する
  2. pull requestのtravisが通らないと、origin/masterにcommitを追加できないようにする。(SettingsのBranches->Branch protection rulesからできるはずです)
  3. 勝利判定の追加
  4. リポジトリ名をtictoctoeからいい感じに変える(わかりやすくしてください)
  5. いい感じのテストプログラムを書いて、.travis.ymltest/以下に追加していく
  6. 3人目のclientが出たら、server側からclient側に「もう満員です」的なメッセージを送り、client側のプログラムをexitしたい
  7. サーバ側に「game init」を送ったらgameを初期化出来るようにしたい
  8. エラー処理用のクラスとそのテストを作る
  9. autogamesのカッコいい一言説明を作り、githubリポジトリ、README.md、setup.pyに書く。

メモ

game が終了してもserverをきらないほうがいいかも. 全体テストpython. ->6, 7

山口のTODO

  • .travis.ymlを作って、自動的にPull Requestをテストできるようにする必要がある。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.