🌟 Π§Π°ΡΡ‚ΡŒ 56: Бимуляция боТСствСнного уровня β€” ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠΎΠ½Π°ΠΌΠΈ Ρ„ΠΈΠ·ΠΈΠΊΠΈ

ΠœΡ‹ создадим систСму, которая позволяСт Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π°ΠΊΠΎΠ½Ρ‹ Ρ„ΠΈΠ·ΠΈΠΊΠΈ Π² симулированной всСлСнной!

Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π·Π°ΠΊΠΎΠ½ΠΎΠ² Ρ„ΠΈΠ·ΠΈΠΊΠΈ:

cpp

#define UNIVERSE_SIZE 32

// Π—Π°ΠΊΠΎΠ½Ρ‹ Ρ„ΠΈΠ·ΠΈΠΊΠΈ (измСняСмыС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹)
struct PhysicsLaws {
    uint8_t gravity;          // 0-255
    uint8_t entropy;          // 0-255
    uint8_t quantumNoise;     // 0-255
    uint8_t timeFlow;         // 0-255
    uint8_t consciousness;    // 0-255
    uint8_t causality;        // 0-255 (ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ)
};

PhysicsLaws physics;
uint8_t universe[UNIVERSE_SIZE][UNIVERSE_SIZE];
uint8_t backupUniverse[UNIVERSE_SIZE][UNIVERSE_SIZE];

// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ с нашими Π·Π°ΠΊΠΎΠ½Π°ΠΌΠΈ Ρ„ΠΈΠ·ΠΈΠΊΠΈ
void initPhysics() {
    physics.gravity = 128;
    physics.entropy = 100;
    physics.quantumNoise = 30;
    physics.timeFlow = 255;
    physics.consciousness = 0;
    physics.causality = 255;
}

// ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠΎΠ½ΠΎΠ² ΠΊ частицС
void applyPhysics(uint8_t x, uint8_t y) {
    uint8_t* cell = &universe[x][y];
    
    // Гравитация (притяТСниС)
    if (physics.gravity > 100) {
        // Частицы ΠΏΡ€ΠΈΡ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ
        int16_t dx = x - UNIVERSE_SIZE / 2;
        int16_t dy = y - UNIVERSE_SIZE / 2;
        if (dx * dx + dy * dy > 5) {
            uint8_t moveProb = physics.gravity / 50;
            if (random(100) < moveProb) {
                // ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅
                int8_t mx = (dx > 0) ? 1 : -1;
                int8_t my = (dy > 0) ? 1 : -1;
                if (x + mx < UNIVERSE_SIZE && y + my < UNIVERSE_SIZE) {
                    universe[x + mx][y + my] = *cell;
                    *cell = 0;
                }
            }
        }
    }
    
    // Энтропия (распад)
    if (physics.entropy > 50 && *cell > 0) {
        if (random(100) < physics.entropy / 10) {
            *cell = max(0, *cell - 1);
        }
    }
    
    // ΠšΠ²Π°Π½Ρ‚ΠΎΠ²Ρ‹ΠΉ ΡˆΡƒΠΌ (Ρ„Π»ΡƒΠΊΡ‚ΡƒΠ°Ρ†ΠΈΠΈ)
    if (physics.quantumNoise > 0) {
        if (random(100) < physics.quantumNoise / 10) {
            *cell = min(255, *cell + random(-10, 11));
        }
    }
    
    // ВрСмя (ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ)
    if (physics.timeFlow < 255) {
        if (random(100) > physics.timeFlow) {
            // ВрСмя замСдляСтся
            *cell = *cell;  // Π—Π°ΠΌΠΎΡ€ΠΎΠ·ΠΊΠ°
        }
    }
    
    // Π‘ΠΎΠ·Π½Π°Π½ΠΈΠ΅ (Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ влияСт Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ)
    if (physics.consciousness > 100) {
        if (random(100) < physics.consciousness / 10) {
            // Π­Ρ„Ρ„Π΅ΠΊΡ‚ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»Ρ
            *cell = *cell ^ (1 << (physics.consciousness % 8));
        }
    }
    
    // ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ (связь ΠΌΠ΅ΠΆΠ΄Ρƒ событиями)
    if (physics.causality < 200) {
        if (random(100) < (255 - physics.causality) / 10) {
            // ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ причинности (события Π±Π΅Π· ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹)
            *cell = random(256);
        }
    }
}

// Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ всСлСнной
void evolveUniverse() {
    // БоздаСм копию
    memcpy(backupUniverse, universe, sizeof(universe));
    
    // ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Π·Π°ΠΊΠΎΠ½Ρ‹ ΠΊΠΎ всСм частицам
    for (uint8_t x = 0; x < UNIVERSE_SIZE; x++) {
        for (uint8_t y = 0; y < UNIVERSE_SIZE; y++) {
            applyPhysics(x, y);
        }
    }
}

// Визуализация всСлСнной
void renderUniverse() {
    clearScreen();
    
    for (uint8_t x = 0; x < UNIVERSE_SIZE; x++) {
        for (uint8_t y = 0; y < UNIVERSE_SIZE; y++) {
            uint8_t val = universe[x][y];
            if (val > 0) {
                uint8_t screenX = x * 2;
                uint8_t screenY = y * 2;
                if (screenX < 64 && screenY < 64) {
                    drawPixel(screenX, screenY, val > 100);
                }
            }
        }
    }
    
    updateDisplay();
}

// ИзмСнСниС Π·Π°ΠΊΠΎΠ½ΠΎΠ² Ρ„ΠΈΠ·ΠΈΠΊΠΈ (боТСствСнная сила)
void tweakPhysics() {
    // МСняСм случайный ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€
    uint8_t param = random(6);
    int8_t delta = random(-20, 21);
    
    switch (param) {
        case 0:
            physics.gravity = constrain(physics.gravity + delta, 0, 255);
            Serial.print("⚑ Гравитация: ");
            Serial.println(physics.gravity);
            break;
        case 1:
            physics.entropy = constrain(physics.entropy + delta, 0, 255);
            Serial.print("⚑ Энтропия: ");
            Serial.println(physics.entropy);
            break;
        case 2:
            physics.quantumNoise = constrain(physics.quantumNoise + delta, 0, 255);
            Serial.print("⚑ ΠšΠ²Π°Π½Ρ‚ΠΎΠ²Ρ‹ΠΉ ΡˆΡƒΠΌ: ");
            Serial.println(physics.quantumNoise);
            break;
        case 3:
            physics.timeFlow = constrain(physics.timeFlow + delta, 0, 255);
            Serial.print("⚑ ВрСмя: ");
            Serial.println(physics.timeFlow);
            break;
        case 4:
            physics.consciousness = constrain(physics.consciousness + delta, 0, 255);
            Serial.print("⚑ БознаниС: ");
            Serial.println(physics.consciousness);
            break;
        case 5:
            physics.causality = constrain(physics.causality + delta, 0, 255);
            Serial.print("⚑ ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ: ");
            Serial.println(physics.causality);
            break;
    }
}

void setup() {
    initOLED();
    Serial.begin(115200);
    randomSeed(analogRead(A0));
    
    initPhysics();
    
    // ЗаполняСм Π²ΡΠ΅Π»Π΅Π½Π½ΡƒΡŽ случайными частицами
    for (uint8_t x = 0; x < UNIVERSE_SIZE; x++) {
        for (uint8_t y = 0; y < UNIVERSE_SIZE; y++) {
            universe[x][y] = random(100) < 30 ? random(256) : 0;
        }
    }
    
    Serial.println("🌟 Π‘ΠžΠ–Π•Π‘Π’Π’Π•ΠΠΠ«Π™ Π Π•Π–Π˜Πœ ΠΠšΠ’Π˜Π’Π˜Π ΠžΠ’ΠΠ");
    Serial.println("Π’Ρ‹ управляСтС Π·Π°ΠΊΠΎΠ½Π°ΠΌΠΈ Ρ„ΠΈΠ·ΠΈΠΊΠΈ!");
}

void loop() {
    // Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ всСлСнной (10 шагов)
    for (uint8_t step = 0; step < 10; step++) {
        evolveUniverse();
    }
    
    // Иногда мСняСм Π·Π°ΠΊΠΎΠ½Ρ‹
    if (random(100) < 20) {
        tweakPhysics();
    }
    
    // Визуализация
    renderUniverse();
    delay(100);
}

Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΡ‚ΡŒΡΡ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *