Skip to main content

A neat little thing... with nightly updates

Project description

r3shape-labs
PyPi Package version
GitHub Stars License

r3frame2 is a collection of modules, classes and utilities designed to bring structure to your next project, without hindrance.
Providing a robust and extensible development framework for many kinds of multimedia applications. Leveraging pygame-ce, you get the simplicity of python minus the hair-pulling.

Installation

Install r3frame via pip:

pip install r3frame2

r3 Playground

Once installed, you can run the playground demo by typing:

r3playground

This will launch an interactive example that is actively maintained and used to showcase r3frame's capabilities.

Quick Start

Getting started is as simple as the following code:

import r3frame2 as r3

class MyScene(r3.app.R3scene):
    def __init__(self, app):
        # to begin, lets configure the world in this scene
        # for we pass it an instance of a desired partitioning system configuration
        super().__init__(app, r3.resource.R3worldConfig(r3.resource.R3gridConfig()))

    def init(self):
        # load an R3entity
        self.database.load_entity("player", [100, 100])
        
        # query said entity and toggle physics on it
        self.player = self.database.query_entity("player")
        self.physics.toggle_transform(self.player)

        # insert our entities into our world's partition
        self.world.partition.insert(self.player)
    
    def exit(self): pass

    def events(self):
        # handle movement along the x-axis
        if self.app.events.key_held(self.app.keyboard.A):
            self.physics.set_velocity(self.player, dx=-100)
        if self.app.events.key_held(self.app.keyboard.D):
            self.physics.set_velocity(self.player, dx=100)

        # handle movement along the y-axis
        if self.app.events.key_held(self.app.keyboard.W):
            self.physics.set_velocity(self.player, dy=-100)
        if self.app.events.key_held(self.app.keyboard.S):
            self.physics.set_velocity(self.player, dy=100)

    def update(self, dt: float): pass

    def render(self):
        # queue a render call for our player (0 = Opaque Render Phase)
        self.renderer.queue(r3.resource.R3renderCall(0, self.player.pos, self.player.surface))

class MyApp(r3.app.R3app):
    def __init__(self):
        super().__init__(title="MyApp")

    def init(self):
        self.add_scene("playground", MyScene)
        self.set_scene("playground")

    def exit(self): pass

MyApp().run()

Contributors

Contributing

Want to help improve r3frame? Feel free to contribute by submitting issues, suggesting features, or making pull requests!

License

r3frame is open-source under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

r3frame2-0.0.7.post5.tar.gz (37.3 kB view details)

Uploaded Source

File details

Details for the file r3frame2-0.0.7.post5.tar.gz.

File metadata

  • Download URL: r3frame2-0.0.7.post5.tar.gz
  • Upload date:
  • Size: 37.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for r3frame2-0.0.7.post5.tar.gz
Algorithm Hash digest
SHA256 a9bc7fbff34977511f94148361c2c89f51dc633100815e53f72031b44adcc270
MD5 98b26fa2347d4fb4ab61bd889c153c4d
BLAKE2b-256 de67aa6b8c2452498ce74297ea586d2e49949971bae8d8921d08ef3627f60f4d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page