{ "info": { "author": "Fondacija Petlja", "author_email": "team@petlja.org", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "PygameBg - Pygame Toolbox for Beginners by Petlja\n=================================================\n\nPygameBg is a small Python package aimed to reduce boilerplate code in simple Pygame programs, primarily initialization code and main loop.\n\nPygameBg should make Pygame learning curve more gradual for beginner programmers, but without losing focus from the pure Pygame API. \n\nWhen we compare Python with C-like programming languages, one of the positive features we usually mention is a single line \"Hellow World!\" example::\n\n print('Hellow World!')\n\nPygame is not pythonic enough here. A proper \"Draw circle\" program looks like::\n\n import pygame as pg\n\n pg.init()\n surface = pg.display.set_mode((400,400))\n pg.display.set_caption(\"Blue circle\")\n\n pg.draw.circle(surface, pg.Color(\"blue\"), (200,200), 100)\n\n pg.display.update()\n while pg.event.wait().type != pg.QUIT:\n pass\n pg.quit()\n\n\nThe central line of code in this example is::\n\n pg.draw.circle(surface, pg.Color(\"blue\"), (200,200),100)\n\nWe could say that the first three lines (excluding ``import``) opens a window, and the last four lines waits for user to quit, but we would not like to burden beginners with details of those boilerplate statements.\n\nHere is an equivalent example that use PatljaBg::\n\n import pygame as pg\n import pygamebg\n\n surface = pygamebg.open_window(400, 400, \"Blue circle\")\n\n pg.draw.circle(surface, pg.Color(\"blue\"), (200,200), 100)\n\n pygamebg.wait_loop()\n\nThis is much more readable first example for beginners and easier to explain: We open window, then draw blue circle and then wait for user to quit.\n\nBesides ``wait_loop``, PygameBg supports ``frame_loop`` and ``event_loop``.\n\nHere is example that use ``frame_loop``::\n\n import pygame as pg\n import pygamebg\n\n surface = pygamebg.open_window(300, 300, \"Read keyboard state\")\n\n x, y = 150, 150\n\n def update():\n global x, y\n surface.fill(pg.Color(\"white\"))\n pressed = pg.key.get_pressed()\n if pressed[pg.K_RIGHT]:\n x += 1\n if pressed[pg.K_LEFT]:\n x -= 1\n if pressed[pg.K_DOWN]:\n y += 1\n if pressed[pg.K_UP]:\n y -= 1\n pg.draw.circle(surface , pg.Color(\"red\"), (x, y), 30)\n\n pygamebg.frame_loop(30, update)\n\nSo, frame loop calls ``update`` function once per frame and may optionally call an event handler::\n\n import pygame as pg\n import pygamebg\n\n width, height = 500, 300\n surface = pygamebg.open_window(width, width, \"Increasing and decreasing speed\")\n pg.key.set_repeat(10,10)\n\n fps = 30\n x, y = 150, 150\n vx, vy = 0, 0\n\n def update():\n global x,y\n x = (x + vx/fps) % width\n y = (y + vy/fps) % height\n\n surface.fill(pg.Color(\"white\"))\n color = pg.Color(\"red\")\n pg.draw.circle(surface, color, (int(x), int(y)), 30)\n\n def handle_event(d):\n global vx, vy\n if d.type == pg.KEYDOWN:\n if d.key == pg.K_RIGHT:\n vx += 1\n elif d.key == pg.K_LEFT:\n vx -= 1\n elif d.key == pg.K_DOWN:\n vy += 1\n elif d.key == pg.K_UP:\n vy -= 1\n\n pygamebg.frame_loop(fps, update, handle_event)\n\n\nWe can also use a dictionary argument to specify event handlers for specific event types::\n\n def keydown(e):\n global vx, vy\n if e.key == pg.K_RIGHT:\n vx += 1\n elif e.key == pg.K_LEFT:\n vx -= 1\n elif e.key == pg.K_DOWN:\n vy += 1\n elif e.key == pg.K_UP:\n vy -= 1\n\n pygamebg.frame_loop(fps, update, {pg.KEYDOWN: keydown})\n\nFrame loop can handle events, but it is always frame driven: it updates on each frame and handles pending events before each update.\n\nA pure event loop handles events immediately when they occurred and triggers repaint when needed (when an event handler returns ``True``)::\n\n import pygame as pg\n import pygamebg\n\n surface = pygamebg.open_window(500, 500, \"Keyboard and mouse events\")\n pg.key.set_repeat(10,10)\n\n x, y = 150, 150\n\n def handle_event(e):\n global x, y\n if e.type == pg.MOUSEBUTTONDOWN:\n x,y = e.pos\n return True\n if e.type == pg.KEYDOWN:\n if e.key == pg.K_RIGHT:\n x += 1\n elif e.key == pg.K_LEFT:\n x -= 1\n elif e.key == pg.K_DOWN:\n y += 1\n elif e.key == pg.K_UP:\n y -= 1\n else:\n return False\n return True\n return False\n\n def paint():\n surface.fill(pg.Color(\"white\"))\n pg.draw.circle(surface, pg.Color(\"blue\"), (x, y), 50)\n\n pygamebg.event_loop(paint, handle_event)\n\n\n\nA dictionary argument can also be used to specify event handlers for specific event types::\n\n import pygame as pg\n import pygamebg\n\n surface = pygamebg.open_window(500, 500, \"Keyboard and mouse events\")\n pg.key.set_repeat(10,10)\n\n x, y = 150, 150\n\n def clicked(e):\n global x, y\n x,y = e.pos\n return True\n\n def keypressed(e):\n global x,y\n if e.key == pg.K_RIGHT:\n x += 1\n elif e.key == pg.K_LEFT:\n x -= 1\n elif e.key == pg.K_DOWN:\n y += 1\n elif e.key == pg.K_UP:\n y -= 1\n else:\n return False\n return True\n\n def paint():\n surface.fill(pg.Color(\"white\"))\n pg.draw.circle(surface, pg.Color(\"blue\"), (x, y), 50)\n\n pygamebg.event_loop(paint, {pg.MOUSEBUTTONDOWN:clicked, pg.KEYDOWN:keypressed})\n\n\nSource files of all examples are available `here \n`_.\n\nHow to install PygameBg\n-----------------------\n\nUse ``pip`` to install PygameBg::\n\n pip3 install pygamebg\n\nIf you use Windows and previous command does not work, try::\n\n py -3 -m pip install pygamebg\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Petlja/PygameBg", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "PygameBg", "package_url": "https://pypi.org/project/PygameBg/", "platform": "", "project_url": "https://pypi.org/project/PygameBg/", "project_urls": { "Homepage": "https://github.com/Petlja/PygameBg" }, "release_url": "https://pypi.org/project/PygameBg/0.9.3/", "requires_dist": [ "pygame (>=1.9.6)" ], "requires_python": ">=3", "summary": "Pygame Toolbox for Beginners by Petlja", "version": "0.9.3" }, "last_serial": 5738267, "releases": { "0.9.0": [ { "comment_text": "", "digests": { "md5": "930fc82562e8dd3c17b1a04d9541cf96", "sha256": "792213a34f6f2c09483d558930bf9d190b08415912d8eba130398036631adbea" }, "downloads": -1, "filename": "PygameBg-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "930fc82562e8dd3c17b1a04d9541cf96", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 4446, "upload_time": "2019-08-25T14:19:44", "url": "https://files.pythonhosted.org/packages/19/61/dc3d49537887f57a19296fc79d991e6e4ee67d8869e3eefcfd71f732e970/PygameBg-0.9.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48a02d7a7255d947a2d39c23f5e77c3b", "sha256": "dfc3b60ea2995adcf18ad02cbd1a371c07a52e601bac463f3e726d2efeae2f61" }, "downloads": -1, "filename": "PygameBg-0.9.0.tar.gz", "has_sig": false, "md5_digest": "48a02d7a7255d947a2d39c23f5e77c3b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3851, "upload_time": "2019-08-25T14:19:46", "url": "https://files.pythonhosted.org/packages/0f/bc/00788ae3c4f3779e537fe8e810723f3bdd1d28b27dc5e5f830877ba41cae/PygameBg-0.9.0.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "0fc4d93f890b06fd76dcc08ec39afdf9", "sha256": "fd3e6357abadc1b3f690a30f9bee821af2ca3f0bbf58d21c92fcacb4a177b13c" }, "downloads": -1, "filename": "PygameBg-0.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0fc4d93f890b06fd76dcc08ec39afdf9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 4460, "upload_time": "2019-08-25T17:38:16", "url": "https://files.pythonhosted.org/packages/d3/19/f5ff84561088e998baa325d59362739ffdef1d8a247317a1166d02f635d6/PygameBg-0.9.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bda127f51c659caa374360d20a99298f", "sha256": "2536126e0dda2f2863f3cee3bec2a637a26417ffd36b14c1b90c724189a0f1a5" }, "downloads": -1, "filename": "PygameBg-0.9.1.tar.gz", "has_sig": false, "md5_digest": "bda127f51c659caa374360d20a99298f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3891, "upload_time": "2019-08-25T17:38:19", "url": "https://files.pythonhosted.org/packages/b8/4a/e122551eee96247f22f03c38e1b403f46bf03171111134a2daa675d35231/PygameBg-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "b86ba96b5db1fa0ce766a75b46a11f1a", "sha256": "3acf330232ddb033b7f541050cb2e5860747b2e00fa1dd356ad192b2b4379752" }, "downloads": -1, "filename": "PygameBg-0.9.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b86ba96b5db1fa0ce766a75b46a11f1a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 4541, "upload_time": "2019-08-27T16:26:59", "url": "https://files.pythonhosted.org/packages/b7/f4/90c3a2adb6a7526a58013a1d574ba0cc0363c81dbb02f7a1ace7c0afd0de/PygameBg-0.9.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "681b1de9b6ba87a277413c952c7306bc", "sha256": "12573a8ae58299c3ee07511313ea5f56fbeeaad7904d2c8281b56568d67939f1" }, "downloads": -1, "filename": "PygameBg-0.9.2.tar.gz", "has_sig": false, "md5_digest": "681b1de9b6ba87a277413c952c7306bc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4003, "upload_time": "2019-08-27T16:27:04", "url": "https://files.pythonhosted.org/packages/4d/3b/bbf3ee72c67035659b17597cac644876b67f9eba28aa9f9ea6f861c0b4b6/PygameBg-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "be17bb6f6e6ffb0a1fdb8883a36e29c2", "sha256": "ce9005f38c6c62f2557a4450ed1a438ffb06c2b5df878bc00f642d7495f751f2" }, "downloads": -1, "filename": "PygameBg-0.9.3-py3-none-any.whl", "has_sig": false, "md5_digest": "be17bb6f6e6ffb0a1fdb8883a36e29c2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 4534, "upload_time": "2019-08-27T17:27:43", "url": "https://files.pythonhosted.org/packages/79/b5/e8f65113858c097f197ae7c3c58b62fe89e1afd948aa28831680e6366646/PygameBg-0.9.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "258d96cabb49569e468bb2f78b5cf3b0", "sha256": "840d377c9c4f22b67050af4a0b0e822a12a1cee7ba15997c2be8f4964486f86f" }, "downloads": -1, "filename": "PygameBg-0.9.3.tar.gz", "has_sig": false, "md5_digest": "258d96cabb49569e468bb2f78b5cf3b0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4000, "upload_time": "2019-08-27T17:27:45", "url": "https://files.pythonhosted.org/packages/7b/f4/b69b351154716decc4b131a0bc5bca339fd5fed70e3f944d9fc9a4758deb/PygameBg-0.9.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "be17bb6f6e6ffb0a1fdb8883a36e29c2", "sha256": "ce9005f38c6c62f2557a4450ed1a438ffb06c2b5df878bc00f642d7495f751f2" }, "downloads": -1, "filename": "PygameBg-0.9.3-py3-none-any.whl", "has_sig": false, "md5_digest": "be17bb6f6e6ffb0a1fdb8883a36e29c2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 4534, "upload_time": "2019-08-27T17:27:43", "url": "https://files.pythonhosted.org/packages/79/b5/e8f65113858c097f197ae7c3c58b62fe89e1afd948aa28831680e6366646/PygameBg-0.9.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "258d96cabb49569e468bb2f78b5cf3b0", "sha256": "840d377c9c4f22b67050af4a0b0e822a12a1cee7ba15997c2be8f4964486f86f" }, "downloads": -1, "filename": "PygameBg-0.9.3.tar.gz", "has_sig": false, "md5_digest": "258d96cabb49569e468bb2f78b5cf3b0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4000, "upload_time": "2019-08-27T17:27:45", "url": "https://files.pythonhosted.org/packages/7b/f4/b69b351154716decc4b131a0bc5bca339fd5fed70e3f944d9fc9a4758deb/PygameBg-0.9.3.tar.gz" } ] }