====== Programming Assignment 1: Room with Interactive Items ====== ===== Basic Info ===== **Due:** Wednesday, October 6th at 23:59\\ **Group size:** Max 2 people\\ **What to turn in:** Single ZIP file with Python files, asset files and an item data file\\ **Note:** Use comments in your code to explain what you are doing.\\ **Note:** If you use code or assets from others, remember to credit them in your comments. ===== Goal ===== In this assignment you will be using Panda 3D and Python to create a basic interactive virtual environment. The user can navigate around the environment and interact with various items. The implementation is "data driven" - which means that the interactive content is described in a special "data file", which your "engine" reads in and presents (as opposed to "hard coding" content inside your main program). While you are given complete freedom to create any kind of internal environment and include any kinds of items you want, keep in mind that some kind of overall story or setting that ties it all together makes the experience more compelling. ===== Description ===== * Write a program that displays the interiors of a place (e.g. building, space ship, caves...). You can use the same method and assets as presented in Lab2, but at least change the shape and play with the textures and lights. You are also free to use a completely different model. * Create a Python class for **interactive items** that at least holds information about 'location', 'orientation', 'name', 'description' and 'usage effect'. When instantiated, the item should load a unique model from a file and appear inside the world. * Populate the room with 8 - 12 items by reading in a text file, for example in the following format (alternatively you can use XML): * ITEM:name:location:orientation:description:effect * ITEM:name:location:orientation:description:effect * ... * When a user navigates through your room, any item that you come into close proximity of (check the distance between the object and camera), should become the selected item. A selected item needs to stand out in some manner, for example by switching to a particularly bright texture or by bobbing up and down (you can use your imagination here). The 'description' of the selected item should appear somewhere on the screen. * A selected item should become unselected when the user moves away. * When the user hits the ENTER key while an item is selected, you should make something happen depending on what the selected item is. It is enough just to show the 'usage effect' text, but feel free to improvise. ===== Resources ===== * You can populate your room with items from [[http://www.alice.org/pandagallery/|The Panda 3D Model Archive]] if you like