pygamefwk


Namepygamefwk JSON
Version 1.1.0 PyPI version JSON
download
home_pagehttps://github.com/fireing123/pygamefwk
Summarypygame framework
upload_time2025-08-11 14:50:30
maintainerNone
docs_urlNone
authorfireing123
requires_pythonNone
licenseNone
keywords pygame framework fireing123 pygame
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # pygamefwk

pygame physics의 물리 계산없고 Scene 저장 능력이 상승된 버전.

## 초기 맵 JSON 예시

### 기본 구조

```json
{
  "setting": {
    "tile": [
      ["tileset", false, ["assets/tile1.png", "assets/tile2.png", "assets/tile3.png"], 48]
    ],
    "surface": [
      ["surfaces", false, ["assets/surface1.png", "assets/surface2.png"], 1.0]
    ],
    "sprite_sheet": [
      ["player_sprites", true, "assets/player_sheet.png", 32, 16, 32],
      ["enemy_sprites", false, "assets/enemy_sheet.png", 64, 6, 64]
    ]
  },
  "objs": [
    {
      "GameObject": [
        {
          "name": "main_cam",
          "layer": 0,
          "tag": "camera",
          "visible": true,
          "position": [0, 0],
          "rotation": 0,
          "parent_name": "",
          "scale": 1.0
        }
      ]
    }
  ]
}
```

### 완전한 예시 (복사 붙여넣기용)

```json
{
  "setting": {
    "WIDTH": 800,
    "HEIGHT": 600,
    "FPS": 60,
    "tile": [
      ["tileset", false, ["assets/tiles/grass.png", "assets/tiles/stone.png", "assets/tiles/water.png"], 1.0]
    ],
    "surface": [
      ["surfaces", false, ["assets/surfaces/player.png", "assets/surfaces/enemy.png"], 1.0]
    ],
    "sprite_sheet": [
      ["player_sprites", true, "assets/sprites/player_sheet.png", 32, 16, 1.0],
      ["enemy_sprites", false, "assets/sprites/enemy_sheet.png", 64, 6, 0.5]
    ]
  },
  "objs": [
    {
      "GameObject": [
        {
          "name": "main_cam",
          "layer": 0,
          "tag": "camera",
          "visible": true,
          "position": [0, 0],
          "rotation": 0,
          "parent_name": "",
          "scale": 1.0
        }
      ]
    },
    {
      "Player": [
        {
          "name": "player",
          "layer": 1,
          "tag": "player",
          "visible": true,
          "position": [400, 300],
          "rotation": 0,
          "parent_name": "",
          "scale": 1.0
        }
      ]
    },
    {
      "Enemy": [
        {
          "name": "enemy1",
          "layer": 1,
          "tag": "enemy",
          "visible": true,
          "position": [200, 200],
          "rotation": 0,
          "parent_name": "",
          "scale": 1.0
        },
        {
          "name": "enemy2",
          "layer": 1,
          "tag": "enemy",
          "visible": true,
          "position": [600, 400],
          "rotation": 0,
          "parent_name": "",
          "scale": 1.0
        }
      ]
    }
  ]
}
```

### JSON 구조 설명

#### setting 섹션
- **WIDTH**: 화면 너비
- **HEIGHT**: 화면 높이
- **FPS**: 프레임 레이트
- **tile**: 타일 이미지들 (개별 파일)
  - `[name, is_hits, [paths...], scale]`
- **surface**: 서피스 이미지들 (개별 파일)
  - `[name, is_hits, [paths...], scale]`
- **sprite_sheet**: 스프라이트 시트 (하나의 파일에서 분할)
  - `[name, is_hits, path, tile_size, count, scale]`

#### objs 섹션
- 각 객체 타입별로 그룹화
- 각 객체는 다음 속성을 가짐:
  - **name**: 객체 이름 (고유해야 함)
  - **layer**: 레이어 번호 (0-9)
  - **tag**: 태그
  - **visible**: 보이기 여부
  - **position**: 위치 [x, y]
  - **rotation**: 회전 각도
  - **parent_name**: 부모 객체 이름 (없으면 "")
  - **scale**: 크기 배율

### 사용 방법

1. 위의 JSON 예시를 복사하여 `map.json` 파일로 저장
2. 필요한 이미지 파일들을 `assets/` 폴더에 배치
3. Scene에서 `load("map.json")` 호출

```python
from pygamefwk.scene import Scene

scene = Scene()
scene.load("map.json")
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/fireing123/pygamefwk",
    "name": "pygamefwk",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "pygame framework, fireing123, pygame",
    "author": "fireing123",
    "author_email": "gimd82368@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/a3/42/1a2d1fdc78a948939193469588267f9fff384ba0acee228a0d7c948ba36e/pygamefwk-1.1.0.tar.gz",
    "platform": null,
    "description": "# pygamefwk\r\n\r\npygame physics\uc758 \ubb3c\ub9ac \uacc4\uc0b0\uc5c6\uace0 Scene \uc800\uc7a5 \ub2a5\ub825\uc774 \uc0c1\uc2b9\ub41c \ubc84\uc804.\r\n\r\n## \ucd08\uae30 \ub9f5 JSON \uc608\uc2dc\r\n\r\n### \uae30\ubcf8 \uad6c\uc870\r\n\r\n```json\r\n{\r\n  \"setting\": {\r\n    \"tile\": [\r\n      [\"tileset\", false, [\"assets/tile1.png\", \"assets/tile2.png\", \"assets/tile3.png\"], 48]\r\n    ],\r\n    \"surface\": [\r\n      [\"surfaces\", false, [\"assets/surface1.png\", \"assets/surface2.png\"], 1.0]\r\n    ],\r\n    \"sprite_sheet\": [\r\n      [\"player_sprites\", true, \"assets/player_sheet.png\", 32, 16, 32],\r\n      [\"enemy_sprites\", false, \"assets/enemy_sheet.png\", 64, 6, 64]\r\n    ]\r\n  },\r\n  \"objs\": [\r\n    {\r\n      \"GameObject\": [\r\n        {\r\n          \"name\": \"main_cam\",\r\n          \"layer\": 0,\r\n          \"tag\": \"camera\",\r\n          \"visible\": true,\r\n          \"position\": [0, 0],\r\n          \"rotation\": 0,\r\n          \"parent_name\": \"\",\r\n          \"scale\": 1.0\r\n        }\r\n      ]\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\n### \uc644\uc804\ud55c \uc608\uc2dc (\ubcf5\uc0ac \ubd99\uc5ec\ub123\uae30\uc6a9)\r\n\r\n```json\r\n{\r\n  \"setting\": {\r\n    \"WIDTH\": 800,\r\n    \"HEIGHT\": 600,\r\n    \"FPS\": 60,\r\n    \"tile\": [\r\n      [\"tileset\", false, [\"assets/tiles/grass.png\", \"assets/tiles/stone.png\", \"assets/tiles/water.png\"], 1.0]\r\n    ],\r\n    \"surface\": [\r\n      [\"surfaces\", false, [\"assets/surfaces/player.png\", \"assets/surfaces/enemy.png\"], 1.0]\r\n    ],\r\n    \"sprite_sheet\": [\r\n      [\"player_sprites\", true, \"assets/sprites/player_sheet.png\", 32, 16, 1.0],\r\n      [\"enemy_sprites\", false, \"assets/sprites/enemy_sheet.png\", 64, 6, 0.5]\r\n    ]\r\n  },\r\n  \"objs\": [\r\n    {\r\n      \"GameObject\": [\r\n        {\r\n          \"name\": \"main_cam\",\r\n          \"layer\": 0,\r\n          \"tag\": \"camera\",\r\n          \"visible\": true,\r\n          \"position\": [0, 0],\r\n          \"rotation\": 0,\r\n          \"parent_name\": \"\",\r\n          \"scale\": 1.0\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"Player\": [\r\n        {\r\n          \"name\": \"player\",\r\n          \"layer\": 1,\r\n          \"tag\": \"player\",\r\n          \"visible\": true,\r\n          \"position\": [400, 300],\r\n          \"rotation\": 0,\r\n          \"parent_name\": \"\",\r\n          \"scale\": 1.0\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"Enemy\": [\r\n        {\r\n          \"name\": \"enemy1\",\r\n          \"layer\": 1,\r\n          \"tag\": \"enemy\",\r\n          \"visible\": true,\r\n          \"position\": [200, 200],\r\n          \"rotation\": 0,\r\n          \"parent_name\": \"\",\r\n          \"scale\": 1.0\r\n        },\r\n        {\r\n          \"name\": \"enemy2\",\r\n          \"layer\": 1,\r\n          \"tag\": \"enemy\",\r\n          \"visible\": true,\r\n          \"position\": [600, 400],\r\n          \"rotation\": 0,\r\n          \"parent_name\": \"\",\r\n          \"scale\": 1.0\r\n        }\r\n      ]\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\n### JSON \uad6c\uc870 \uc124\uba85\r\n\r\n#### setting \uc139\uc158\r\n- **WIDTH**: \ud654\uba74 \ub108\ube44\r\n- **HEIGHT**: \ud654\uba74 \ub192\uc774\r\n- **FPS**: \ud504\ub808\uc784 \ub808\uc774\ud2b8\r\n- **tile**: \ud0c0\uc77c \uc774\ubbf8\uc9c0\ub4e4 (\uac1c\ubcc4 \ud30c\uc77c)\r\n  - `[name, is_hits, [paths...], scale]`\r\n- **surface**: \uc11c\ud53c\uc2a4 \uc774\ubbf8\uc9c0\ub4e4 (\uac1c\ubcc4 \ud30c\uc77c)\r\n  - `[name, is_hits, [paths...], scale]`\r\n- **sprite_sheet**: \uc2a4\ud504\ub77c\uc774\ud2b8 \uc2dc\ud2b8 (\ud558\ub098\uc758 \ud30c\uc77c\uc5d0\uc11c \ubd84\ud560)\r\n  - `[name, is_hits, path, tile_size, count, scale]`\r\n\r\n#### objs \uc139\uc158\r\n- \uac01 \uac1d\uccb4 \ud0c0\uc785\ubcc4\ub85c \uadf8\ub8f9\ud654\r\n- \uac01 \uac1d\uccb4\ub294 \ub2e4\uc74c \uc18d\uc131\uc744 \uac00\uc9d0:\r\n  - **name**: \uac1d\uccb4 \uc774\ub984 (\uace0\uc720\ud574\uc57c \ud568)\r\n  - **layer**: \ub808\uc774\uc5b4 \ubc88\ud638 (0-9)\r\n  - **tag**: \ud0dc\uadf8\r\n  - **visible**: \ubcf4\uc774\uae30 \uc5ec\ubd80\r\n  - **position**: \uc704\uce58 [x, y]\r\n  - **rotation**: \ud68c\uc804 \uac01\ub3c4\r\n  - **parent_name**: \ubd80\ubaa8 \uac1d\uccb4 \uc774\ub984 (\uc5c6\uc73c\uba74 \"\")\r\n  - **scale**: \ud06c\uae30 \ubc30\uc728\r\n\r\n### \uc0ac\uc6a9 \ubc29\ubc95\r\n\r\n1. \uc704\uc758 JSON \uc608\uc2dc\ub97c \ubcf5\uc0ac\ud558\uc5ec `map.json` \ud30c\uc77c\ub85c \uc800\uc7a5\r\n2. \ud544\uc694\ud55c \uc774\ubbf8\uc9c0 \ud30c\uc77c\ub4e4\uc744 `assets/` \ud3f4\ub354\uc5d0 \ubc30\uce58\r\n3. Scene\uc5d0\uc11c `load(\"map.json\")` \ud638\ucd9c\r\n\r\n```python\r\nfrom pygamefwk.scene import Scene\r\n\r\nscene = Scene()\r\nscene.load(\"map.json\")\r\n```\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "pygame framework",
    "version": "1.1.0",
    "project_urls": {
        "Homepage": "https://github.com/fireing123/pygamefwk"
    },
    "split_keywords": [
        "pygame framework",
        " fireing123",
        " pygame"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5503773e61b03a11eb94b93260f7fbb65f130de8d9722a52b2b2798776c2c6ea",
                "md5": "86d8ad7237d8671c1e59aaa4b6731d9a",
                "sha256": "22c1f13dfb92a657c11c87d5c0f2fe2db6989b5622c54b326571312f8e74bd05"
            },
            "downloads": -1,
            "filename": "pygamefwk-1.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "86d8ad7237d8671c1e59aaa4b6731d9a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 35556,
            "upload_time": "2025-08-11T14:50:28",
            "upload_time_iso_8601": "2025-08-11T14:50:28.495586Z",
            "url": "https://files.pythonhosted.org/packages/55/03/773e61b03a11eb94b93260f7fbb65f130de8d9722a52b2b2798776c2c6ea/pygamefwk-1.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a3421a2d1fdc78a948939193469588267f9fff384ba0acee228a0d7c948ba36e",
                "md5": "a907cd451cf7fea690debe0abaafcf2e",
                "sha256": "07fc2b4540f15edb1d20f88aad61ae8871432deb82f53a35ba7781be6a5a1c67"
            },
            "downloads": -1,
            "filename": "pygamefwk-1.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "a907cd451cf7fea690debe0abaafcf2e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 26312,
            "upload_time": "2025-08-11T14:50:30",
            "upload_time_iso_8601": "2025-08-11T14:50:30.085289Z",
            "url": "https://files.pythonhosted.org/packages/a3/42/1a2d1fdc78a948939193469588267f9fff384ba0acee228a0d7c948ba36e/pygamefwk-1.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-11 14:50:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "fireing123",
    "github_project": "pygamefwk",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "pygamefwk"
}
        
Elapsed time: 1.50955s