ATProto Browser

ATProto Browser

Experimental browser for the Atmosphere

Record data

{
  "uri": "at://did:plc:tydxsfc7tumboebjgi5df2ew/li.plonk.paste/3llxweghvhk2p",
  "cid": "bafyreihsmqu66sd6nkuycgw3oau367a37mp6apzwvph2cvovlwksjmohs4",
  "value": {
    "code": "#include <SDL2/SDL.h>\r\n#include <stdbool.h>\r\n#include <math.h>\r\n\r\n#define SCREEN_WIDTH 800\r\n#define SCREEN_HEIGHT 600\r\n#define GRAVITY 0.5\r\n#define JUMP_FORCE -12\r\n#define MOVE_SPEED 5\r\n\r\ntypedef struct {\r\n    float x, y;\r\n    float dx, dy;\r\n    bool on_ground;\r\n} Player;\r\n\r\ntypedef struct {\r\n    SDL_EventType type;\r\n    SDL_Keycode key;\r\n} EventSignal;\r\n\r\ntypedef struct {\r\n    Player player;\r\n    bool running;\r\n} GameState;\r\n\r\ntypedef void (*StateTransformer)(GameState*, Uint32);\r\ntypedef void (*EventHander)(GameState*, EventSignal);\r\n\r\n// FRP-style event stream processing\r\nvoid process_events(EventHander handler, GameState* state) {\r\n    SDL_Event e;\r\n    while (SDL_PollEvent(&e)) {\r\n        EventSignal signal = {e.type, e.key.keysym.sym};\r\n        handler(state, signal);\r\n    }\r\n}\r\n\r\n// FRP-style state transformation\r\nvoid update_state(GameState* state, Uint32 delta_time) {\r\n    Player* p = &state->player;\r\n    \r\n    // Apply gravity\r\n    p->dy += GRAVITY;\r\n    p->y += p->dy;\r\n    \r\n    // Ground collision\r\n    if (p->y > SCREEN_HEIGHT - 40) {\r\n        p->y = SCREEN_HEIGHT - 40;\r\n        p->dy = 0;\r\n        p->on_ground = true;\r\n    }\r\n}\r\n\r\n// Event handler with FRP-style signal processing\r\nvoid handle_input(GameState* state, EventSignal signal) {\r\n    Player* p = &state->player;\r\n    \r\n    switch (signal.type) {\r\n        case SDL_QUIT:\r\n            state->running = false;\r\n            break;\r\n        case SDL_KEYDOWN:\r\n            switch (signal.key) {\r\n                case SDLK_SPACE:\r\n                    if (p->on_ground) {\r\n                        p->dy = JUMP_FORCE;\r\n                        p->on_ground = false;\r\n                    }\r\n                    break;\r\n                case SDLK_LEFT:\r\n                    p->dx = -MOVE_SPEED;\r\n                    break;\r\n                case SDLK_RIGHT:\r\n                    p->dx = MOVE_SPEED;\r\n                    break;\r\n            }\r\n            break;\r\n        case SDL_KEYUP:\r\n            if (signal.key == SDLK_LEFT || signal.key == SDLK_RIGHT) {\r\n                p->dx = 0;\r\n            }\r\n            break;\r\n    }\r\n}\r\n\r\nvoid render(SDL_Renderer* renderer, const GameState* state) {\r\n    SDL_SetRenderDrawColor(renderer, 30, 30, 30, 255);\r\n    SDL_RenderClear(renderer);\r\n    \r\n    // Draw ground\r\n    SDL_SetRenderDrawColor(renderer, 100, 200, 100, 255);\r\n    SDL_Rect ground = {0, SCREEN_HEIGHT - 40, SCREEN_WIDTH, 40};\r\n    SDL_RenderFillRect(renderer, &ground);\r\n    \r\n    // Draw player\r\n    SDL_SetRenderDrawColor(renderer, 200, 100, 100, 255);\r\n    SDL_Rect player_rect = {state->player.x, state->player.y, 40, 40};\r\n    SDL_RenderFillRect(renderer, &player_rect);\r\n    \r\n    SDL_RenderPresent(renderer);\r\n}\r\n\r\nint main() {\r\n    SDL_Init(SDL_INIT_VIDEO);\r\n    SDL_Window* window = SDL_CreateWindow(\"Platformer FRP\",\r\n        SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,\r\n        SCREEN_WIDTH, SCREEN_HEIGHT, 0);\r\n    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);\r\n\r\n    GameState state = {\r\n        .player = {.x = 100, .y = 100, .dx = 0, .dy = 0, .on_ground = true},\r\n        .running = true\r\n    };\r\n\r\n    Uint32 last_time = SDL_GetTicks();\r\n    \r\n    while (state.running) {\r\n        Uint32 current_time = SDL_GetTicks();\r\n        Uint32 delta_time = current_time - last_time;\r\n        \r\n        process_events(handle_input, &state);\r\n        update_state(&state, delta_time);\r\n        render(renderer, &state);\r\n        \r\n        // Simple frame rate limiting\r\n        if (delta_time < 16) SDL_Delay(16 - delta_time);\r\n        last_time = current_time;\r\n    }\r\n\r\n    SDL_DestroyRenderer(renderer);\r\n    SDL_DestroyWindow(window);\r\n    SDL_Quit();\r\n    return 0;\r\n}",
    "lang": "c",
    "$type": "li.plonk.paste",
    "title": "deepseek generated frp platformer",
    "shortUrl": "w3",
    "createdAt": "2025-04-04T07:46:15.792Z"
  }
}