🐈 A creative final project for SE101 (cohort 2024) - the first-year concepts course for Software Engineering @ the University of Waterloo. jiko-ai is a virtual pet, styled after Tamagotchi™, in which the user is encouraged to not only look after their creatures, but after themselves too. Through activities like medition and affirmations, both the pet and the user can grow together!
The audio processing of this project relies heavily on IBM's Speech-To-Text Service, and a majority of the game code was written using the pygame library (see Dependencies/Imports). For helping format the request to the API and keeping track of what requests we wanted to make, the Postman tool was used.
Other sites and resources that were integral to the building of the project include:
- pygame - for building multimedia applications like games
- pillow - an imaging library
- requests - for being able to make API calls to IBM Watson
- json - part of the standard Python library for dealing with this format
- pyaudio - for handling audio I/O
- wave - part of the standard Python library to interface with the WAV format
Some links we accessed for the project include:
- for helping set up the wifi on the Raspberry Pi from Adafruit: Setting up Wifi by Hand; a .conf file that we used that we made from this is made available at @simcard0000's gists
- this Stack Overflow question: How to make buttons in python pygame was accessed to help us make our code for creating buttons
- the code for recording and storing the .wav file produced from the audio input is from this Real Python Tutorial for Playing and Recording Sound in Python
- the Text to Speech - IBM Cloud API Docs were accessed to learn more about the functions of the API
- python file i/o knowledge was pieced together from tutorials such as this: File Handling in Python
- for learning how to open a program automatically on startup: Stack Overflow: Open chromium full screen on startup
- the gifImage class used to split a gif into multiple images for reanimation is from this Stack Overflow question as well: How to Extract Frame From GIF, and Reconstruct the Details of each Frame?
- the script used to shutdown the Pi is based off of this: shutdown.py
- for finding what the current OS is on Python: Stack Overflow: How can I find the current OS in Python?
- for learning more about what pins to use on the Raspberry Pi for GPIO: the GPIO Raspberry Pi Documentation and a Raspberry Pi GPIO Pinout schematic
- debugging the API call with a specific error code involved looking at this post
The theme music for the game is "An opener" by Bitbasic; accessed through Free Music Archive. The art used in the game are as follows; note that all images used do not imply endorsement by the artists and we used the images as placeholders; if you don't want your art here let us know!
Other assets used in the game are as follows:
- For the box in which the Raspberry Pi is housed in, the clip art of the monster on the back was accessed from this site
- On the start screen, the pink cityscape is from this site
- The new game and load game button graphics are from here
- The forest and water background for the Q&A section of the game is from here
- The sprites for the different creatures are from this site
- The rainy city scene background on the main screen is from here
- The cherry blossom city scene background on the food screen is from here
- The lake city scene background on the water screen is from this site
- The city-at-night scene background on the sleep screen is from this site
- The pink/brown forest scene background on the play screen is from here
- The clip art used for the cleaning your pet activity are from this site
Font used is VT323 from Google Fonts.
~
Authors: Simran Thind (@simcard0000), Cole MacPhail (@colemacphail), Zhengmao Ouyang (@ZhengmaoOuyang), Wenyi Hu (@wenyihu3)