Difference between revisions of "Python"

From RogueBasin
Jump to navigation Jump to search
(Added SummonerRL to the list of Python games)
(34 intermediate revisions by 19 users not shown)
Line 1: Line 1:
{{Template:Programming language| name = Python
{{Programming language| name = Python
|company = Python Software Foundation
|company = Python Software Foundation
|influences = ABC programming language  
|influences = ABC programming language  
|updated = Feb 13 2009 (3.0.1)
|updated = Feb 25 2015 (3.4.0) and May 23 2015 (2.7.10)
|status = Stable
|status = Stable
|licensing = Open Source (Python 2.6.2 license)
|licensing = Open Source (Python 3.3.0 license)
|platforms = [[Linux]], [[Unix]], [[Mac OS X]], [[Windows]] and others.
|platforms = [[Linux]], [[Unix]], [[Mac OS X]], [[Windows]] and others.
|site = http://www.python.org/}}
|site = http://www.python.org}}


== What is Python? ==
== What is Python? ==
Line 18: Line 18:
== Roguelike Specific Details ==
== Roguelike Specific Details ==


Python's expressive code, dynamic typing, flexible data types, and powerful OO and exception handling facilities make it well-suited to quick, productive RL development. However, like all interpreted languages, Python has a reputation for large memory overheads and being slower in some applications when compared to compiled languages such as C++. These problems, however, can be overcome with the extension of third-party Python modules such as Psyco, and proper profiling and programming techniques. Another problem is that Python often requires the user to download an interpreter separately. A way to solve that is to include the interpreter in the game download.
Python's expressive code, dynamic typing, flexible data types, and powerful OO and exception handling facilities make it well-suited to quick, productive RL development. However, like all interpreted languages, Python has a reputation for large memory overheads and being slower in some applications when compared to compiled languages such as C++. These problems, however, can be overcome with the extension of third-party Python modules and proper profiling and programming techniques. Another problem is that Python often requires the user to download an interpreter separately. A way to solve that is to include the interpreter in the game download.


Python's rapid speed of development and human-readable code makes it an excellent choice for programmers wanting to develop a roguelike in a limited amount of time, making the language ideal for 7DRL Challenges.
Python's rapid speed of development and human-readable code makes it an excellent choice for programmers wanting to develop a Roguelike in a limited amount of time, making the language ideal for 7DRL Challenges.


== Python-Specific Articles on RogueBasin ==
== Python-Specific Articles on RogueBasin ==


'''General:'''
* [[Complete Roguelike Tutorial, using python+libtcod]]
* [[Complete Roguelike Tutorial, using python+libtcod]]
* [[Python_shadowcasting_implementation]] - Python code for field-of-view calculation using Bjorn Bergstrom's excellent [[FOV_using_recursive_shadowcasting|recursive shadowcasting algorithm]].
'''Field of View and Line of Sight:'''
* [[Permissive_Field_of_View_in_Python]] - An implementation of the [[Precise_Permissive_Field_of_View|precise Permissive Field of View]] algorithm in Python.
* [[Python shadowcasting implementation]] - Python code for field-of-view calculation using Bjorn Bergstrom's excellent [[FOV_using_recursive_shadowcasting|recursive shadowcasting algorithm]].
* [[Dungeon_builder_written_in_Python]] - A dungeon builder.
* [[Permissive Field of View in Python]] - An implementation of the [[Precise_Permissive_Field_of_View|precise Permissive Field of View]] algorithm in Python.
* [[A simple turn scheduling system -- Python implementation]] - A simple time system for rouguelikes.
* [[Raycasting_in_python]] - A python implementation of brute force raycasting.
* [[Bresenham%27s_Line_Algorithm#Python]] - Bresenham's Line Algorithm for line of sight.
'''Pathfinding'''
* [[A Python 3 and 2 Pathfinder with Pygame Example]] - A Python 3 and 2 pathfinder that uses A* and Dijkstra pathfinding with a Pygame example.
'''Map Generation:'''
* [[Dungeon builder written in Python]] - A dungeon builder.
* [[A Simple Dungeon Generator for Python 2 or 3]] - A simple and adaptable python 2 or 3 dungeon generator.
* [[Python_Curses_Example_of_Dungeon-Building_Algorithm]] - An example of a dungeon building algorithm.
* [[An_Implementation_of_City_Generation_by_Leaf_Venation]] - A city generator in Tk.
'''Scheduling:'''
* [[A simple turn scheduling system -- Python implementation]] - A simple time system for Roguelikes.
* [[A_priority_queue_based_turn_scheduling_system]] - A turn scheduling system that uses a priority queue.
'''Name Generation:'''
* [[Markov_chains_name_generator_in_Python]] - Example code used to generate random names.
* [[Names_from_a_high_order_Markov_Process_and_a_simplified_Katz_back-off_scheme]] - High quality Markov process random name generation.


== Related links ==
== Related links ==
Line 34: Line 49:
* [http://python.org Official Python website]
* [http://python.org Official Python website]
* [http://www.python.org/doc/faq/ Official Python FAQs]
* [http://www.python.org/doc/faq/ Official Python FAQs]
* [http://sourceforge.net/apps/wordpress/pyunicurses/ UniCurses for Python], a Python wrapper module that provides consistent [[Curses]] functionality on all platforms including Microsoft Windows (by wrapping PDCurses), Linux and Mac OS X (by wrapping the original "curses" module). It supports both Python 2 and Python 3, starting with version 2.6.1.
* [https://bitbucket.org/libtcod/libtcod libtcod] is a free, fast, portable and uncomplicated API for roguelike developers providing an advanced true color console emulator, input, and lots of other utilities frequently used in roguelikes.
* [http://adamv.com/dev/python/curses/ WCurses], a Python module implementing a substantial subset of the [[Curses]] interface under Windows.  Python includes Curses support by default for other OS's.
* [http://foo.wyrd.name/en:bearlibterminal/ BearLibTerminal] is another API for roguelike developers. Unlike libtcod, it provides and API for output only. It is therefore more compact, and is much simpler. Sports binding for C/C++, C#, Ruby, Lua, Python and Pascal.
* [http://doryen.eptalys.net/libtcod/ Doryen Library], libtcod is a free, fast, portable and uncomplicated API for roguelike developpers providing an advanced true color console emulator, input, and lots of other utilities frequently used in roguelikes.
* [http://psyco.sourceforge.net/ Psyco], the specializing compiler for Python. Improves performance 2 to 100 times (usually about 4 times), and requires little more from the programmer than to import the module.
* [http://www.py2exe.org/ py2exe] is a package which converts Python scripts into executable Windows programs, able to run without requiring a Python installation.  Since most Windows users will not have Python installed, py2exe is a good way to distribute your Python game to that audience.
* [http://www.py2exe.org/ py2exe] is a package which converts Python scripts into executable Windows programs, able to run without requiring a Python installation.  Since most Windows users will not have Python installed, py2exe is a good way to distribute your Python game to that audience.
* [http://www.pygame.org Pygame], [[Pygame]] is an SDL wrapper for Python that has been used for many graphical and non-graphical Roguelikes.
* [https://github.com/pyinstaller/pyinstaller/wiki PyInstaller] is a program that converts (packages) Python programs into stand-alone executables, under Windows, Linux, and Mac OS X.
* [http://www.finalcog.com/python-with-curses-with_curses with_curses], just a tiny bit of help for Linux/Unix roguelikes.
* [http://www.pygame.org/news.html Pygame] ([[Pygame]]) is an SDL wrapper for Python that has been used for many graphical and non-graphical Roguelikes.


== Roguelike games in Python ==
== Roguelike games in Python ==
 
{|class="wikitable sortable" style="width:50%"
* {{beta}} [[Artisan]]
!style="width:15%;"|Status || Name
* {{alpha}} [[CrashRun]]
|-
* {{alpha}} [[CyberRogue]]
| {{defunct}} ||  [[Artisan]]
* {{7DRL}} [[Cypress Tree Manor]]
|-
* {{7DRL}} [[Fist of the Rogue Warrior]]
| {{stable}} ||  [[Armoured Commander]]
* {{alpha}} [[Ighalsk]]
|-
* {{defunct}} [[I, Monster]]
| {{alpha}} ||  [[CrashRun]]
* {{alpha}} [[Lands of Elderlore]]
|-
* {{beta}} [[Mines of Elderlore]]
| {{alpha}} ||  [[CyberRogue]]
* {{beta}} [[Nyctos]]
|-
* {{alpha}} [[Pyro]]
| {{7DRL}} ||  [[Cypress Tree Manor]]
* {{alpha}} [[Shuruppak]]
|-
* {{beta}} [[Test Adventure]]
| {{7DRL}} ||  [[Fist of the Rogue Warrior]]
* {{alpha}} [[Torchlit]]
|-
* {{alpha}} [[Twilight]]
| {{alpha}} ||  [[Herculeum]]
* {{alpha}} [[Wa]]
|-
* {{7DRL}} [[Whispers in the Void]]
| {{alpha}} ||  [[Ighalsk]]
* {{7DRL}} [[Z-Day]]
|-
| {{defunct}} ||  [[I, Monster]]
|-
| {{defunct}} ||  [[Lands of Elderlore]]
|-
| {{beta}} ||  [[Mines of Elderlore]]
|-
| {{defunct}} ||  [[Netpack]]
|-
| {{7DRL}} || [[Nightmare Tyrant]]
|-
| {{beta}} ||  [[Nyctos]]
|-
| {{defunct}} ||  [[Pyro]]
|-
| {{beta}} ||  [[rng clrc]]
|-
| {{alpha}} ||  [[Roguelike me]]
|-
| {{defunct}} ||  [[Shuruppak]]
|-
| {{stable}} ||  [[SummonerRL]]
|-
| {{7DRL}} ||  [[Swamp Monster]]
|-
| {{stable}} ||  [[The Temple of Torment]]
|-
| {{alpha}} ||  [[Torchlit]]
|-
| {{7DRL}} ||  [[TrapRL]]
|-
| {{beta}} ||  [[Ultima Ratio Regum]]
|-
| {{defunct}} ||  [[Wa]]
|-
| {{7DRL}} ||  [[Whispers in the Void]]
|-
| {{7DRL}} ||  [[Z-Day]]
|}

Revision as of 13:44, 8 November 2020

Python
Programming Language
Company Python Software Foundation
Influences ABC programming language
Updated Feb 25 2015 (3.4.0) and May 23 2015 (2.7.10)
Status Stable
Licensing Open Source (Python 3.3.0 license)
Platforms Linux, Unix, Mac OS X, Windows and others.
Official site of Python


What is Python?

From the official Python FAQ:

"Python is an interpreted, interactive, object-oriented programming language. It incorporates modules, exceptions, dynamic typing, very high level dynamic data types, and classes. Python combines remarkable power with very clear syntax. It has interfaces to many system calls and libraries, as well as to various window systems, and is extensible in C or C++. It is also usable as an extension language for applications that need a programmable interface. Finally, Python is portable: it runs on many Unix variants, on the Mac, and on PCs under MS-DOS, Windows, Windows NT, and OS/2."

A full set of features can be found here.

Roguelike Specific Details

Python's expressive code, dynamic typing, flexible data types, and powerful OO and exception handling facilities make it well-suited to quick, productive RL development. However, like all interpreted languages, Python has a reputation for large memory overheads and being slower in some applications when compared to compiled languages such as C++. These problems, however, can be overcome with the extension of third-party Python modules and proper profiling and programming techniques. Another problem is that Python often requires the user to download an interpreter separately. A way to solve that is to include the interpreter in the game download.

Python's rapid speed of development and human-readable code makes it an excellent choice for programmers wanting to develop a Roguelike in a limited amount of time, making the language ideal for 7DRL Challenges.

Python-Specific Articles on RogueBasin

General:

Field of View and Line of Sight:

Pathfinding

Map Generation:

Scheduling:

Name Generation:

Related links

  • Official Python website
  • Official Python FAQs
  • libtcod is a free, fast, portable and uncomplicated API for roguelike developers providing an advanced true color console emulator, input, and lots of other utilities frequently used in roguelikes.
  • BearLibTerminal is another API for roguelike developers. Unlike libtcod, it provides and API for output only. It is therefore more compact, and is much simpler. Sports binding for C/C++, C#, Ruby, Lua, Python and Pascal.
  • py2exe is a package which converts Python scripts into executable Windows programs, able to run without requiring a Python installation. Since most Windows users will not have Python installed, py2exe is a good way to distribute your Python game to that audience.
  • PyInstaller is a program that converts (packages) Python programs into stand-alone executables, under Windows, Linux, and Mac OS X.
  • Pygame (Pygame) is an SDL wrapper for Python that has been used for many graphical and non-graphical Roguelikes.

Roguelike games in Python

Status Name
defunct Artisan
stable Armoured Commander
αlpha CrashRun
αlpha CyberRogue
7DRL Cypress Tree Manor
7DRL Fist of the Rogue Warrior
αlpha Herculeum
αlpha Ighalsk
defunct I, Monster
defunct Lands of Elderlore
βeta Mines of Elderlore
defunct Netpack
7DRL Nightmare Tyrant
βeta Nyctos
defunct Pyro
βeta rng clrc
αlpha Roguelike me
defunct Shuruppak
stable SummonerRL
7DRL Swamp Monster
stable The Temple of Torment
αlpha Torchlit
7DRL TrapRL
βeta Ultima Ratio Regum
defunct Wa
7DRL Whispers in the Void
7DRL Z-Day