Term Project for 15-112 at CMU
Clone or download
Daniel Barychev
Daniel Barychev First Commit
Latest commit 7c6ec5d Dec 10, 2016
Type Name Latest commit message Commit time
Failed to load latest commit information.
design First Commit Dec 10, 2016
models First Commit Dec 10, 2016
.gitattributes 🍭 Added .gitattributes & .gitignore files Dec 10, 2016
.gitignore 🍭 Added .gitattributes & .gitignore files Dec 10, 2016
main.py First Commit Dec 10, 2016
project-video.txt First Commit Dec 10, 2016
readme.txt First Commit Dec 10, 2016
tester.py First Commit Dec 10, 2016
timesheet.txt First Commit Dec 10, 2016


Name: Daniel Barychev
Andrew Id: dbaryche
Section: D

I would like to cite the Roaming Ralph Demo from the Panda3D samples (https://www.panda3d.org/manual/index.php/Sample_Programs:_Roaming_Ralph). This is the main code that I have built my world overtop of.
I sourced the Ralph model from the demo above, the panda model from the general Panda3D models
with which the module is packaged. The crystal model and decoy model come from the Panda3D art package and specifically, BVW at CMU.

The Breadth First Search algorithm is adapted from here (http://compsci.ca/v3/viewtopic.php?t=32571)

I created the floor, wall, ramp, and sky models in Blender.

This project runs using the Panda3D module. To run it, one must install the Panda3D Runtime or SDK (https://www.panda3d.org/download.php)
and run the main.py file using ppython as such "ppython main.py"

Animated Andrew is a 3D game made using Panda3D in which you play as Andrew, a boy stuck in a maze that is trying to get as many crystals as possible before a panda gets him. He has the option to use decoys, but those time out and the pandas get smarter and faster as the score goes up. 

The project is an experiment in the 3D implementation of recursive backtracking and breadth first search. I wanted to be able to dynamically use these algorithms to locate the player in 3D space and have the enemies work together to get him/her. Specifically, when the score is below 3, the pandas use backtracking since this provides less of a direct path. Above 3, the pandas switch over to breadth first search, finding the player much more quickly.

My test functions were built and used in the tester.py file. It was impractical to try and make them in the main.py file since data changes so frequently there. Thus, when testing things outside of the tester.py file, I simply used print statements in the mileu of my existing functions. In addition, there are some methods which are quite large. These are necessary since all of the movement code is best kept together for clarity. The roaming ralph demo does it this way, and I mimicked it. Other functions that I wrote all comply with 112 length standards.