Giter VIP home page Giter VIP logo

pycon2019-pongpy's Introduction

JX 通信社 ピンポンゲームチャレンジ - PyCon JP 2019

https://twitter.com/jxpress_corp/status/1172426002833690624?s=20

概要

強いアルゴリズムを組んで賞品をゲットしよう!!

  • PyConJP 2019 の JX 通信社ブースで、アルゴリズムを組んだ コンピュータ同士 のピンポンゲーム大会を実施します!
  • Python で最強のピンポンチームを目指しましょう!
  • 上位者には賞品も用意しています.

ピンポンゲームルール概要

  • 11 点先取、デュースあり
  • 前衛、後衛の 2 体 1 チーム
  • チェンジコートなし
  • ゲームが長引くにつれ双方のチームの間隔が**へ

キャンペーン参加方法

  • PyConJP 2019 JX 通信社ブースにてどなたでもご参加いただけます.
  • 参加者は右上のボタンからこのレポジトリを Fork してください.
  • Fork したレポジトリに下記の手順で Pong チームを実装してください.
  • 実装が終わったら弊社ブースにお越しください.
    • GitHub のアカウント名でエントリーできます.
  • プログラムでなく人力での参戦も可能です。ゲームの腕に自身がある方はぜひ参戦ください.
  • キャンペーンの終了は PyConJP のスポンサーブース終了時間に準じます.

ルール

  • 11 点先取、デュースあり
  • チェンジコートなし
  • ゲームが長引いた場合は双方のバーが前方に寄っていきます

チームの実装方法

環境構築

  • 本ゲームpyxelを使って実装されています

    • macOS/Linux ではpyxel 自体のほかに、sdl2 が必要となります
    • OS ごとのインストール方法は上記公式 Repository を参照してください
  • Python の依存ライブラリインストール用に Pipfile と requirements.txt を用意していますので、お手元の環境に合わせてご利用ください

  • セットアップができていれば、環境変数を以下の通り指定し pongpy challenger:ChallengerTeam enemy:EnemyTeam でゲームが開始されます

    • PYTHONPATH: このリポジトリのルートディレクトリ
    • PLAYER_NAME: 画面に表示するプレーヤー(あなた)の名前
  • mac + brew の環境であれば以下でインストールできます.

brew install python3 sdl2 sdl2_image
pip3 install -U pyxel
  • 他の OS については公式 Repository を参照してください.

2.レポジトリのフォーク

  • GitHub 右上のボタンから個人のレポジトリへフォークしてください.
  • フォーク後、ローカルに clone してきます.
git clone [email protected]:${GitHubのユーザー名}/pycon2019-pongpy.git
cd pycon2019-pongpy

3.キャンペーン用のゲームをインストール

  • Pipfile と requirements.txt を用意していますので、お好きな方法でインストールしてください.
# requirements.txt を使う場合
pip3 install -r requirements.txt
  • インストールが完了したら pongpy コマンドを実行して動くか試してみてください.
  • ウインドウが開きゲームが始まればインストール完了です.

pongpy コマンドの使い方

  • pongpy コマンドでは引数にチームを指定することができます.

  • 第一引数が左側チーム、第二引数が右側チームの指定になります.

    • 第一引数のみ指定した場合、pongpy デフォルトのチームとの対戦になります.
  • PLAYER_NAME=${GitHubのユーザー名} pongpy challenger:ChallengerTeam enemy:EnemyTeam コマンドを実行してみてください.

    • challenger.py と enemy.py で実装されたチームの対戦が始まります.
    • PLAYER_NAME 環境変数は画面に表示されるチーム名です.
    • 実行できない場合 export PYTHONPATH=$(pwd) などをしてパスの確認をしてください.
  • pongpy teams.manual_team:ManualTeam のコマンドを実行すると左チームを手動操作できます.

    • I,K,W,S のキーで操作が可能です

実装方法

  • challenger.py がエントリー用のチームとなります.
    • このファイルを編集して、チームを実装してください.
    • ファイル名、クラス名の ChallengerTeam を変更すると参加できません.
  • enemy.py はデバッグ用のダミーチームです.
    • こちらは自由に変更して構いませんが、ブースでの対戦時には利用されません.
  • 実装が完了したら GitHub のレポジトリに Push してください.

challenger.py

  • 以下の 2 つの関数を実装していただきます.

    • atk_action: 前衛の青色のバーをコントロール
    • def_action: 後衛のオレンジ色のバーをコントロール
  • それぞれの関数は毎フレームごとに呼ばれ、行動を決定します.

  • それぞれの関数は info: GameInfo, state: State を受け取り、int 型の数値を返します.

    • 引数の info から以下の情報が取得できます. − フィールドのサイズ
      • ボールのサイズ
      • バーの幅、1 フレームあたりの最大移動距離
    • 引数の state から現在のゲーム状況が取得できます.
      • 自チームのバーの位置
      • 敵チームのバーの位置
      • ボールの位置
      • 経過フレーム数
      • 自陣の向き
        • キャンペーンでは常に左側チーム固定になります.
    • 返り値が正であれば下へ、負であれば上に向かってバーが動きます.
      • 0 の場合は停止します.
      • 取れる値の範囲は info から取得してください.
  • 実装のサンプルを /teams に載せてます.

  • より詳しい実装方法については以下を参照してください.

関連

pycon2019-pongpy's People

Contributors

ikura1 avatar pistatium avatar tatchnicolas avatar

Watchers

 avatar

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.