Nothing fancy, just Pidro.
Pidro classic is an open-source project by a Finnish master's student in Computer Engineering. The project is based around the well known Ostrobothnian card game Pidro. There is already a Pidro game on the market for mobile phones called 'Pidro Online'. This project has no association to that game. The aim of this project is to bring Pidro back to the computer. Year's ago there was a predecessor to Pidro Online which was PC only, before the times of smart phones. I want to create a Pidro version which does not rely on using a mobile phone, nor would it rely on third party servers. I want the player's to be able to create their own 'tables' in the form of self hosted small private servers, much like a lot of old-school PC gaming. This eliminates the middleman and gives the control back to the players.
As I am a full-time student, I do not have a lot of spare time and energy to work on this project. Because of this, the development is progressing slowly. I will be keeping the latest commits in the dev branch until I have something worth merging to master. When and if this game reaches a playable state in the future, it will be completely free and open-source (which it is now too, you are welcome to have a look and laugh at the code in the development branch).
Currently, not a lot has been finished. I have made simple test server and clients with no association to the game, just to get an idea of what will be needed later on. I have created a Deck class that makes up a deck of cards with all the suits and their values. Cards can be drawn from the top of this deck, it can be shuffled and regenerated. The aim here is to replicate a real-life deck of cards as well as possible. The Deck holds a Stack of Cards. Card is another class I have created which holds the Suit (enum) and CardValue (enum) of the card it represents. Cards can easily be compared to each other since the Card class implements the Comparable interface. The cards can also be sorted by value and then by suit, using the implemented cardSortComparator Apart from the deck we also have a Game class. The Game class aims to be the center of the server-to-be side. It keeps track of the current deck, the Teams and its Players. It also keeps track of whose turn it is and in what phase of the game we currently are. So far, I have built functionality (purely methods, no interactive side yet) for:
- Joining teams
- Finding the intial dealer based on traditional drawing of cards followed by reshuffling of the deck
- Allowing the player to the right of the dealer to split the deck after the "dealer" has shuffled
- Dealing the inital 9 cards per player
- Bidding, in order with the dealer last
- Finding the winning bid and player
- Allowing the winner of the bidding to choose suit