Giter VIP home page Giter VIP logo

kflan42 / card-table Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 3.01 MB

An online multiplayer card table game simulator powered by React, Flask, and Google Cloud.

License: GNU Affero General Public License v3.0

HTML 0.74% TypeScript 62.38% CSS 2.20% JavaScript 0.16% Shell 0.87% Python 33.65%
react flask google-app-engine google-cloud-storage google-cloud-function drag-and-drop game multiplayer websockets

card-table's Introduction

card-table

My first serious side project! A React front end and Flask back end for a multiplayer card game.

If you'd like to play with the code, I recommend first having a look at the design diagrams.

If you're here for gaming, read on.

card-table-busy-game

Features

Everything you need for a night of a table top card game with friends, assuming you already have voice or text chat solved.

One can:

  • create rooms with privacy by obscurity.
  • create tables within the rooms, play 1 game per table.
  • load your cards based on an imported deck list.
  • chose your name and your sleeve color.
  • get an idea of who is on what table and join the table.
  • see your cards in various gameplay zones.
  • place simple counters or import other cards as needed for counters.
  • know when other players are moving cards around or peeking.
  • undo any action (if your friends let you).

Instructions for Deployment

I run it in the Google App Engine's Free Tier for my friends - sorry I can't fit more players on the tiny backend! You'll need to host it yourself if you want to play.

To stay on top of new card releases, I setup a Cloud Scheduler triggered Cloud Function to reload the card data.

See my-server/README.md for deployment instructions.

Instructions for Play

I recommend getting a tutorial from someone who knows it. Within minutes you'll be talking about the game instead of the interface.

You can read these in the game interface by hovering over the ❔, but here they are for an idea of what's possible.

Drag and drop cards for most things. Click on a card to tap/untap it.

Keyboard actions:

key	action
a	to draw a line from your 1st click on a card/player to your 2nd click on a card/player
A	clear your lines
n	pass turn to next player
	----
D	draw a card
M	mulligan dialog
c	create a counter on a card
C	create a token card, can choose to copy if cursor is over a card
B	put card on bottom of Library
G	put card in Graveyard
E	put card in Exile
F	turn a card facedown (or up)
R	rotate a card 180 degrees (e.g. a Flip card)
T	transform or turn over a two-side card
U	untap all your tapped cards
	----
^	vote to reset the game, counters and tokens will vanish and cards not in sideboard will go to library
v	view a large popup of the card under the cursor, press again to close
V	view a large popup of the other side of the card under the cursor
H	hide a player (or show a hidden one) via a dialog
O	open the options dialog to configure stuff

Click on the table to focus input there then press the key.

Click on the 🎲 to simulate die rolls or coin flips.

Click on the ➕ to add a Player Counter such as Poison or Commander Damage.


Portions of Card-Table are unofficial Fan Content permitted under the Fan Content Policy. Not approved/endorsed by Wizards. Portions of the materials used are property of Wizards of the Coast. ©Wizards of the Coast LLC.

Scryfall is used as a data source. Not approved/endorsed by Scryfall.

card-table's People

Contributors

dependabot[bot] avatar kflan42 avatar

Stargazers

 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.