space_adventure_4k.rb
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 5/100
Hướng nghiên cứu
Issue này chứa một bản dump mã Ruby có tiêu đề space_adventure_4k.rb, nhưng không mô tả thay đổi được yêu cầu, hành vi mong đợi hoặc mối liên hệ với gemoji. Hãy bắt đầu bằng việc kiểm tra xem tệp này có thuộc repository hay không và làm rõ phần đóng góp dự kiến; hiện chưa có definition of done nào có thể kiểm chứng hoặc bài kiểm thử được nêu tên để chạy.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
#!/usr/bin/env ruby
encoding: utf-8
require 'json'
require 'colorize' # для цветной вывода (установите: gem install colorize)
class SpaceAdventure4K
SAVE_FILE = 'savegame_4k.json'
VERSION = '1.2.0'
Меню с расширенными опциями
MAIN_MENU = {
'1' => 'Проверить курс (координаты и статус)',
'2' => 'Переместиться в сектор (X Y Z)',
'3' => 'Исследовать текущий сектор',
'4' => 'Поговорить с ИИ‑помощником «Эхо‑4K»',
'5' => 'Проверить инвентарь и экипировку',
'6' => 'Сохранить игру',
'7' => 'Посетить космический рынок',
'8' => 'Выйти из игры',
'9' => 'Активировать сканер аномалий',
'10' => 'Проверить журнал миссий',
'give_credits' => '[ОТЛАДКА] Начислить 8 888 888 888 CR',
'give_all' => '[ОТЛАДКА] Получить всё: топливо, кристаллы, артефакты'
}
def initialize
load_game || reset_game
@mission_log = []
end
def reset_game
@position = { x: 0, y: 0, z: 0 }
@health = 100
@fuel = 150 # увеличено
@credits = 100 # увеличено
@crystals = 0
@inventory = ['сканер-прототип']
@game_over = false
@sector_map = {}
@level = 1
@target = { x: 8, y: -5, z: 4 } # дальше
@ship = :phoenix_4k
@shield_active = false
@anomaly_level = 0 # уровень аномалий в текущем секторе
@experience = 0
end
def load_game
if File.exist?(SAVE_FILE)
data = JSON.parse(File.read(SAVE_FILE))
@position = data['position']
@health = data['health']
@fuel = data['fuel']
@credits = data['credits']
@crystals = data['crystals'] || 0
@inventory = data['inventory']
@sector_map = data['sector_map']
@level = data['level']
@target = data['target']
@ship = data['ship'] || :phoenix_4k
@shield_active = data['shield_active'] || false
@anomaly_level = data['anomaly_level'] || 0
@experience = data['experience'] || 0
@mission_log = data['mission_log'] || []
puts "✅ Игра загружена! Версия #{VERSION}".green
return true
end
false
end
def save_game
data = {
position: @position,
health: @health,
fuel: @fuel,
credits: @credits,
crystals: @crystals,
inventory: @inventory,
sector_map: @sector_map,
level: @level,
target: @target,
ship: @ship,
shield_active: @shield_active,
anomaly_level: @anomaly_level,
experience: @experience,
mission_log: @mission_log
}
File.write(SAVE_FILE, JSON.generate(data))
puts "💾 Игра сохранена в #{SAVE_FILE}!".blue
end
def show_status
system_info = [
"🚀 КОСМИЧЕСКИЙ СИМУЛЯТОР «ГАЛАКТИКА‑4K» v#{VERSION}",
"📍 Позиция: X=#{@position[:x]}, Y=#{@position[:y]}, Z=#{@position[:z]}",
"🎯 Цель: X=#{@target[:x]}, Y=#{@target[:y]}, Z=#{@target[:z]}",
"❤ Здоровье: #{bar(@health, 100, :red)} (#{@health}%)",
"⛽ Топливо: #{bar(@fuel, 150, :yellow)} (#{@fuel} ед.)",
"💰 Кредиты: #{@credits} CR",
"💎 Кристаллы: #{@crystals} 🔮",
"🛡 Защита: #{@shield_active ? 'активна' : 'выкл.'}",
"🗺 Исследовано: #{@sector_map.size} секторов",
"⭐ Опыт: #{@experience} XP",
"📜 Уровень: #{@level}",
"🧭 До цели: #{calc_distance(@position, @target).round(1)} ед."
]
puts "\n! + "═" * 60
system_info.each { |line| puts "│ #{line}".light_white }
puts "═! * 60
end
def bar(value, max, color)
filled = (value.to_f / max * 20).to_i
bar = '█' * filled + '░' * (20 - filled)
bar.colorize(color)
end
def ship_name(symbol)
{
phoenix_4k: 'Феникс‑4K (улучшенный)',
warrior_4k: 'Воин‑4K',
scout_4k: 'Скаут‑4K'
}[symbol] || 'Неизвестный корабль'
end
def calc_distance(a, b)
Math.sqrt((a[:x] - b[:x])**2 + (a[:y] - b[:y])**2 + (a[:z] - b[:z])**2)
end
def prompt
print "\n▸ ".cyan
gets.chomp.downcase
end
def display_menu
puts "\n🚀 ЧТО ВЫ ХОТИТЕ СДЕЛАТЬ?"
MAIN_MENU.each do |key, label|
puts " #{key.rjust(3)}. #{label}".light_cyan
end
end
def show_mini_map
puts "\n🗺 МИНИ‑КАРТА (область ±2 от текущей позиции)".yellow
(-2..2).each do |dz|
line = []
(-2..2).each do |dy|
(-2..2).each do |dx|
abs_x = @position[:x] + dx
abs_y = @position[:y] + dy
abs_z = @position[:z] + dz
key = "#{abs_x}-#{abs_y}-#{abs_z}"
if abs_x == @position[:x] && abs_y == @position[:y] && abs_z == @position[:z]
line << "[*]".green
elsif @sector_map[key]
line << "[.]".blue
else
line << "[...]".dark_gray
end
end
end
puts line.join(" ")
end
end
def explore_sector(pos)
key = "#{pos[:x]}-#{pos[:y]}-#{pos[:z]}"
if @sector_map[key]
puts "Этот сектор уже исследован. Данные в архиве.".yellow
return
end
puts "\n🔍 Активирую 4K‑сканеры... Анализ сектора #{key}...".cyan
sleep 0.7
event = weighted_random_event
case event
when :credit_cache
gain = rand(50..150)
@credits += gain
log_mission("Найден кэш кредитов: +#{gain} CR")
puts "✓ Обнаружен тайник с кредитами! +#{gain} CR.".green
when :pirate_attack
if @inventory.include?('щит‑4K')
puts "⚔ Щит‑4K поглотил удар! Атака нейтрализована.".blue
else
damage = rand(20..4
- Ngôn ngữ chính
- Ruby
- Star
- 4.5k
- Fork
- 804
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của github/gemoji
-
QR- vpnĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 20/100
-
[email protected]Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 10/100
-
Is this project dead?Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 25/100
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 10/100
Tất cả issue của github/gemoji
Issue tương tự
-
Update leinigen to 2.13.1Đang mở
Độ khó 2/5 Dưới một giờ Mức phù hợp với người mới 70/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Mend: dependency security vulnerability
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Mend: dependency security vulnerability
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
-
Mend: dependency security vulnerability
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
ManageIQ/manageiq-rpm_build#737 ·