{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python", "Topic :: Games/Entertainment" ], "description": "# pyFense\n\nPyFense is a Tower Defense game written in Python 3 using cocos2d and pyglet.\nFor the roadmap and further documentation/information on the project, check [documentation/roadmap.md](documentation/roadmap.md).\n\n## Playing the Game\n\nIf you just want to play and enjoy pyfense, you can simply install it from pypi here: [https://pypi.python.org/pypi/PyFense](https://pypi.python.org/pypi/PyFense]).\nAlternatively you can clone this repo and run pyFense locally through virtualenv, for that please see the instructions below on how to setup a development environment.\n\n## About\n\npyFense was written by Daniel Lechner, Jakob M\u00fcller, Matthias Lutz, Nimar Blume and Robin Wachsmann as part of an university project at the Technical University of Munich.\nThe aim of the course was to get familiar with the Python programming language, git, and distributed development.\n\n## Contributing\n\nWe welcome all contributions: code, ideas, sprites/art, balancing suggestions and other improvements. Please don't hesitate to ask, write an issue or send a pull request!\nFor code, please try to adhere to the PEP8 guideline to keep the code readable and uniform :).\n\n## Dependencies\n\npython 3, pyglet>=1.3.0, cocos2d>=0.6.5, numpy>=1.9.2 \nearlier versions might work but were not tested against. pyglet 1.2.2 and earlier cause a segfault due to incorrect calling of gdk_pixbuf.\n\n## How to Setup the Development Environment\n\nTo setup the development environment you can either use `venv` which comes with Python 3.3 or later, or you can use `virtualenv` which has to be explicitly installed but works with a wider variety of versions. `venv` is definitely recommended.\n\nSteps to replicate the development environment:\n\n### Using `venv` (recommended)\n\n1. clone this repo\n2. initiate virtualenv in the project dir: `python3 -m venv .`\n3. install pyfense in the virtualenv environment: `./bin/python setup.py develop`\n4. set execute permission for the executeable: `chmod +x ./bin/pyfense`\n5. run pyfense: `./bin/pyfense`\n6. to modify pyfense edit the responding file in `./pyfense/`\n7. have fun :)\n\n### Using `virtualenv`\n\n1. clone this repo\n2. initiate virtualenv in the project dir: `virtualenv .`\n3. install pyfense in the virtualenv environment: `./bin/python setup.py develop`\n4. set execute permission for the executeable: `chmod +x ./bin/pyfense`\n5. run pyfense: `./bin/pyfense`\n6. to modify pyfense edit the responding file in `./pyfense/`\n7. have fun :)\n\n## Unit Tests\n\nto be added later\n\n## Program Structure\n\npyFense is written in an Object oriented structure.\nWhat each file contains:\n\n- pyfense.py: entry point into the game, contains the game menus. for some menus a \"modmenu\" class is used, which is defined in\n- enemy.py: subclasses cocos2d sprite to create a class to represent a single enemy.\n- entities.py:\n- game.py:\n- highscore.py:\n- hud.py: provides the ingame HUD (announcements, tower build/upgrade menu, coursor selections etc)\n- map.py:\n- mapBuilder.py:\n- mapbuilderhud.py:\n- modmenu.py: subclasses cocos2d menuitem to display a non-scaled image as a menuitem.\n- particles.py:\n- pause.py: a cocos2d scene and layer to provide the ingame pause menu.\n- projectile.py: subclasses cocos2d sprite to create a class to represent a single projectile, fired by towers at enemies.\n- projectileParticle.py: subclasses the pyglet particle system to provide particles for projectiles.\n- resources.py: all assets used by pyFense are loaded into memory in resources.py.\n- tower.py: subclasses cocos2d sprite to create a class to represent a single tower.\n\n## Possible Improvements\n\nPlease look at the GitHub issues and the following list:\n\n- major balancing improvements\n- more exciting levels\n- online highscores\n- multiplayer (lan/internet) -> requires significant client/server rewrite\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/nimarb/pyfense", "keywords": "pyfense tower defense td game", "license": "GPLv3", "maintainer": "nimar b", "maintainer_email": "l.nimar.b@gmail.com", "name": "PyFense", "package_url": "https://pypi.org/project/PyFense/", "platform": "", "project_url": "https://pypi.org/project/PyFense/", "project_urls": { "Homepage": "https://github.com/nimarb/pyfense" }, "release_url": "https://pypi.org/project/PyFense/0.9.5/", "requires_dist": [ "pyglet (>=1.3.0)", "cocos2d (>=0.6.5)", "numpy (>=1.9.2)" ], "requires_python": "", "summary": "PyFense is a tower defense game built using Python 3, the cocos2d and pyglet frameworks. If you want to contribute in any way (art, code, balancing, bug reporting) you can do so here: https://github.com/nimarb/pyfense/ . Thank you!", "version": "0.9.5" }, "last_serial": 5972629, "releases": { "0.8": [ { "comment_text": "", "digests": { "md5": "913826cced4be49a73b5e651c1c3755c", "sha256": "204c10295a44305b9700b4104df98816562f426703a49cd3892a2f2b3681cae8" }, "downloads": -1, "filename": "PyFense-0.8.tar.gz", "has_sig": false, "md5_digest": "913826cced4be49a73b5e651c1c3755c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26956, "upload_time": "2015-06-21T19:00:32", "url": "https://files.pythonhosted.org/packages/cc/fe/c5432f939d53b530bf409f475abc905ac3b484b9f1ac065a346db3b1408c/PyFense-0.8.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "45b77bb06f1741634894c7b9f49cb906", "sha256": "4a024b78dfb46bd47babece7fe722c09369d1c110ae3ca0dd55a3e5c192d2d64" }, "downloads": -1, "filename": "PyFense-0.8.1.tar.gz", "has_sig": false, "md5_digest": "45b77bb06f1741634894c7b9f49cb906", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4207800, "upload_time": "2015-06-21T19:15:26", "url": "https://files.pythonhosted.org/packages/ff/a4/8ea164013f8063ee456ea5196cb0cb37984c25b09686962e3d0868e3ac79/PyFense-0.8.1.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "2984b9354474d493c41a2771fbe34995", "sha256": "5d38cc2cbceb3b3a3cb25328808ba916052744a5af92b61f1f00d96e49ba4a0d" }, "downloads": -1, "filename": "PyFense-0.8.2.tar.gz", "has_sig": false, "md5_digest": "2984b9354474d493c41a2771fbe34995", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4207805, "upload_time": "2015-06-21T19:32:09", "url": "https://files.pythonhosted.org/packages/40/e3/b301d64e4400ce9588e8fef1eabfe0497f3dc007714ddc67a687d4d8435e/PyFense-0.8.2.tar.gz" } ], "0.8.20": [ { "comment_text": "", "digests": { "md5": "aeb91ee0df95918251ff05a618165f3e", "sha256": "e95ea22c08b3edf444dba9413b2cffa4ea5e42f294ae5b127283946061227cbe" }, "downloads": -1, "filename": "PyFense-0.8.20.tar.gz", "has_sig": false, "md5_digest": "aeb91ee0df95918251ff05a618165f3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4493473, "upload_time": "2015-07-04T10:17:00", "url": "https://files.pythonhosted.org/packages/55/8a/9528abea9fce196dcb58231b998e88f5020580aa374410e62e955c7c6044/PyFense-0.8.20.tar.gz" } ], "0.8.22": [ { "comment_text": "", "digests": { "md5": "1670c4bd85491ff3cf3cf68a7ec987a2", "sha256": "b1d277c8bfc642b9823c40c4fc94baa4193fdf5e76420224bf14e356c321d57f" }, "downloads": -1, "filename": "PyFense-0.8.22.tar.gz", "has_sig": false, "md5_digest": "1670c4bd85491ff3cf3cf68a7ec987a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4176486, "upload_time": "2015-06-22T20:12:26", "url": "https://files.pythonhosted.org/packages/3d/e9/39d4fb3afff53642abccf6233a6611d7fa99870d55954201fa254cce21a5/PyFense-0.8.22.tar.gz" } ], "0.8.3": [ { "comment_text": "", "digests": { "md5": "0be2f19e9f1980c6753be299df3adead", "sha256": "d6af31dd67b431fb5e00a2338c80d8c9956b94aeb48e901c65c0e78b961feaf6" }, "downloads": -1, "filename": "PyFense-0.8.3.tar.gz", "has_sig": false, "md5_digest": "0be2f19e9f1980c6753be299df3adead", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4207821, "upload_time": "2015-06-21T19:33:37", "url": "https://files.pythonhosted.org/packages/fa/9a/db70cd802baa5db98c1da956bb52e59bcb20bda0c98e55b9521e82d18d71/PyFense-0.8.3.tar.gz" } ], "0.8.4": [ { "comment_text": "", "digests": { "md5": "6ce21e4bf4f573d10624f33ba1cdabfa", "sha256": "ac8f6c7ad5087f36efb728fd4939786eb62515d8805cc54adb8e7ca0c5adfc99" }, "downloads": -1, "filename": "PyFense-0.8.4.tar.gz", "has_sig": false, "md5_digest": "6ce21e4bf4f573d10624f33ba1cdabfa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4207774, "upload_time": "2015-06-21T19:40:32", "url": "https://files.pythonhosted.org/packages/06/7f/8613f69fd26386f127977446c6d7c1fa65d02b2b9acc224c7bc725cd44e1/PyFense-0.8.4.tar.gz" } ], "0.8.5": [ { "comment_text": "", "digests": { "md5": "4f4e1f7ceb312c3d42577920492f2176", "sha256": "4c19fda07d9445eaa5d38a744c455a3491ab6653a6814b746a68c59843172bb7" }, "downloads": -1, "filename": "PyFense-0.8.5.tar.gz", "has_sig": false, "md5_digest": "4f4e1f7ceb312c3d42577920492f2176", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4207774, "upload_time": "2015-06-21T19:47:58", "url": "https://files.pythonhosted.org/packages/ea/1c/e5a8f73fbb550620a90f915495ee8cc6386b321bb411bbf7cb0a8829b3ab/PyFense-0.8.5.tar.gz" } ], "0.8.6": [ { "comment_text": "", "digests": { "md5": "08d25c437c819d78b505f059abb56c79", "sha256": "3087f57af62da09f158b43081ac9cdcb460a41076c9be4ba22415cc25d4096f7" }, "downloads": -1, "filename": "PyFense-0.8.6.tar.gz", "has_sig": false, "md5_digest": "08d25c437c819d78b505f059abb56c79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4205754, "upload_time": "2015-06-22T12:04:37", "url": "https://files.pythonhosted.org/packages/49/0a/c3c902d4920d7a731abb8ffdd5c68c16c112eb7842ba44946b912b95f921/PyFense-0.8.6.tar.gz" } ], "0.8.7": [ { "comment_text": "", "digests": { "md5": "10cc45949f5c23bdfc79a0b180abbed2", "sha256": "f18c9d66ae4aeb9895fbd383c0ca03e0ecb04804265279f368370643c452bb09" }, "downloads": -1, "filename": "PyFense-0.8.7.tar.gz", "has_sig": false, "md5_digest": "10cc45949f5c23bdfc79a0b180abbed2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4206390, "upload_time": "2015-06-22T12:33:10", "url": "https://files.pythonhosted.org/packages/fe/33/7ceb64dccc3807eb677a787253260bbe1107048c8a8d33e5e5babdd112ca/PyFense-0.8.7.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "39b811944efa8d88d9620c47efa0d281", "sha256": "889379e0936e4fdb25336c6f33f05af764e61976aa61c4641e306db3ef6e962c" }, "downloads": -1, "filename": "PyFense-0.9.tar.gz", "has_sig": false, "md5_digest": "39b811944efa8d88d9620c47efa0d281", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4241907, "upload_time": "2015-06-22T20:48:48", "url": "https://files.pythonhosted.org/packages/c1/1a/592b7b8a8e22ce2cc21dabfa85013bc1996bc3a8fd56059c655338a8e67b/PyFense-0.9.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "fb4da351d4677ff5c730c7c3ed937ef4", "sha256": "49cee0cca559593df20b934520cc937a51b8df6aeceb0ce3a14239d556dbcc4a" }, "downloads": -1, "filename": "PyFense-0.9.1.tar.gz", "has_sig": false, "md5_digest": "fb4da351d4677ff5c730c7c3ed937ef4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4510133, "upload_time": "2015-07-07T12:55:10", "url": "https://files.pythonhosted.org/packages/81/be/ab64bcd6d443d8f4ced22cf5a465ddfe56826755ffbdb6db15f5c3e3fbb1/PyFense-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "1659e740e88e4011eb074dc5328666f7", "sha256": "8e84b65711ca9cefd7198c6a24331882439472d26fd7ffb3f3628ff16fff15f4" }, "downloads": -1, "filename": "PyFense-0.9.2.tar.gz", "has_sig": false, "md5_digest": "1659e740e88e4011eb074dc5328666f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4605471, "upload_time": "2015-07-22T09:34:44", "url": "https://files.pythonhosted.org/packages/ba/f4/1fc393f987b24f2ec87d426814425fe3fdb2b66a1f642617afb36ad50b28/PyFense-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "570fd0cc3de2689d142d2440b0407d6a", "sha256": "91011ac332266b9d8f5ad49521999aab8d6dcdc5af7e00dab45d5669e25ab461" }, "downloads": -1, "filename": "PyFense-0.9.3.tar.gz", "has_sig": false, "md5_digest": "570fd0cc3de2689d142d2440b0407d6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4605497, "upload_time": "2015-10-14T15:33:26", "url": "https://files.pythonhosted.org/packages/5d/28/fcd53b22cda1595fa28bc2cf3aac755c0e28b73e533c695e55b8174c19ad/PyFense-0.9.3.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "885bd212ad4b1a57f2d76f9aee4d707d", "sha256": "53fe49aaabba665f670949894f21774dc0303bf2ce353abe50e6afde2987253c" }, "downloads": -1, "filename": "PyFense-0.9.4.tar.gz", "has_sig": false, "md5_digest": "885bd212ad4b1a57f2d76f9aee4d707d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4605659, "upload_time": "2015-10-29T15:27:27", "url": "https://files.pythonhosted.org/packages/88/ee/c79e7430cdd4512b99dc7277cfb147873c4bc2e8e3c89614ac473f009b47/PyFense-0.9.4.tar.gz" } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "ffa5678258ec488c34b4d2d1736fe269", "sha256": "6c72b4df5caa7e900ca18a7744c5579fccb8172727bbc593ea4035b461f9b851" }, "downloads": -1, "filename": "PyFense-0.9.5-py3-none-any.whl", "has_sig": false, "md5_digest": "ffa5678258ec488c34b4d2d1736fe269", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4632249, "upload_time": "2019-10-14T18:05:14", "url": "https://files.pythonhosted.org/packages/41/fd/439da92208aa09252e645eaa85f41747c1e92c858027febde178a1f7608e/PyFense-0.9.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb1750cb9ee34b874162d03532ef80e4", "sha256": "d7cb6192a0d53a25257bfa5172970ba0f39faa5549ce9fb20e5b115529b69b8a" }, "downloads": -1, "filename": "PyFense-0.9.5.tar.gz", "has_sig": false, "md5_digest": "eb1750cb9ee34b874162d03532ef80e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4489021, "upload_time": "2019-10-14T18:05:20", "url": "https://files.pythonhosted.org/packages/80/47/e47c024e9d5e523433870b00c964a8befd39ef61f983f976e1c1b486f266/PyFense-0.9.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ffa5678258ec488c34b4d2d1736fe269", "sha256": "6c72b4df5caa7e900ca18a7744c5579fccb8172727bbc593ea4035b461f9b851" }, "downloads": -1, "filename": "PyFense-0.9.5-py3-none-any.whl", "has_sig": false, "md5_digest": "ffa5678258ec488c34b4d2d1736fe269", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4632249, "upload_time": "2019-10-14T18:05:14", "url": "https://files.pythonhosted.org/packages/41/fd/439da92208aa09252e645eaa85f41747c1e92c858027febde178a1f7608e/PyFense-0.9.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb1750cb9ee34b874162d03532ef80e4", "sha256": "d7cb6192a0d53a25257bfa5172970ba0f39faa5549ce9fb20e5b115529b69b8a" }, "downloads": -1, "filename": "PyFense-0.9.5.tar.gz", "has_sig": false, "md5_digest": "eb1750cb9ee34b874162d03532ef80e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4489021, "upload_time": "2019-10-14T18:05:20", "url": "https://files.pythonhosted.org/packages/80/47/e47c024e9d5e523433870b00c964a8befd39ef61f983f976e1c1b486f266/PyFense-0.9.5.tar.gz" } ] }