Views
No views yet
def ai_generate_quest(self):
""" توليد مهمة عشوائية باستخدام الذكاء الاصطناعي """
prompt = "Generate a dark fantasy quest description in Arabic (1 sentence):"
response = requests.post(AI_API_URL, headers=HEADERS, json={"inputs": prompt})
return response.json()[0]['generated_text'].split(":")[-1].strip()
def complete_quest(self):
quest_text = self.ai_generate_quest()
self.player["shadows"] += 1
self.player["stats"]["القوة"] += 5
self.check_level_up()
return f"تم إكمال المهمة!\n{quest_text}\n+1 ظل مظلم"
def unlock_skill(self, skill_name):
if self.player["shadows"] >= self.player["skills"][skill_name]["cost"]:
self.player["skills"][skill_name]["unlocked"] = True
self.player["shadows"] -= self.player["skills"][skill_name]["cost"]
return True
return False
def check_level_up(self):
if self.player["stats"]["القوة"] // 100 > self.player["level"]:
self.player["level"] += 1
return f"Level Up! → Lv.{self.player['level']}"
return None
def save_game(self):
with open("shadow_monarch.json", "w") as f:
json.dump(self.player, f)
def load_game(self):
try:
with open("shadow_monarch.json", "r") as f:
self.player = json.load(f)
except FileNotFoundError:
self.save_game() # تحميل الأصول البصرية
self.dark_theme = {
"bg": "#0a0a0a",
"fg": "#crimson",
"font": ("Noto Sans Arabic", 14)
}
self.build_interface()
def build_interface(self):
# لوحة الإحصائيات
stats_frame = ttk.Frame(self, style="Dark.TFrame")
stats_frame.pack(pady=20, fill="x")
self.stats_labels = {
"level": ttk.Label(stats_frame, text=f"المستوى: {self.game.player['level']}", **self.dark_theme),
"shadows": ttk.Label(stats_frame, text=f"الظلال: {self.game.player['shadows']}", **self.dark_theme)
}
for label in self.stats_labels.values():
label.pack(side="left", padx=20)
# منطقة المهارات
skills_frame = ttk.LabelFrame(self, text="شجرة المهارات المظلمة", style="Dark.TLabelframe")
skills_frame.pack(pady=10, fill="both", expand=True)
self.skill_buttons = {}
for skill, info in self.game.player["skills"].items():
btn = ttk.Button(
skills_frame,
text=f"{skill} ({info['cost']} ظلال)",
style="Skill.TButton" if info["unlocked"] else "Locked.TButton",
command=lambda s=skill: self.unlock_skill(s)
)
btn.pack(pady=5, fill="x")
self.skill_buttons[skill] = btn
# زر المهام
quest_btn = ttk.Button(
self,
text="بدء مهمة مظلمة (Click)",
command=self.start_quest,
style="Quest.TButton"
)
quest_btn.pack(pady=20)
# الأنماط
self.style = ttk.Style()
self.style.configure("Dark.TFrame", background="#1a1a1a")
self.style.configure("Dark.TLabelframe", background="#1a1a1a", foreground="#crimson")
self.style.configure("Skill.TButton", background="#2a0a0a", foreground="#crimson")
self.style.configure("Locked.TButton", background="#1a1a1a", foreground="#666")
self.style.configure("Quest.TButton", background="#4a0000", font=("Arial Black", 16))
def unlock_skill(self, skill_name):
if self.game.unlock_skill(skill_name):
self.update_display()
messagebox.showinfo("Unlocked!", f"تم فتح مهارة {skill_name}!")
else:
messagebox.showerror("Error", "لا تمتلك ظلال كافية!")
def start_quest(self):
result = self.game.complete_quest()
level_up = self.game.check_level_up()
self.update_display()
message = result
if level_up:
message += f"\n\n{level_up}"
messagebox.showinfo("نتيجة المهمة", message)
self.game.save_game()
def update_display(self):
self.stats_labels["level"].config(text=f"المستوى: {self.game.player['level']}")
self.stats_labels["shadows"].config(text=f"الظلال: {self.game.player['shadows']}")
for skill, btn in self.skill_buttons.items():
info = self.game.player["skills"][skill]
btn.configure(
text=f"{skill} ({info['cost']} ظلال)",
style="Skill.TButton" if info["unlocked"] else "Locked.TButton"
)