autogames's People
autogames's Issues
トラビスの設定に関する質問
@708yamaguchi
学生ばんが認証さたのでトラビス設定したいのだが、"Branch protection rule" のところでBranch name patternを設定する部分があるんだけど, そこはなににした?"origin/master"とか?
[議論用] autogamesのプログラム構成について
色々機能を実装していたのですが,プログラム構造や関数名がややこしくて僕には管理しにくくなってきました.
そこで,プログラムが大きくなりすぎる前に新しく書き直したほうがいいんじゃないか,と考えました.
自分なりに綺麗な実装方法を考えてみて,以下にポンチ図を示したのですが,どうでしょうか?
元のpptx:
autogames.pptx
(2019/08/28更新)
3人目のclientが出たら、client側のプログラムをexitしたい
3人目のclientが出たら、server側からclient側に「もう満員です」的なメッセージを送り、client側のプログラムをexitしたい
山口の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
pycache 全部ignore するpull requestのtravisが通らないと、origin/masterにcommitを追加できないようにする。(SettingsのBranches->Branch protection rulesからできるはずです)勝利判定の追加リポジトリ名をtictoctoeからいい感じに変える(わかりやすくしてください)- いい感じのテストプログラムを書いて、
.travis.yml
とtest/
以下に追加していく - 3人目のclientが出たら、server側からclient側に「もう満員です」的なメッセージを送り、client側のプログラムをexitしたい
- サーバ側に「game init」を送ったらgameを初期化出来るようにしたい
- エラー処理用のクラスとそのテストを作る
- autogamesのカッコいい一言説明を作り、githubリポジトリ、README.md、setup.pyに書く。
メモ
game が終了してもserverをきらないほうがいいかも. 全体テストpython. ->6, 7
山口のTODO
.travis.yml
を作って、自動的にPull Requestをテストできるようにする必要がある。
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.