Skip to content

Commit

Permalink
Merge branch 'master' of github.com:Agony5757/mahjong
Browse files Browse the repository at this point in the history
  • Loading branch information
Agony5757 committed Mar 17, 2022
2 parents 45e706a + 1f89e06 commit 057c26a
Show file tree
Hide file tree
Showing 5 changed files with 113 additions and 19 deletions.
42 changes: 42 additions & 0 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: CMake

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
CXX_COMPILER: clang++

jobs:
build:
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
# You can convert this to a matrix build if you need cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Setup Environment
# Custom: Set up enviroments for clang
run: sudo apt install clang -y

- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_CXX_COMPILER=${{env.CXX_COMPILER}}

- name: Build
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}

# - name: Test
# working-directory: ${{github.workspace}}/build
# # Execute tests defined by the CMake configuration.
# # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
# run: ctest -C ${{env.BUILD_TYPE}}

65 changes: 65 additions & 0 deletions .github/workflows/msvc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
#
# Find more information at:
# https://github.com/microsoft/msvc-code-analysis-action

name: Microsoft C++ Code Analysis

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
schedule:
- cron: '28 17 * * 3'

env:
# Path to the CMake build directory.
build: '${{ github.workspace }}/build'

permissions:
contents: read

jobs:
analyze:
permissions:
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
name: Analyze
runs-on: windows-latest

steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Configure CMake
run: cmake -B ${{ env.build }}

# Build is not required unless generated source files are used
# - name: Build CMake
# run: cmake --build ${{ env.build }}

- name: Initialize MSVC Code Analysis
uses: microsoft/msvc-code-analysis-action@04825f6d9e00f87422d6bf04e1a38b1f3ed60d99
# Provide a unique ID to access the sarif output path
id: run-analysis
with:
cmakeBuildDirectory: ${{ env.build }}
# Ruleset file that will determine what checks will be run
ruleset: NativeRecommendedRules.ruleset

# Upload SARIF file to GitHub Code Scanning Alerts
- name: Upload SARIF to GitHub
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: ${{ steps.run-analysis.outputs.sarif }}

# Upload SARIF file as an Artifact to download and view
# - name: Upload SARIF as an Artifact
# uses: actions/upload-artifact@v3
# with:
# name: sarif-file
# path: ${{ steps.run-analysis.outputs.sarif }}
11 changes: 0 additions & 11 deletions .idea/mahjong.iml

This file was deleted.

10 changes: 4 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@

# Japanese Riichi Mahjong

[![CMake](https://github.com/Agony5757/mahjong/actions/workflows/cmake.yml/badge.svg?branch=master)](https://github.com/Agony5757/mahjong/actions/workflows/cmake.yml)

Simulator of Japanese Riichi Mahjong (https://en.wikipedia.org/wiki/Japanese_Mahjong) written in C++.

We provide python APIs for decision AI research (the users do not need to know how Mahjong works), please see https://github.com/Agony5757/mahjong/tree/master/pymahjong#readme for more details.

## install
```
pip install pymahjong
```
# See [here](https://github.com/Agony5757/mahjong/tree/master/pymahjong) for the Python APIs for e.g., decision AI research.


## Citation
```
Expand All @@ -22,4 +21,3 @@ url={https://openreview.net/forum?id=pjqqxepwoMy}
}
```

# APIs of the C++ programs
4 changes: 2 additions & 2 deletions pymahjong/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ To know what actions are allowed, see the example code below.
import pymahjong
import numpy as np
env = pymahjong.SingleAgentMahjongEnv(opponent_agent="vlog-bc") # the 3 opponents play randomly
env = pymahjong.SingleAgentMahjongEnv(opponent_agent="random") # the 3 opponents play randomly
obs = env.reset() # get the obsevation at the first step of a game
Expand All @@ -66,7 +66,7 @@ while True:
Note: In a Mahjong game, it is possible the game is over before a certain player start to act (if others satisfy the game-over condition). In this case, the single-agent version envrionment will simply reset the game. Therefore, the agent always has at least 1 decision step in a game (episode).

### pretrained opponents agent
We provide two pretrained models for the 3 opponents (see the paper https://openreview.net/forum?id=pjqqxepwoMy) in the single-agent version environment.
We provide two pretrained models as the opponents (see the paper https://openreview.net/forum?id=pjqqxepwoMy) in the single-agent version environment.

To use the pretrained models, you need to have [PyTorch](https://pytorch.org/) installed. You can download the models from [this link](https://1drv.ms/u/s!AuxZyB8UeEtsgpNScPpUjF1c09gaZQ?e=j4lS05) and put the .model files at the same directory as your python script. The pretrained model should automatically enable CUDA if your PyTorch supports CUDA.

Expand Down

0 comments on commit 057c26a

Please sign in to comment.