Skip to content

JD don dada #12047

@sushilsoren620295135-art

Description

Type of issue

Typo

Description

[Ente// main.cpp
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include
#include
#include

// Utility
float length(const sf::Vector2f &v){ return std::sqrt(v.xv.x + v.yv.y); }
sf::Vector2f normalize(const sf::Vector2f &v){
float l = length(v);
if(l==0) return {0,0};
return {v.x/l, v.y/l};
}

struct Entity {
sf::Sprite sprite;
sf::Vector2f velocity;
bool active = true;
virtual void update(float dt) { sprite.move(velocity * dt); }
virtual ~Entity() = default;
};

struct MovingPathEntity : Entity {
std::vectorsf::Vector2f path;
int cur = 0;
float speed = 100.f;
void update(float dt) override {
if(path.empty()) { Entity::update(dt); return; }
sf::Vector2f pos = sprite.getPosition();
sf::Vector2f target = path[cur];
sf::Vector2f dir = target - pos;
float dist = length(dir);
if(dist < 5.0f) {
cur = (cur + 1) % path.size();
} else {
sf::Vector2f mv = normalize(dir) * speed * dt;
sprite.move(mv);
}
}
};

struct Police : Entity {
float speed = 180.f;
void update(float dt) override {
sprite.move(velocity * dt);
}
void chase(const sf::Vector2f& target, float dt) {
sf::Vector2f pos = sprite.getPosition();
sf::Vector2f dir = normalize(target - pos);
velocity = dir * speed;
update(dt);
}
};

int main(){
// Window & view (zoomable if map large)
sf::RenderWindow window(sf::VideoMode(1280, 720), "OpenMap Car Prototype - Jharkhand Demo");
window.setFramerateLimit(60);

// Load textures (place your files in executable folder)
sf::Texture texMap, texCar, texTaxi, texTrain, texHeli, texPolice;
if(!texMap.loadFromFile("jharkhand_map.png")) {
    // fallback: plain color if map missing
    sf::Image img; img.create(2000, 1500, sf::Color(80,150,80));
    texMap.loadFromImage(img);
}
if(!texCar.loadFromFile("car.png")) { sf::Image i; i.create(60,30, sf::Color::Red); texCar.loadFromImage(i); }
if(!texTaxi.loadFromFile("taxi.png")){ sf::Image i; i.create(50,30, sf::Color(255,200,0)); texTaxi.loadFromImage(i); }
if(!texTrain.loadFromFile("train.png")){ sf::Image i; i.create(120,40, sf::Color(100,100,100)); texTrain.loadFromImage(i); }
if(!texHeli.loadFromFile("heli.png")){ sf::Image i; i.create(80,40, sf::Color::Cyan); texHeli.loadFromImage(i); }
if(!texPolice.loadFromFile("police.png")){ sf::Image i; i.create(60,30, sf::Color::Blue); texPolice.loadFromImage(i); }

// Map sprite
sf::Sprite mapSprite(texMap);
// Position map so centre is visible (adjust as per image)
mapSprite.setPosition(0,0);

// Camera / view
sf::View view(sf::FloatRect(0,0,1280,720));

// Player (Joseph) setup
Entity player;
player.sprite.setTexture(texCar);
player.sprite.setOrigin(texCar.getSize().x/2.f, texCar.getSize().y/2.f);
player.sprite.setPosition(800, 600); // start (tweak)
float playerSpeed = 0.f;
float playerMaxSpeed = 400.f;
float accel = 600.f;
float decel = 500.f;
float steerSpeed = 120.f; // degrees per sec

// Taxi (path)
MovingPathEntity taxi;
taxi.sprite.setTexture(texTaxi);
taxi.sprite.setOrigin(texTaxi.getSize().x/2.f, texTaxi.getSize().y/2.f);
taxi.path = { {300,400}, {800,400}, {1200,500}, {300,400} };
taxi.sprite.setPosition(taxi.path[0]);

// Train (path)
MovingPathEntity train;
train.sprite.setTexture(texTrain);
train.sprite.setOrigin(texTrain.getSize().x/2.f, texTrain.getSize().y/2.f);
train.path = { {50,1100}, {1800,1100} }; // back-and-forth
train.speed = 220.f;
train.sprite.setPosition(train.path[0]);

// Helicopter
MovingPathEntity heli;
heli.sprite.setTexture(texHeli);
heli.sprite.setOrigin(texHeli.getSize().x/2.f, texHeli.getSize().y/2.f);
heli.path = { {400,150}, {1100,150}, {1400,250}, {400,150} };
heli.speed = 140.f;
heli.sprite.setPosition(heli.path[0]);

// Police
Police police;
police.sprite.setTexture(texPolice);
police.sprite.setOrigin(texPolice.getSize().x/2.f, texPolice.getSize().y/2.f);
police.sprite.setPosition(1000, 400);

// Basic HUD font
sf::Font font;
font.loadFromFile("arial.ttf"); // optional, if missing - SFML fallback not included
sf::Text hud; hud.setFont(font); hud.setCharacterSize(18);
hud.setFillColor(sf::Color::White);
hud.setPosition(10,10);

// Clock
sf::Clock clock;
while(window.isOpen()){
    float dt = clock.restart().asSeconds();
    sf::Event ev;
    while(window.pollEvent(ev)){
        if(ev.type == sf::Event::Closed) window.close();
        if(ev.type == sf::Event::KeyPressed && ev.key.code == sf::Keyboard::Escape) window.close();
    }

    // Player input - simple arcade physics
    bool up = sf::Keyboard::isKeyPressed(sf::Keyboard::W) || sf::Keyboard::isKeyPressed(sf::Keyboard::Up);
    bool down = sf::Keyboard::isKeyPressed(sf::Keyboard::S) || sf::Keyboard::isKeyPressed(sf::Keyboard::Down);
    bool left = sf::Keyboard::isKeyPressed(sf::Keyboard::A) || sf::Keyboard::isKeyPressed(sf::Keyboard::Left);
    bool right = sf::Keyboard::isKeyPressed(sf::Keyboard::D) || sf::Keyboard::isKeyPressed(sf::Keyboard::Right);

    // Heading is rotation
    float rotation = player.sprite.getRotation();
    if(up) playerSpeed += accel * dt;
    else playerSpeed -= decel * dt * 0.5f;

    if(down) playerSpeed -= accel * dt * 0.8f;

    if(left) player.sprite.rotate(-steerSpeed * dt * (playerSpeed / playerMaxSpeed + 0.2f));
    if(right) player.sprite.rotate(steerSpeed * dt * (playerSpeed / playerMaxSpeed + 0.2f));

    // clamp speed
    if(playerSpeed > playerMaxSpeed) playerSpeed = playerMaxSpeed;
    if(playerSpeed < -150.f) playerSpeed = -150.f;
    if(std::abs(playerSpeed) < 1.f && !up && !down) playerSpeed = 0.f;

    // update player movement
    float rad = player.sprite.getRotation() * 3.14159265f / 180.f;
    sf::Vector2f forward(std::cos(rad), std::sin(rad));
    player.velocity = forward * playerSpeed;
    player.update(dt);

    // Update other entities
    taxi.update(dt);
    // train: ping-pong
    static bool trainForward = true;
    sf::Vector2f tpos = train.sprite.getPosition();
    sf::Vector2f tTarget = train.path[ train.cur ];
    // train.update handles movement along path already
    train.update(dt);

    heli.update(dt);

    // Police basic chase
    police.chase(player.sprite.getPosition(), dt);

    // Update camera to follow player
    view.setCenter(player.sprite.getPosition());
    window.setView(view);

    // HUD
    hud.setString("Controls: W/A/S/D or Arrows - Drive\nPlayer Pos: (" +
        std::to_string((int)player.sprite.getPosition().x) + "," + std::to_string((int)player.sprite.getPosition().y) + ")\nSpeed: " + std::to_string((int)playerSpeed));

    // Render
    window.clear(sf::Color::Black);
    window.draw(mapSprite); // map (big)
    window.draw(taxi.sprite);
    window.draw(train.sprite);
    window.draw(heli.sprite);
    window.draw(player.sprite);
    window.draw(police.sprite);

    // HUD render in screen coords => set default view
    window.setView(window.getDefaultView());
    window.draw(hud);
    window.display();

    // back to world view for next frame
    window.setView(view);
}
return 0;

}r feedback here]

Page URL

https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.randomnumbergenerator?view=net-9.0

Content source URL

https://github.com/dotnet/dotnet-api-docs/blob/main/xml/System.Security.Cryptography/RandomNumberGenerator.xml

Document Version Independent Id

bf78e217-b874-ee3f-9e70-c232989681bf

Platform Id

235b1e4c-6230-4e67-2d27-ae7e4e2f2366

Article author

@dotnet-bot

Metadata

Metadata

Assignees

No one assigned

    Labels

    code-of-conductIndicates issues that are spam, trolling, or anything that violates our code of conductneeds-area-labelAn area label is needed to ensure this gets routed to the appropriate area ownersuntriagedNew issue has not been triaged by the area owner

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions