Giter VIP home page Giter VIP logo

submarine-destroyer's Introduction

submarine-destroyer

Screenshot from 2021-01-19 00-21-34

実行方法

$ cd src/
$ python3 main.py

コマンドラインオプション

  • -q
    このオプションが付与されたときに限り、自軍の配置の表示を抑制します。
    このプログラムと対戦するためのオプションです。
    (けど他の [info] ログメッセージで自軍の位置情報が表示されるのであまり意味ないかも...)

使用例:

$ python3 main.py -q

  • -n <integer>
    敵軍の潜水艦の初期個数を指定します。デバッグ用です。
    このオプションが指定されない場合は、敵軍の潜水艦の初期個数はデフォルト値である 4 に設定します。

使用例:

$ python3 main.py -n 1
# 敵軍の潜水艦の初期個数を 1 に設定します。

ファイル構成

/
├── README.md
│
└── src/
    │
    ├── bluedragon/
    │   │
    │   ├── __init__.py  ... 空ファイル。python モジュールのために必要。
    │   │
    │   ├── io.py        ... 対戦データの出力や、敵軍からの情報の入力など。
    │   │
    │   ├── logic.py     ... 対戦データの処理・自軍の操作の決定。
    │   │
    │   ├── rule.py      ... 対戦における不変の情報・ルール
    │   │
    │   └── model.py     ... 対戦データの構造や攻撃・移動情報の定義。
    │
    └── main.py  ... プログラムのエントリポイント。ゲームループ。

キョエエエエエ

キョエエエエエエエエ

submarine-destroyer's People

Contributors

arumakan1727 avatar

Watchers

 avatar

submarine-destroyer's Issues

プログラムの骨格の実装

Overview

操作を考える部分はハリボテで良いのでとりあえず入力・出力・ゲーム終了判定のループを実装する

  • 初手・後手の入力
  • 自軍の潜水艦配置のダンプ出力
  • 自軍の操作の出力
  • 敵軍の操作の入力
  • 勝敗の判定

敵が一体のときに敵が攻撃したら分配するマスを絞る

例えば、 敵が一体の状態で
まず敵が以下の X の位置に攻撃したとする。

.....
.....
.....
..X..
.....

次に、敵が以下の X の位置に攻撃したとする。

.....
.....
..X..
.....
.....

この場合、現状の実装だと、敵の存在確率を分配する位置は以下の p の位置 (7マス)

.....
.ppp.
.p.p.
.p.p.
.....

だが、
敵が一体 && 以前ににマス D3 に攻撃がある && 以前の攻撃から移動してない
ので確率を分配する位置は以下の p の位置だけでよい。

.....
.....
.p.p.
.p.p.
.....

自軍の操作決定ロジックの実装

  • 敵軍の攻撃に応じて適宜自軍のHPを減らす
  • 敵軍の操作の反映
  • 敵軍の攻撃に対する反応の表示
  • 自軍の攻撃に対する敵軍のレスポンスの反映
  • 自軍が攻撃可能なマスのリストアップ
  • 自軍の (指定した) 潜水艦が移動可能なマスのリストアップ
  • potential[][] ・操作の歴史 をもとにした自軍の操作の決定

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.