| import gradio as gr |
| import time |
| import threading |
| from datetime import datetime |
| import numpy as np |
|
|
| from rng_system import get_rng, RandomBufferMonitor |
| from alien_system import AlienSpawner, AlienPatternLibrary |
|
|
| |
| rng = get_rng() |
| buffer_monitor = RandomBufferMonitor(rng) |
| pattern_library = AlienPatternLibrary() |
| spawner = AlienSpawner(pattern_library) |
|
|
| |
| running = True |
|
|
| def background_updater(): |
| """পটভূমিতে গেম স্টেট আপডেট করে""" |
| last_time = time.time() |
| while running: |
| current_time = time.time() |
| dt = current_time - last_time |
| |
| |
| spawner.update(dt) |
| |
| |
| if int(current_time) % 5 == 0: |
| buffer_monitor.log_status() |
| |
| last_time = current_time |
| time.sleep(0.016) |
|
|
| |
| thread = threading.Thread(target=background_updater, daemon=True) |
| thread.start() |
|
|
| |
|
|
| def get_rng_status(): |
| """RNG স্ট্যাটাস""" |
| stats = rng.get_stats() |
| health = buffer_monitor.check_health() |
| |
| return f""" |
| **র্যান্ডম বাফার স্ট্যাটাস**: |
| - বাফার লেভেল: {stats.buffer_size}/1000 |
| - খালি পড়া: {stats.empty_reads} |
| - গড় পড়ার সময়: {stats.average_read_time*1000:.3f}ms |
| - স্বাস্থ্য স্কোর: {health['health_score']}/100 |
| - স্ট্যাটাস: {health['status']} |
| """ |
|
|
| def get_aliens_status(): |
| """এলিয়েন স্ট্যাটাস""" |
| aliens = spawner.get_aliens_data() |
| stats = spawner.get_stats() |
| history = spawner.get_spawn_history(10) |
| |
| alien_lines = [] |
| for alien in aliens[:5]: |
| alien_lines.append(f"ID:{alien['id']} {alien['type']} @({alien['x']},{alien['y']}) HP:{alien['health']}") |
| |
| history_lines = [] |
| for h in history: |
| history_lines.append(f"{h['time']} - {h['type']} at {h['position']}") |
| |
| return f""" |
| **এলিয়েন স্ট্যাটাস**: |
| - সক্রিয় এলিয়েন: {stats['active_aliens']} |
| - মোট স্পন: {stats['total_spawned']} |
| - মোট নিহত: {stats['total_killed']} |
| |
| **সক্রিয় এলিয়েন**: |
| {chr(10).join(alien_lines) if alien_lines else 'কোন এলিয়েন নেই'} |
| |
| **সাম্প্রতিক স্পন**: |
| {chr(10).join(history_lines) if history_lines else 'কোন স্পন নেই'} |
| """ |
|
|
| def spawn_alien_manually(): |
| """ম্যানুয়ালি এলিয়েন স্পন""" |
| alien_type = spawner._select_alien_type() |
| x, y = spawner._get_random_spawn_position() |
| alien = spawner._create_alien(alien_type, x, y) |
| spawner.aliens.append(alien) |
| return get_aliens_status() |
|
|
| def reset_system(): |
| """সবকিছু রিসেট""" |
| global spawner |
| rng.reset() |
| spawner = AlienSpawner(pattern_library) |
| return get_rng_status(), get_aliens_status() |
|
|
| def get_next_random(): |
| """পরবর্তী র্যান্ডম ভ্যালু""" |
| value = rng.next_random() |
| return f"পরবর্তী র্যান্ডম ভ্যালু: {value}" |
|
|
| def refresh_all(): |
| """সব ডাটা রিফ্রেশ""" |
| return get_rng_status(), get_aliens_status() |
|
|
| |
|
|
| CUSTOM_CSS = """ |
| .gradio-container { |
| background: #0a0a0f !important; |
| color: #ffffff !important; |
| font-family: 'Inter', sans-serif !important; |
| } |
| footer {visibility: hidden} |
| h1 { |
| color: #00d4ff !important; |
| text-align: center; |
| margin-bottom: 20px; |
| text-shadow: 0 0 10px #00d4ff; |
| } |
| .gr-box { |
| border: 1px solid #333 !important; |
| background: rgba(255,255,255,0.05) !important; |
| } |
| .gr-button-primary { |
| background: linear-gradient(135deg, #00d4ff, #0088ff) !important; |
| border: none !important; |
| } |
| .gr-button-secondary { |
| background: rgba(255,255,255,0.1) !important; |
| border: 1px solid #00d4ff !important; |
| } |
| """ |
|
|
| |
|
|
| with gr.Blocks(title="AVOLD - Aviator Engine") as demo: |
| gr.HTML(""" |
| <div style="text-align: center; margin-bottom: 20px;"> |
| <h1 style="color: #00d4ff; font-size: 48px; margin: 0;">✈️ AVOLD ENGINE</h1> |
| <p style="color: #888; font-size: 14px;">টাইমার-ভিত্তিক RNG + এলিয়েন স্পনিং সিস্টেম</p> |
| </div> |
| """) |
| |
| with gr.Tabs(): |
| with gr.TabItem("RNG সিস্টেম"): |
| rng_status = gr.Markdown(value=get_rng_status()) |
| with gr.Row(): |
| random_btn = gr.Button("🎲 পরবর্তী র্যান্ডম ভ্যালু", variant="primary") |
| random_value = gr.Textbox(label="র্যান্ডম ভ্যালু", interactive=False) |
| random_btn.click(fn=get_next_random, outputs=random_value) |
| |
| with gr.TabItem("এলিয়েন সিস্টেম"): |
| alien_status = gr.Markdown(value=get_aliens_status()) |
| with gr.Row(): |
| spawn_btn = gr.Button("👾 ম্যানুয়াল এলিয়েন স্পন", variant="primary") |
| refresh_btn = gr.Button("🔄 রিফ্রেশ", variant="secondary") |
| spawn_btn.click(fn=spawn_alien_manually, outputs=alien_status) |
| refresh_btn.click(fn=get_aliens_status, outputs=alien_status) |
| |
| with gr.TabItem("মনিটরিং"): |
| monitor_status = gr.Markdown(value=get_rng_status()) |
| refresh_monitor = gr.Button("🔄 রিফ্রেশ মনিটর") |
| refresh_monitor.click(fn=get_rng_status, outputs=monitor_status) |
| |
| with gr.Row(): |
| reset_btn = gr.Button("🔄 সম্পূর্ণ সিস্টেম রিসেট", variant="secondary") |
| |
| reset_btn.click( |
| fn=reset_system, |
| outputs=[rng_status, alien_status] |
| ) |
| |
| |
| |
| demo.load( |
| fn=refresh_all, |
| outputs=[rng_status, alien_status] |
| ) |
|
|
| |
|
|
| if __name__ == "__main__": |
| try: |
| |
| demo.launch( |
| server_name="0.0.0.0", |
| server_port=7860, |
| theme='dark', |
| css=CUSTOM_CSS |
| ) |
| finally: |
| running = False |
| rng.stop() |