# Russian Roulette Lib
*Документация на русском ниже*
### Installing
`pip install rusrul_lib`
### Using
`import rusrul_lib`
OR (recommended):
`from rusrul_lib import *`
### Features
Revolver can have different ammo count and clip size. Here are different ways to create the same 1/6 revolver:
```py
rev1 = revolver()
rev2 = revolver(1, 6)
rev3 = revolver(clipSize=6)
```
Revolver has it's own clip. It is used to determine the next shooting attempt. There are different ways to check the clip. You can just get it as array or have a custom representation.
```py
rev = revolver()
print(rev.clip) # [1, 0, 0, 0, 0, 0] - position of "1" (bullet) is random
print(rev) # "#....."
rev.strAmmo = "A" # change the way ammo is printed
rev.strEmpty = "-" # change the way empty slot is printed
print(rev) # "A-----"
rev.reprVisualise = False # disable visual representation
print(rev) # "revolver(1, 6) = [1, 0, 0, 0, 0, 0]"
```
Main functions:
- `revolver.shoot()` - makes a shot, returning the first item in clip and replacing it with 0.
- `revolver.spin(spinPower)` - spins the clip. Spin power becomes random if 0 or unless given as argumen. Supports negative values.
- `revolver.load(pattern)` - reloads revolver with given pattern. Loads full ammo by default. Can accept values different from 1 and 0, if your code can handle other ammo types. Takes pattern as string and converts it into array of ints used as new clip.
- `revolver.ammoCount()` - counts all values except 0 in clip.
Advanced usage:
- `revolver.allowStrPattern = True` - Makes load() funcion not convert pattern to ints. If enabled, turns off ammoCount() and onShoot. \_\_str\_\_() returns clip directly instead of using strAmmo and strEmpty. Can be buggy.
- `revolver.onShoot = "print('Hello world')"` - Custom piece of code that will be executed when revolver.shoot() returns non-zero value.
## На русском
### Установка
Ну я надеюсь ты знаешь как скачивать библиотеки, раз уж зашёл на PyPI.
`pip install rusrul_lib`
Там буквально в левом верхнем углу написано.
### Использование
Просто берёшь и импортируешь, что сложного?
`import rusrul_lib`
ИЛИ (советую):
`from rusrul_lib import *`
### Функционал
У револьвера есть барабан. В барабане есть патроны. Логично? Одинаковые револьверы 1/6 можно создать вот так:
```py
rev1 = revolver()
rev2 = revolver(1, 6)
rev3 = revolver(clipSize=6)
```
У каждого револьвера свой барабан. Револьвер стреляет первым патроном в барабане и никаким другим. Подсмотреть можно, хоть и это убирает весь интерес настоящей русской рулетки:
```py
rev = revolver()
print(rev.clip) # [1, 0, 0, 0, 0, 0] - не всегда пуля будет первая. Но у тебя будет
print(rev) # "#....."
rev.strAmmo = "A" # Поменять как показываются патроны
rev.strEmpty = "-" # Поменять как показывается пустая ячейка
print(rev) # "A-----"
rev.reprVisualise = False # Выключить визуал
print(rev) # "revolver(1, 6) = [1, 0, 0, 0, 0, 0]"
```
Основные функции:
- `revolver.shoot()` - делает выстрел и возвращает первый патрон из барабана, заменяя его на 0.
- `revolver.spin(spinPower)` - крутит барабан. Сила прокрута случайная если равна 0, или если не задана.
- `revolver.load(pattern)` - перезаряжает револьвер по заданному паттерну. Заряжает полный барабан, если паттерн не задан. Принимает не только 0 и 1, если ваш код допускает другие виды патронов. Принимает паттерн в виде строки и конвертирует его в массив чисел.
- `revolver.ammoCount()` - считает все цифры кроме 0 в барабане.
Продвинутое использование:
- `revolver.allowStrPattern = True` - Выключает конвертирование в числа у функции load(). Также отключает ammoCount() и onShoot. \_\_str\_\_() возвращает барабан, игрорируя strAmmo и strEmpty. Может вызывать баги.
- `revolver.onShoot = "print('Hello world')"` - Кастомный кусок кода, который будет выполняться если revolver.shoot() возвращает не 0.
Raw data
{
"_id": null,
"home_page": null,
"name": "rusrul-lib",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "silly, random, russian roulette, \u0440\u0443\u0441\u0441\u043a\u0430\u044f \u0440\u0443\u043b\u0435\u0442\u043a\u0430",
"author": null,
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/d2/a6/8388534f3f4d865deff44d84d17873eee6455efb68c8d6c7c038ace714cc/rusrul_lib-1.1.tar.gz",
"platform": null,
"description": "# Russian Roulette Lib\r\n*\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u043d\u0438\u0436\u0435*\r\n### Installing\r\n`pip install rusrul_lib`\r\n### Using\r\n`import rusrul_lib`\r\nOR (recommended):\r\n`from rusrul_lib import *`\r\n### Features\r\nRevolver can have different ammo count and clip size. Here are different ways to create the same 1/6 revolver:\r\n```py\r\nrev1 = revolver()\r\nrev2 = revolver(1, 6)\r\nrev3 = revolver(clipSize=6)\r\n```\r\nRevolver has it's own clip. It is used to determine the next shooting attempt. There are different ways to check the clip. You can just get it as array or have a custom representation.\r\n```py\r\nrev = revolver()\r\nprint(rev.clip) # [1, 0, 0, 0, 0, 0] - position of \"1\" (bullet) is random\r\nprint(rev) # \"#.....\"\r\nrev.strAmmo = \"A\" # change the way ammo is printed\r\nrev.strEmpty = \"-\" # change the way empty slot is printed\r\nprint(rev) # \"A-----\"\r\nrev.reprVisualise = False # disable visual representation\r\nprint(rev) # \"revolver(1, 6) = [1, 0, 0, 0, 0, 0]\"\r\n```\r\nMain functions:\r\n- `revolver.shoot()` - makes a shot, returning the first item in clip and replacing it with 0.\r\n- `revolver.spin(spinPower)` - spins the clip. Spin power becomes random if 0 or unless given as argumen. Supports negative values.\r\n- `revolver.load(pattern)` - reloads revolver with given pattern. Loads full ammo by default. Can accept values different from 1 and 0, if your code can handle other ammo types. Takes pattern as string and converts it into array of ints used as new clip.\r\n- `revolver.ammoCount()` - counts all values except 0 in clip.\r\n\r\nAdvanced usage:\r\n- `revolver.allowStrPattern = True` - Makes load() funcion not convert pattern to ints. If enabled, turns off ammoCount() and onShoot. \\_\\_str\\_\\_() returns clip directly instead of using strAmmo and strEmpty. Can be buggy.\r\n- `revolver.onShoot = \"print('Hello world')\"` - Custom piece of code that will be executed when revolver.shoot() returns non-zero value.\r\n\r\n## \u041d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c\r\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\r\n\u041d\u0443 \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u0442\u044b \u0437\u043d\u0430\u0435\u0448\u044c \u043a\u0430\u043a \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0440\u0430\u0437 \u0443\u0436 \u0437\u0430\u0448\u0451\u043b \u043d\u0430 PyPI.\r\n`pip install rusrul_lib`\r\n\u0422\u0430\u043c \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0432 \u043b\u0435\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e.\r\n### \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\r\n\u041f\u0440\u043e\u0441\u0442\u043e \u0431\u0435\u0440\u0451\u0448\u044c \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0448\u044c, \u0447\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e?\r\n`import rusrul_lib`\r\n\u0418\u041b\u0418 (\u0441\u043e\u0432\u0435\u0442\u0443\u044e):\r\n`from rusrul_lib import *`\r\n### \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\r\n\u0423 \u0440\u0435\u0432\u043e\u043b\u044c\u0432\u0435\u0440\u0430 \u0435\u0441\u0442\u044c \u0431\u0430\u0440\u0430\u0431\u0430\u043d. \u0412 \u0431\u0430\u0440\u0430\u0431\u0430\u043d\u0435 \u0435\u0441\u0442\u044c \u043f\u0430\u0442\u0440\u043e\u043d\u044b. \u041b\u043e\u0433\u0438\u0447\u043d\u043e? \u041e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0440\u0435\u0432\u043e\u043b\u044c\u0432\u0435\u0440\u044b 1/6 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a:\r\n```py\r\nrev1 = revolver()\r\nrev2 = revolver(1, 6)\r\nrev3 = revolver(clipSize=6)\r\n```\r\n\u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0435\u0432\u043e\u043b\u044c\u0432\u0435\u0440\u0430 \u0441\u0432\u043e\u0439 \u0431\u0430\u0440\u0430\u0431\u0430\u043d. \u0420\u0435\u0432\u043e\u043b\u044c\u0432\u0435\u0440 \u0441\u0442\u0440\u0435\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u0430\u0442\u0440\u043e\u043d\u043e\u043c \u0432 \u0431\u0430\u0440\u0430\u0431\u0430\u043d\u0435 \u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u043c \u0434\u0440\u0443\u0433\u0438\u043c. \u041f\u043e\u0434\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043c\u043e\u0436\u043d\u043e, \u0445\u043e\u0442\u044c \u0438 \u044d\u0442\u043e \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u0440\u0443\u0441\u0441\u043a\u043e\u0439 \u0440\u0443\u043b\u0435\u0442\u043a\u0438:\r\n```py\r\nrev = revolver()\r\nprint(rev.clip) # [1, 0, 0, 0, 0, 0] - \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0443\u043b\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0432\u0430\u044f. \u041d\u043e \u0443 \u0442\u0435\u0431\u044f \u0431\u0443\u0434\u0435\u0442\r\nprint(rev) # \"#.....\"\r\nrev.strAmmo = \"A\" # \u041f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0442\u0440\u043e\u043d\u044b\r\nrev.strEmpty = \"-\" # \u041f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430\r\nprint(rev) # \"A-----\"\r\nrev.reprVisualise = False # \u0412\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\r\nprint(rev) # \"revolver(1, 6) = [1, 0, 0, 0, 0, 0]\"\r\n```\r\n\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:\r\n- `revolver.shoot()` - \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u044b\u0441\u0442\u0440\u0435\u043b \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0442\u0440\u043e\u043d \u0438\u0437 \u0431\u0430\u0440\u0430\u0431\u0430\u043d\u0430, \u0437\u0430\u043c\u0435\u043d\u044f\u044f \u0435\u0433\u043e \u043d\u0430 0.\r\n- `revolver.spin(spinPower)` - \u043a\u0440\u0443\u0442\u0438\u0442 \u0431\u0430\u0440\u0430\u0431\u0430\u043d. \u0421\u0438\u043b\u0430 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0430\u044f \u0435\u0441\u043b\u0438 \u0440\u0430\u0432\u043d\u0430 0, \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u0430.\r\n- `revolver.load(pattern)` - \u043f\u0435\u0440\u0435\u0437\u0430\u0440\u044f\u0436\u0430\u0435\u0442 \u0440\u0435\u0432\u043e\u043b\u044c\u0432\u0435\u0440 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0443. \u0417\u0430\u0440\u044f\u0436\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0431\u0430\u0440\u0430\u0431\u0430\u043d, \u0435\u0441\u043b\u0438 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043d\u0435 \u0437\u0430\u0434\u0430\u043d. \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e 0 \u0438 1, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448 \u043a\u043e\u0434 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0438\u0434\u044b \u043f\u0430\u0442\u0440\u043e\u043d\u043e\u0432. \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 \u0447\u0438\u0441\u0435\u043b.\r\n- `revolver.ammoCount()` - \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0432\u0441\u0435 \u0446\u0438\u0444\u0440\u044b \u043a\u0440\u043e\u043c\u0435 0 \u0432 \u0431\u0430\u0440\u0430\u0431\u0430\u043d\u0435.\r\n\r\n\u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435:\r\n- `revolver.allowStrPattern = True` - \u0412\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0447\u0438\u0441\u043b\u0430 \u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 load(). \u0422\u0430\u043a\u0436\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 ammoCount() \u0438 onShoot. \\_\\_str\\_\\_() \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0430\u0440\u0430\u0431\u0430\u043d, \u0438\u0433\u0440\u043e\u0440\u0438\u0440\u0443\u044f strAmmo \u0438 strEmpty. \u041c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u0430\u0433\u0438.\r\n- `revolver.onShoot = \"print('Hello world')\"` - \u041a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u043a\u0443\u0441\u043e\u043a \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0435\u0441\u043b\u0438 revolver.shoot() \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435 0.\r\n",
"bugtrack_url": null,
"license": null,
"summary": "Adds a revolver class for playing russian roulette with python.",
"version": "1.1",
"project_urls": null,
"split_keywords": [
"silly",
" random",
" russian roulette",
" \u0440\u0443\u0441\u0441\u043a\u0430\u044f \u0440\u0443\u043b\u0435\u0442\u043a\u0430"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2e8b7b8bedb9a3cc12ad8adb80e309a1a39714261171199e970c70925fe69c6d",
"md5": "d4ca687610f466526fc8180db4c077e1",
"sha256": "b98a7e3c0cbbdc5bc2031a84c93e55238237847de02e1c7d080fcd8ea8c539c4"
},
"downloads": -1,
"filename": "rusrul_lib-1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d4ca687610f466526fc8180db4c077e1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 4143,
"upload_time": "2025-03-03T20:37:34",
"upload_time_iso_8601": "2025-03-03T20:37:34.683239Z",
"url": "https://files.pythonhosted.org/packages/2e/8b/7b8bedb9a3cc12ad8adb80e309a1a39714261171199e970c70925fe69c6d/rusrul_lib-1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d2a68388534f3f4d865deff44d84d17873eee6455efb68c8d6c7c038ace714cc",
"md5": "2b8b237c02b294b7d6115bda63a9d4fe",
"sha256": "34c553411961e0025cb1bc915f3c26d0f97d6392c2fdca27c54e6d89eb2ff494"
},
"downloads": -1,
"filename": "rusrul_lib-1.1.tar.gz",
"has_sig": false,
"md5_digest": "2b8b237c02b294b7d6115bda63a9d4fe",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4154,
"upload_time": "2025-03-03T20:37:36",
"upload_time_iso_8601": "2025-03-03T20:37:36.168915Z",
"url": "https://files.pythonhosted.org/packages/d2/a6/8388534f3f4d865deff44d84d17873eee6455efb68c8d6c7c038ace714cc/rusrul_lib-1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-03-03 20:37:36",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "rusrul-lib"
}