So I made a game in PHP that worked fairly well, a simple game fairly similar to tic-tac-toe, I didn’t really want to go much further with PHP improving the game. With that in mind I decided to learn Python; I’m familiar with the basics now. I used simple math, dictionaries and conditional statements to create a mock-up of my game. However it is turn based and I’d prefer the two players not be on the same computer physically taking turns with the computer.
So what I envision my final product to be is a stand-alone app which each user has on their computer, they execute the app and enter a username then are brought to a screen where other users are, who have logged in as described, from there two users could mutually agree to start a round of the game, after completion they will be brought back to the ‘waiting room’
Now for something like this would I need (or be greatly helped by) a framework? If so which one(s)?
Would this need a database on a server, or could all data be stored on the user’s computers?
Would I be dealing with CGI or Sockets or both in creating something like this?
Would making this game into a web-app be easier? (similar to something I would create if I used PHP and ran the game off of a website)
I would appreciate reading material on the subject. A link to an example source-code that solves a problem similar to what I have gets a gold star =)
Thank you all for you time, I greatly appreciate everything.
General Response
Especially if you include a “waiting room” and such things/ want this to be widely usable, this is a rather big project (definitely not a bad thing, but you may want to do some small projects first to get your feet wet with python programming for the web). However, it is relatively easy to have a simple terminal-based, turn-based game that transmits data over the network between its players; I’d focus on making the simple version first to get a feel for what is involved. That being said, here are some answers to the specific questions you asked; unfortunately they can’t be too detailed, because there is so much to learn about these topics.
Specific Answers
There are frameworks that would help with several different parts of this project, but you have some big design decisions to make before you start looking into frameworks to help with the implementation.
Having a “waiting room” implies that there is some kind of server set up to facilitate making connections between players. Whether a database is necessary depends entirely on the scale of the application. If you want to keep track of users/enable repeat logins, there’s almost certainly a database involved.
Read more about what CGI and sockets are and think about this one.
There seem to be more resources to help making a web app version, but there are a whole new set of challenges and perhaps even more new things to learn about. It depends partly on what you are already comfortable with. Making a web app and making a standalone app that uses the internet are, perhaps surprisingly, very different, but both will involve a lot of new learning.
Conclusion
Well, I hope that was helpful in some way. Best of luck!