Giter Site home page Giter Site logo

stuartthomas25 / jparty Goto Github PK

View Code? Open in Web Editor NEW
20.0 2.0 8.0 264.46 MB

A party game which simulates the famous game show "Jeopardy!" using the J-Archive (http://j-archive.com).

Home Page: https://www.stuartthomas.us/jparty/

License: GNU General Public License v3.0

Python 87.23% Shell 1.07% HTML 3.04% JavaScript 5.94% CSS 2.71%
game python pyqt6 jeopardy jeopardy-game party-game websockets

jparty's Introduction

JParty!

The Jeopardy! Party Game

Homepage: https://www.stuartthomas.us/jparty/

Ever wanted to play the game show Jeopardy? This Python-based application aims to provide a full Jeopardy! simulator complete with real questions from actual games. This game is perfect for parties and supports 3-8 players plus a host. Typically, Jeopardy! has three contestants which is recommended for the best experience; JParty supports up to 8 players for larger groups (warning: may cause many complaints about buzzer races). For ideal usage, plug a laptop into a TV, setting the laptop as the main monitor. Note that connecting wirelessly using AirPlay works but may cause latency in the buzzer. Instruct contestants to join the same Wifi network as the computer and scan the QR code on the screen. The person with the laptop is the host and runs the game by reading the questions and running the buzzers.

Download

See Releases page.

Screenshots:

Welcome screen:

The main game board:

The host sees the answer on the laptop screen and can adjudicate with the arrow keys:

Features:

Requirements:

For running the app (binary)

  • macOS, Windows or Linux
  • Two monitors
  • A device with web access for each player

For compiling from source code

  • Python [>=3.9]
  • PyQt6
  • requests
  • simpleaudio
  • tornado
  • BeautifulSoup4
  • qrcode
  • pyinstaller [>=5.0]

To debug, run

conda env create -f environment.yml
cd jparty
python ../run.py

To build from source, run

pyinstaller -y JParty.spec

FAQ

How does it work? (technical details)

JParty minimally scrapes the J-Archive (https://j-archive.com) to download a previously-played game and then simulates that on the screen. The game then uses PyQt6 to produce a GUI that simulates the motions of a full Jeopardy! game. A tornado web server uses WebSockets to connect to the contestants' smartphones. If that's all gibberish to you, don't worry! You can still play without any technical knowledge.

Can I create my own custom game?

Yes! JParty supports playing your own custom game via this simple Google Sheets template. First, make a copy of the template and change the sharing permissions to "Anyone With the Link Can View". Then, copy the Google Sheet file ID and paste it into the "Game ID" box. There are more detailed instructions on the template page. Limitations: there is no way to add pictures (yet!) and you are limited to the traditional 6 categories x 5 dollar values board.

If you don't want to write your own questions but want to play a topical Jeopardy! game, use this handy Google Chrome extension to scrape Jeopardy Labs questions (source code). There are millions of games available on https://jeopardylabs.com that are free to play on a variety of topics. While Jeopardy Labs is a great repository for many topical games & worked great 20 years ago, it lacks in features such as daily doubles, final jeopardy, music/sound effects, and buzzers.

To use the extension:

  1. Make a copy of the Jparty Google Sheets custom game template
  2. Find a game on https://jeopardylabs.com.
  3. Click the extension icon.
  4. The questions will download as a csv (spreadsheet) in the style of the template.
  5. Copy the questions into your Google Sheet template
  6. Paste the Google Sheet file ID into the "Game ID" box in JParty.

The QR code doesn't work!

First, make sure you are on the same wireless network as the computer. If this still doesn't work, it may be an issue with allowing local devices on the network. In this case, you can try another network or try tethering both the phones and the computer to another phone.

jparty's People

Contributors

benf2004 avatar dependabot[bot] avatar stuartthomas25 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

jparty's Issues

Typing Name Issue

Using the keyboard to type out your name (rather than using the signature pad) results in really small (unreadable) text.

Contestant font too small

If a player types in their name instead of drawing it, the font that's displayed on their podium is super tiny.

Snag_46f194de

Multimedia Clues [enhancement]

Add support for picture clues! Many image clues are already in the J-Archive. We would just need to grab those and display them. Also could add support for audio clues.

For images not in the J-Archive, you could use the Pexels API to grab a relevant image by searching pexels for the answer term or searching the whole clue.

Settings Panel

I'd love to introduce a settings panel at the home screen to adjust some features, such as monetary amounts, hints, etc.

[Enhancement] Scrape Wayback Machine instead of J-Archive directly

I was thinking of a way to avoid scraping J-Archive, and I thought why not just scrape the Wayback Machine? Yes, using an archive to scrape another archive. I think all (or nearly all) of the games are already on there (I even hand-checked the most recent 10 episodes) so it wouldn't be much of a problem. That way the app is not breaking J-Archive terms & we can actually share it with more people. The nice thing about J-Archive the page layout/setup hasn't changed in years, so scraping different formats would not be an issue. We could build in a fallback that would scrape the J-Archive, but that wouldn't be necessary if we made sure all the recent games get scraped.

The one downside is that it would be a few seconds slower to load (exactly how long, we'll have to see), but I personally think the tradeoff is worth it.

It seems pretty easy to implement. I may take a look if I have time. Here's a useful tutorial:
https://medium.com/analytics-vidhya/the-wayback-machine-scraper-63238f6abb66

Allow "incomplete" games to be played

Some J-Archive games don't contain a full board of questions because time ran out during the show. It would be nice if JParty would allow you to play those games anyway, and just leave empty spaces where the missing questions are.

By the way, this app is fantastic! It's really easy to play and a lot of fun!

[enhancement] Introduce the categories

Add the slideshow they do in the show to introduce the categories. I also think the flickering board animation would be cool, but I don't think it's necessary. Maybe include it as a toggle to turn on-off in a settings panel.

RFE: Server/Client version

Hi guys

Thanks for a GREAT job on JParty..

For me (and probably others), one thing that would really improve this project, is the ability to split into a server and a client/admin component.

I think the following steps are needed:

  • Split the code into backend and frontend components
  • Depending on the current design, some kind of API may be needed?
  • Authentication from the frontend (admin) towards the backend

This would provide the following:

  • Ability to run without a shared local network, therefore also using this through google meet, teams or similar
  • In time, being able to use two separate devices for the game screen and the admin screen.

Is this something that you have thought about?

I would love to join on getting this done..

Wrong game getting loaded

Sometimes the wrong game gets loaded when typing in the game ID.
Games are retrieved form J-Archive with each keystroke, and sometimes it's possible that the last keystroke is missed. The result is that the correct ID shows in the input field, but the description below it is for a different game.

Typing slowly or pasting from the clipboard gets around it, but it happens easily enough that it might be worth putting a short delay before fetching the game.

Game is broken

The game has not been functioning at all as of late. I thought it had to do with how J-Archive was scraped, but custom games don't work either.

I'll try to take a look at fixing it this weekend.

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.