Sam Weese
I graduate college on Saturday. For the past 3 and a half years, I have made friends, worked with, and enjoyed "hanging" with my peers at college. All of that may go away from me this coming Sunday.
Dr. Aurisano and I discussed this reality earlier in the semester. The time after college can be isolating, as the natural bonds and stages of life that my friends and I are at are about to rapidly diverge. One of the ways which this can be helped, however, is to have some form of recurring game.
I personally play Poker, and I have friends who do as well. We used to play poker every Saturday night, with the buy in being pushups. I want to still continue that, however most online poker sites require a financial buy in. So to fight isolation and continue relationships, I am implementing a card library, which I will eventually write a free version of poker in.
I started this project by looking at a number of other sites, including PokerStars, Cards and Castles (which I helped develop previously) and Cards and Castles 2, and Card Games.io. I analyzed what I liked and didn't like with each of them.
The site displays a gambling table. Each player is represented by a pair of cards, and a stack icon with a number indicating chip count. The hand itself is a fixed size, and it displays two cards. Both are in essensse a png. To make actions, such as bet, bid, etc. there are buttons underneath the cards.
I personally don't like the table asthetic. I want it instead to be a clean feeling, where it doesn't feel like a casino. I do like seeing other players hands and amount. I don't think that the poker table encompasses all the interactions. You can't reorder your cards, and I dislike that. I think the buttons make things interesting, however.
There is no central play area except to display cards.
This displays cards fanning out in the hand. I dislike that you can't see the whole card without hovering on it, and it would be a cool option to have it spread. Playing cards is done via drag and drop. I do like that, but I think that that would take a lot of work. I'll add that in the future.
This is a site with tons of card games. I like that the cards show nicely and stack on each other to have a compressed area, but the site only supports traditional card games. I think I want my cards to do more than just this!
I implemented this all in a single folder, src
. I have the website serve only the display area, as an example of an implementation. Each file is structured by the following:
imports
- this is all files which we might need from other areas
prop object
- this is any form of data structure we might have created in this file. Examples include the card, hand, deck, and play area.
prop object interface return
- this is a function which in essense acts as a constructor for the prop object UI. This is what is actually drawn.
exports
- this is any data we might want to use elsewhere
- I used chatgpt to start this project! Here is the first pass.
Obviously the work is never finished. Specifically I want to add the following features:
- Peer to Peer networking for multiplayer play
- Non-react implementation (for speed)