26 Jan Text Adventure Game Development In this assignment, students are tasked with designing a text-based adventure game Links to an external site.. This game should utilize the Pytho
Text Adventure Game Development
In this assignment, students are tasked with designing a text-based adventure game Links to an external site.. This game should utilize the Python essentials covered thus far, including, but not limited to:
- Strings and String Manipulation
- User-Defined Functions and Objects (variables)
- User Input and Input Handling
- Conditional and Nested Conditional Statements (if/elif/else)
- Loops (for/while)
- Controlling for Errors (try/except)
The working version of the game should include:
An executable script (a script that runs from beginning to end upon execution) that includes:
- a game that can be successfully completed within a maximum of 3 minutes (i.e., you can win the game in 3 minutes or less)
- for a passing grade, your text adventure game must include a minimum of:
- 3 stages (maximum of 5 stages)
- 5 defined variables
- 1 list
- 1 for loop
- 1 while loop
- 3 nested conditional statements (all must include an else clause)
- 1 win() function (Executed whenever a user wins the game. There must be only one win function)
- 1 fail() function (Executed whenever a user loses the game. There must be only one fail function)
- A description at the beginning of game that:
- Is no more than 300 words
- Introduces the story, game, and its objective
- Identifies any bugs that are not yet worked out
Requirements and Restrictions
- Your game must be based on a book, movie, or TV show. Make sure to provide a source in A.P.A. format.
- The only programming language you may use is Python (no JavaScript, C, or other languages are allowed).
- Global variables may NOT be used (avoid things such as combat engines and/or character attributes such as health points).
- No use of class structures or other object-oriented programming structures (you must stick to user-defined functions).
- You are not allowed to pass things between the stages of your game (stages should not inherit arguments from other stages; no optional or mandatory arguments). For example, a key found in Stage 1 cannot be carried forward to Stage 2. However, you can statically write this into your text if it is required for your story.
Deliverables
- A working version of your game in the following format:
- Jupyter Notebook (.ipynb format)
- One markdown cell containing the description
- One code cell containing the game (points will be deducted if the submission contains more than one code cell)
- Jupyter Notebook (.ipynb format)
- The code submitted as a .txt file (copy/paste the code into a .txt file). Points will be deducted if the submission is not a .txt file.
{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "run_control": { "frozen": true } }, "source": [ "# Game Assignment Starter Coden", "n", "The purpose of this code is to demonstrate how to construct a structure based on a game map. In this starter code, we will assume that we have three rooms on our game map. The assignment requirements also specify that we have a fail function. Therefore, we will be creating a simple skeleton containing the following elements:n", "* room_1n", "* room_2n", "* room_3n", "* failn", "n", "Our map can be visualized as follows:n", "<br><br>n", "n", "~~~n", " room_1 –> room_2 –> room_3 (win)n", " | |n", " `———-`——> failn", "~~~n", "n", "<br>n", "n", "## Part 1: Building up one room at a time (no fail function)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "deletable": false, "editable": false }, "outputs": [], "source": [ "#########################################################n", "# Constructing room_1 and calling it to start the gamen", "#########################################################n", "n", "def room_1():n", " print("You're in room_1!\n")n", " input('<Press any key to continue>\n')n", " n", "n", "room_1() # This starts the game" ] }, { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "run_control": { "frozen": true } }, "source": [ "<hr style="height:.9px;border:none;color:#333;background-color:#333;" />" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "deletable": false, "editable": false }, "outputs": [], "source": [ "#########################################################n", "# Adding room_2 and linking it to room_1n", "#########################################################n", "n", "def room_1():n", " print("You're in room_1!\n")n", " input('<Press any key to continue>\n')n", "n", " room_2() # This moves us into room_2n", "n", "n", "def room_2():n", " print("You're in room_2!\n")n", " input('<Press any key to continue>\n')n", "n", " n", "room_1() # Calling the first function in our map will start our game" ] }, { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "run_control": { "frozen": true } }, "source": [ "<hr style="height:.9px;border:none;color:#333;background-color:#333;" />" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "deletable": false, "editable": false }, "outputs": [], "source": [ "#########################################################n", "# Adding room_3 and linking it to room_2n", "#########################################################n", "n", "def room_1():n", " print("You're in room_1!\n")n", " input('<Press any key to continue>\n')n", " n", " room_2() # This moves us into room_2n", "n", "n", "n", "def room_2():n", " print("You're in room_2!\n")n", " input('<Press any key to continue>\n')n", " n", " room_3() # This moves us into room_3n", "n", "n", "n", "def room_3():n", " print("You're in room_3! You win!\n")n", " input('<Press any key to exit>\n')n", "n", "room_1() # Calling the first function in our map will start our game" ] }, { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "run_control": { "frozen": true } }, "source": [ "<hr style="height:.9px;border:none;color:#333;background-color:#333;" />n", "n", "<br>n", "n", "<h2>Part 2: Adding in a fail function and ways to fail</h2>" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "deletable": false, "editable": false }, "outputs": [], "source": [ "def room_1():n", " print("You're in room_1!\n")n", " input('<Press any key to continue>\n')n", " n", " print("Press 1 to go to room_2.")n", " print("Press 2 to fail.")n", " n", " choice = input("> ")n", " n", " if choice == '1':n", " room_2() # This moves us into room_2n", "n", " elif choice == '2':n", " fail() # This moves us into failn", " n", " else:n", " print("Invalid entry. Please try again.\n")n", " room_1() # Brings us back to the beginning of room_1 to try againn", " n", "n", "n", "def room_2():n", " print("You're in room_2!\n")n", " input('<Press any key to continue>\n')n", " n", " print("Press 1 to go to room_3.")n", " print("Press 2 to fail.")n", " n", " choice = input("> ")n", " n", " if choice == '1':n", " room_3() # This moves us into room_2n", "n", " elif choice == '2':n", " fail() # This moves us into failn", " n", " else:n", " print("Invalid entry. Please try again.\n")n", " input('<Press any key to continue>\n')n", " n", " room_2() # Brings us back to the beginning of room_1 to try againn", "n", "n", "n", "def room_3():n", " print("You're in room_3! You win!\n")n", " input('<Press any key to exit>\n')n", "n", "n", "n", "def fail():n", " print("You've failed, but thanks for playing!")n", " input('<Press any key to exit>\n')n", "n", "n", "room_1() # EVERYTHING goes before this clausen" ] }, { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "run_control": { "frozen": true } }, "source": [ "<hr style="height:.9px;border:none;color:#333;background-color:#333;" />n", "n", "<br>n", "n", "<h2>Part 3: Adding more functionality to the game</h2>n", "Let's update our game as follows:n", "n", "* room_1n", " * nested conditionaln", "* room_2n", "* room_3n", " * while loopn", "* failn", "n", "Our game map can be visualized as follows:n", "<br><br>n", "n", "~~~n", " room_1 <–> room_2 <–> room_3 (win)n", " *nc | | *wn", " `———-`——> failn", "~~~n", "n", "<br>" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "deletable": false, "editable": false, "scrolled": true }, "outputs": [], "source": [ "## Tip ##n", "# make sure to make ample comments throughout your coden", "n", "n", "def room_1():n", " print("You're in room_1!\n")n", " input('<Press any key to continue>\n')n", " n", " print("Press 1 to go to room_2.")n", " print("Press 2 to fail.")n", " n", " choice = input("> ")n", " n", " if choice == '1':n", " print("Then you must answer this question.\n")n", " n", " print( n", """"n", "What's bigger, an elephant or the moon?n", "1) an elephantn", "2) the moonn", " n", """")n", " n", " choice = input("> ")n", " n", " # Start of nested conditionaln", " if choice == '1':n", " print("That's incorrect.")n", " n", " fail()n", " n", " n", " n", " elif choice =='2':n", " print("That's correct! Please enjoy room_2!")n", " input('<Press any key to continue>\n')n", " n", " room_2()n", " n", " # End of nested conditionaln", " n", " n", " elif choice == '2':n", " fail()n", " n", " else:n", " print("Invalid entry. Please try again.\n")n", " input('<Press any key to continue>\n')n", " room_1()n", " n", "n", "n", "def room_2():n", " print("You're in room_2!\n")n", " input('<Press any key to continue>\n')n", " n", " print("Press 1 to go to room_3.")n", " print("Press 2 to fail.")n", " n", " choice = input("> ")n", " n", " if choice == '1':n", " room_3()n", "n", " elif choice == '2':n", " fail()n", " n", " else:n", " print("Invalid entry. Please try again.\n")n", " room_2()n", "n", "n", "n", "def room_3():n", " print("You're in room_3!\n")n", " print("All you have to do to win is press any key three times.\n")n", " n", " presses = 3n", " n", " while presses > 0:n", " input('<Press any key>\n')n", " presses -= 1n", " n", " print("You win!")n", "n", "n", "n", "def fail():n", " print("You've failed, but thanks for playing!")n", " input('<Press any key to exit>\n')n", "n", "n", "room_1()" ] }, { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "run_control": { "frozen": true } }, "source": [ "<br>" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": false, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }