{
"info": {
"author": "Bob Bowles",
"author_email": "bobjohnbowles@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Environment :: Other Environment",
"Intended Audience :: Developers",
"Intended Audience :: End Users/Desktop",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Natural Language :: Chinese (Simplified)",
"Natural Language :: English",
"Natural Language :: French",
"Operating System :: Microsoft :: Windows",
"Operating System :: Microsoft :: Windows :: Windows 7",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.2",
"Programming Language :: Python :: 3.3",
"Topic :: Games/Entertainment :: Board Games",
"Topic :: Games/Entertainment :: Turn Based Strategy"
],
"description": "=======\nReversi\n=======\n\nAn implementation of the popular Reversi board game, for use by one or two\nplayers. Some simple AI is included to provide a computer opponent, and if you\nare feeling lazy you can watch while two AI opponents slug it out.\n\nInstallation\n============\n\nFor Version 1.2, supported platforms are Linux and now Windows (tested on Win7), \nalthough *in theory* this game should play equally well on Mac. I would like to\nhear from anyone who can help with porting (I don't have a Mac, or a Mac OS to \nhand).\n\nSystem Requirements:\n--------------------\n\n * Python 3\n\n * Numpy for Python 3\n\nInstallation (Linux):\n---------------------\n\n 0. Ensure all dependencies are installed. In particular, make sure you have\n a version of python >= 3.2, with the `numpy `_ \n package installed. \n\n 1. Unzip the tar.gz somewhere.\n\n 2. In a console window navigate to the Reversi-1.2 directory and run the\n following command as root (on Ubuntu/Debian use sudo):\n\n ``[sudo] python3 setup.py install``\n\n 3. On Ubuntu a desktop launcher is installed, which you should be able to\n find in the Dash and drag to the launcher bar. The default assumes you \n are using python 3.2. If this is not the case you will need to manually \n tweak the path references in the .desktop file.\n\nInstallation (Windows):\n-----------------------\n\n 0. Ensure all dependencies are installed. In particular, make sure you have\n a version of python >= 3.2, and numpy. The easiest way to do this on \n Windows is to install `WinPython `_\n for your system, because (in addition to numpy) loads of commonly-used \n packages are bundled with python ready to use.\n\n 1. Extract the tar.gz somewhere (7-Zip should work).\n \n 2. Navigate into the dist directory and extract the Reversi-1.2.zip file.\n\n 3. In a console window navigate to the Reversi-1.2 directory and run the\n following command:\n\n ``[path_to_python\\\\]python setup.py install``\n\n 4. A .bat launch script is installed in the public desktop. This should \n work on both XP and Win 7/8 systems, but the path references may need\n to be edited for your flavour of python installation. The default \n assumes WinPython 3.3.2.3 for amd64 (see note above).\n\nControls\n========\n\nThe controls for the game are minimal, and hopefully self-explanatory, but here\nis a list:\n\nPreparation Controls:\n---------------------\n\n Language:\n A selection box appears to enable the player to choose their\n preferred language.\n\n If no language is selected the game will default to English.\n\n Your name:\n You can type anything you like here, it just helps to distinguish\n the players.\n\n Mode:\n Four modes are supported:\n\n n. Normal (human versus computer opponent).\n\n p. Person versus Person, in 'hot-seat' mode.\n\n c. Computer versus computer, what I like to call TV mode.\n\n b. Benchmarking mode, all graphics turned off. In this mode\n additional information is requested for the number of games\n to play.\n\n The default mode is 'Normal'.\n\n Token:\n The game asks the first player to choose a token, Black or White.\n Click your choice or type 'b' or 'w', depending on UI (see below).\n\nGame Play Controls:\n-------------------\n\nWho starts is chosen at random.\n\n Choose Tile:\n Depending on UI this is achieved by either clicking on the appropriate\n tile, or typing in the tile coordinates as a space-separated pair of\n numbers, e.g., ``5 6``\n\n Hints:\n A hint mode is provided for each (human) player that can be toggled\n by either typing 'h' or clicking the appropriate button, depending\n on the UI you are using.\n\n Quit:\n Typing 'q', hitting 'Esc' and/or clicking the 'Close Window' icon\n (the details depend on the UI) causes the current game to be aborted.\n\n Play Again:\n You can elect to play again as many times as you want. The more\n games you play, your game statistics will be accumulated and\n displayed on the scoreboard.\n\n At the time of writing, there is no mechanism for storing game\n statistics between sessions, so if you want to save your high-scores you\n will have to resort to a screen-shot!\n\nChoice of UI: Console vs. Tkinter/ttk\n=====================================\n\nThe game has been shipped 'hard-wired' for the tkinter/ttk interface. For most\npurposes this is (I believe) a nice and easy interface to use. However,\nparticularly if you want to do a lot of bench-testing of different AI, you may\nwish to use the console interface instead. This is very easy do in the source\ncode, just un-comment the console interface and comment the tkinter interface in\nthe heading of the ``ui`` module.\n\nAn older version of the game also had a pygame interface, but this has been\nremoved in the shipped version. There are several reasons for this:\n\n * At the time of writing, installing pygame for Python 3 is still\n something of a black art. It was felt that the difficulty of installing\n pygame outweighs any advantages of using it for a simple board game for\n end users.\n\n * Removing the pygame interface makes the packaging simpler (OK, so I'm\n lazy).\n\n * For a board game, the sophisticated handling of sprites (pygame's great\n strength) is not required. Tkinter/ttk offers instead a very good set of\n themed widgets with excellent hooks for callouts, making the ui very\n easy to write, and much nicer to use, than is possible with the graphics\n of pygame.\n\n * At the time of writing, pygame does not support unicode. This means that\n i18n with languages like, for example, Chinese, is not possible in a\n pygame interface using the Python i18n package. You just end up with a\n load of rectangular boxes on the screen. i18n with pygame is still\n possible, but it would require a lot of code, and the use of a lot of\n graphic images instead of text. As noted above, I am lazy.\n\n *sigh* Why, in this day and age, is software being written that does not\n support unicode (expecially when that is one of the strengths of the\n language it is written in)?\n\nSome history:\n=============\n\nThis implementation of Reversi is *very* loosely based on the Reversi game\ndescribed in the book *Invent Your Own Computer Games With Python* by 'Al\nSweigart '_. While some of the algorithms may\nstill be recognisable, this code has been designed from scratch from an object\nmodel rather than using the functional programming flow diagram approach.\n\nOriginally implemented with a console UI, the code was adapted to work with\nboth pygame and tkinter/ttk graphics. However, due to lack of support in pygame\nfor unicode, the pygame interface was dropped to enable i18n (see above for the\npolemic).\n\nI have had a lot of fun designing some more intelligent AI for the more\ndemanding player, although I expect this still falls well below\ntournament standard. Nevertheless, the result is more pleasing to my eye, and\nhopefully more bug-free and maintainable. The AI is designed to be pluggable, so\nit should be relatively easy to create new algorithms and implement them in\nfuture versions.\n\nAs you might have guessed from the citation above, my original motive for\nwriting this was to learn Python. However, as I went along the project became a\nvehicle for learning a lot of other associated Pythonic stuff.\n\nThis little game introduced me to Pygame and NumPy, and then tkinter/ttk.\nIn the later stages I found out how to use the i18n module for\ninternationalization.\n\nThis project has been an opportunity for me to (re-)learn Eclipse, and an\nintroduction to NetBeans. I have also looked at some other IDEs aimed\nspecifically at Python, but I have not (yet) found one that will stay alive long\nenough to type 'Hello World!'.\n\nI have also found out a lot I never wanted to know about CVS, and a lot I am\nvery grateful to have discovered about Mercurial.\n\nI have used this little piece of code to find out more about\ndistributing Python software. If you are reading this, you will know I have\nsucceeded :).\n\nFinally, because I don't allow Windows computers in the house, I have learned \none heck of a lot about using VirtualBox while I was testing/debugging the \nWindows installation. I also re-discovered why I hate Windows...\n\nLanguages\n=========\n\nAt time of writing the only options supported are English, French and Chinese,\nbut if there is someone 'out there' interested in helping with other\ntranslations I will be happy to hear from them.\n\nI would also be grateful for any help with my rusty French and 'Google\nTranslate' Chinese :).\n\nAuthor:\n=======\n\nBob Bowles ",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://pypi.python.org/pypi/Reversi",
"keywords": "Reversi,Othello",
"license": "GNU General Public License v3 (GPLv3)",
"maintainer": null,
"maintainer_email": null,
"name": "Reversi",
"package_url": "https://pypi.org/project/Reversi/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/Reversi/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "http://pypi.python.org/pypi/Reversi"
},
"release_url": "https://pypi.org/project/Reversi/1.2.1/",
"requires_dist": null,
"requires_python": null,
"summary": "A version of the Reversi board game intended for casual play.",
"version": "1.2.1"
},
"last_serial": 1568268,
"releases": {
"1.0": [
{
"comment_text": "",
"digests": {
"md5": "c6787d8d704d28f43d9a6840ecd5c62f",
"sha256": "4f1b10d2731353be04d0dbdafa250b2cbe79efaf62f9b17067a1140f90175533"
},
"downloads": -1,
"filename": "Reversi-1.0.tar.gz",
"has_sig": false,
"md5_digest": "c6787d8d704d28f43d9a6840ecd5c62f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 48592,
"upload_time": "2012-08-08T14:02:33",
"url": "https://files.pythonhosted.org/packages/f7/36/5aa435540e5c83111c2b125ed28625feb85e95b776c676fa88b199c8aa31/Reversi-1.0.tar.gz"
}
],
"1.1": [
{
"comment_text": "",
"digests": {
"md5": "2e79868c89a11f198a86d6211b51371e",
"sha256": "3ede59f2889077f101bbc8816b80d01df3bdf43e9773fb2680f64435537e2e44"
},
"downloads": -1,
"filename": "Reversi-1.1.tar.gz",
"has_sig": false,
"md5_digest": "2e79868c89a11f198a86d6211b51371e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 49195,
"upload_time": "2012-08-09T16:02:28",
"url": "https://files.pythonhosted.org/packages/6b/23/25263383f6b22238079e909fbb6c55c9a6f1b0717a44025e37012bf93c6f/Reversi-1.1.tar.gz"
}
],
"1.2": [
{
"comment_text": "",
"digests": {
"md5": "1c76b231a5d55815d150bce490174449",
"sha256": "206231400471845a09512f8e126b867a9958867fc8811a4c02be439a0cbc4724"
},
"downloads": -1,
"filename": "Reversi-1.2.tar.gz",
"has_sig": false,
"md5_digest": "1c76b231a5d55815d150bce490174449",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 49344,
"upload_time": "2013-12-04T09:32:47",
"url": "https://files.pythonhosted.org/packages/45/e2/48d6c35eb5356c20873280f442f83f6eb8856719f24f9a95ad4cbfc7d974/Reversi-1.2.tar.gz"
}
],
"1.2.1": [
{
"comment_text": "",
"digests": {
"md5": "6b83e139deb57750b6a825434e6b5f62",
"sha256": "1b5fcb7906ac93126e59dbee3422b8add2342409521de3ae8a7f9be5195b2049"
},
"downloads": -1,
"filename": "Reversi-1.2.1.tar.gz",
"has_sig": false,
"md5_digest": "6b83e139deb57750b6a825434e6b5f62",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 49667,
"upload_time": "2015-05-29T18:27:33",
"url": "https://files.pythonhosted.org/packages/77/27/f4ae815c61390111e02ee628de0b4fee39f7ba2d26855e601e10b71e2a58/Reversi-1.2.1.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "6b83e139deb57750b6a825434e6b5f62",
"sha256": "1b5fcb7906ac93126e59dbee3422b8add2342409521de3ae8a7f9be5195b2049"
},
"downloads": -1,
"filename": "Reversi-1.2.1.tar.gz",
"has_sig": false,
"md5_digest": "6b83e139deb57750b6a825434e6b5f62",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 49667,
"upload_time": "2015-05-29T18:27:33",
"url": "https://files.pythonhosted.org/packages/77/27/f4ae815c61390111e02ee628de0b4fee39f7ba2d26855e601e10b71e2a58/Reversi-1.2.1.tar.gz"
}
]
}