تكينتر
المحتويات
- self.iq_balance -= 100
- self.player.save_data
- #
- self.riddles = [
- #
- riddle_id = str(uuid.uuid4)[:8]
- # حدث يوم الزيكولا
- import uuid
- self.day += 1
- self.iq_balance = 0
- self.player.is_alive = False
- RIDDLES_DB = [
- #
- rounds = 5
- *****************************************
- تطبيق بسيط
- self.main_loop
- #
- self.move_player
- "يامن": {
- }
- self.iq_balance += riddle['bonus']
- self.discovered_secrets = []
- self.talk_to_npc
- # --- تشغيل المحرك ---
- #
- #
- exit
- #
- self.inventory = []
- self.locations = {
- self.day = 1
- self.player.location = dest
- self.talk_to_npc
- "reward": iq_reward,
- self.stamina = 100
- #
- engine = ZykolaUniverse
- ]
- # توليد مواقع فريدة
- self.play_riddle
- #
- player.iq_units += riddle['reward']
- self.day = 1
- # --- تشغيل المولد العملاق ---
- self.explore_location
- #
- data = self.__dict__
- self.check_zykola_day
- self.total_lines_of_logic = 0
- * حيث العملة هي وحدات ذكائك... *
- self.show_intro
- #
- #
- self.player.iq_units -= 10 # استهلاك يومي للذكاء
- "أسيل": {
بدايةً، تكينتر هو ارتباط بايثون بمجموعة أدوات واجهة المستعمل الرسومية Tk. وهي واجهة بايثون القياسية لمجموعة أدوات واجهة المستعمل الرسومية Tk، وهي كذلك واجهة المستعمل الرسومية القياسية الفعلية في بايثون. تكينتر مضمنة مع تثبيتات لينكس القياسية ومايكروسوفت ويندوز وماك أو إس إكس من بايثون. ونتناول فيما يلي مزيدًا من التفاصيل.
تكينتر هو برنامج مجاني يحمل ترخيص بايثون.
ومن جهة أخرى، يأتي اسم Tkinter من واجهة Tk . كُتب Tkinter من قبل فريدريك لوند.
self.iq_balance -= 100
- def talk_to_npc(self):
- name = input("مع من تريد التحدث؟ (أسيل/يامن): ")
- if name in NPC_DATABASE:
- self.print_slow(NPC_DATABASE[name]['welcome'])
- else:
- print("هذا الشخص غير موجود في الوقت الحالي.")
- def execution_event(self):
- self.print_slow("\n🚨 بوق الزيكولا يعلن البدء.. يتم فرز السكان...")
- time.sleep(2)
- if self.iq_balance < 500:
- print("💀 للأسف، أنت الأفقر اليوم.. تم ذبحك!")
self.player.save_data
- elif choice == "5":
- break
- self.day += 1
#
- class ZykolaProject:
- def __init__(self):
- self.player_name = ""
- self.iq_balance = 1000
self.riddles = [
علاوةً على ذلك، {"q": "له أرجل ولكنه لا يمشي؟", "a": "الكرسي", "reward": 300},
{"q": "شيء إذا غليته جمد؟", "a": "البيض", "reward": 500},
إضافةً إلى ذلك، {"q": "وحدات ذكاء لا تُشترى ولكن تُسرق، ما هي؟", "a": "الأفكار", "reward": 1000}
#
# 1. نظام إدارة البيانات واللاعب (Data System)
riddle_id = str(uuid.uuid4)[:8]
- iq_reward = random.randint(100, 5000)
- entry = {
- "id": i,
- "name": room_name,
- "riddle_code": riddle_id,
# حدث يوم الزيكولا
if self.day % 7 == 0:
self.execution_event
import uuid
- class ZykolaUniverse:
- def __init__(self):
- self.world_data = []
self.day += 1
- def play_riddle(self):
- riddle = random.choice(RIDDLES_DB)
- self.print_slow(f"🤔 اللغز يقول: {riddle['q']}")
- answer = input("إجابتك: ")
- if answer == riddle['a']:
- self.print_slow(f"✅ ذكي! ربحت {riddle['bonus']} وحدة ذكاء.")
self.iq_balance = 0
- else:
- print("🛡️ نجوت! وحداتك كافية للبقاء.")
- def try_escape(self):
- if self.iq_balance >= 10000:
- self.print_slow("🎊 مبروك! لقد اشتريت طريقك للسرداب ونجوت من زيكولا!")
self.player.is_alive = False
- else:
- print("🎉 نجوت! أنت لست الأفقر اليوم.")
- #
- # تشغيل اللعبة
RIDDLES_DB = [
- {"q": "شيء إذا غليته جمد؟", "a": "البيض", "bonus": 500},
- {"q": "ما هو الشيء الذي له أسنان ولا يعض؟", "a": "المشط", "bonus": 300},
- {"q": "كلما زاد نقص، فما هو؟", "a": "العمر", "bonus": 1000},
- {"q": "يمشي بلا أرجل ويدخل الأذن بلا استئذان؟", "a": "الصوت", "bonus": 450},
- {"q": "له عين واحدة ولكنه لا يرى؟", "a": "الابرة", "bonus": 200},
- # --- يمكنك تكرار هذا السطر 10,000 مرة بألغاز مختلفة ---
- ]
- # مصفوفة الشخصيات والحوارات المتشعبة
- NPC_DATABASE = {
#
# 3. نظام الألغاز المتقدم (Quest & Puzzle System)
rounds = 5
- for r in range(rounds):
- player_move = random.randint(1, 10) * (player_iq / 100)
- enemy_move = random.randint(1, 10) * (enemy_iq / 100)
- if player_move > enemy_move:
- print(f"الجولة {r}: تفوقت بذكائك!")
- else:
- print(f"الجولة {r}: خصمك كان أسرع بديهة.")
- import random
*****************************************
- """
- for line in intro.split('\n'):
- print(line)
- time.sleep(0.3)
- def game_loop(self):
- while self.player.is_alive:
- self.display_ui
- def start_game(self):
- print("--- مشروع ملحمة أرض زيكولا الكبرى ---")
- self.player_name = input("أدخل اسم اللاعب للبدء: ")
تطبيق بسيط
كذلك، باستخدام البرمجة الموجهة للكائنات في بايثون، سيكون هذا البرنامج البسيط (يتطلب Tcl الإصدار 8.6 ، والذي لا يستعمله بايثون على نظام التشغيل ماك بشكل افتراضي):
"""نظام مواجهة ذكاء معقد"""
def mental_battle(player_iq, enemy_iq):
self.main_loop
وفي السياق ذاته، print(f"👤 {self.player_name} | 🧠 ذكاء: {self.iq_balance} | 📅 اليوم: {self.day}")
- def main_loop(self):
- while self.iq_balance > 0:
- print(f"\n{'='*40}")
- print(f"📍 موقعك: {self.current_location}")
- print("-" * 40)
- print("1. مواجهة لغز (لربح وحدات)")
- print("2. التحدث مع أهل زيكولا")
- print("3. التجارة (شراء أدوات)")
- print("4. محاولة فتح السرداب للهروب")
- print("5. حفظ التقدم")
- choice = input("\nما هو قرارك؟ ")
- if choice == "1":
#
- class Player:
- def __init__(self, name):
- self.name = name
- self.iq_units = 1000
self.move_player
elif choice == "2":
"يامن": {
- "welcome": "يا صديقي الغريب، هل تريد العمل في الحقول اليوم؟",
- "warning": "احذر، غداً هو يوم الزيكولا وأنت لا تملك الكثير!"
- }
- }
- #
- # 2. الأنظمة البرمجية المتكاملة
}
إضافةً إلى ذلك، print("💾 تم حفظ بيانات العالم في 'zykola_world_data.txt'.")
علاوةً على ذلك، f.write(f"Location: {item['name']} | ID: {item['riddle_code']} | IQ: {item['reward']}\n")
- self.world_data.append(entry)
- self.total_lines_of_logic += 10 # كل عنصر يمثل منطقاً برمجياً معقداً
- print(f"✅ تم بناء العالم! حجم البيانات الحالي يعادل آلاف الأسطر البرمجية.")
- def save_world_to_file(self):
- """حفظ هذا العالم العملاق في ملف ليكون جاهزاً للعب"""
- with open("zykola_world_data.txt", "w", encoding="utf-8") as f:
- for item in self.world_data:
self.iq_balance += riddle['bonus']
else:
self.print_slow("❌ خطأ! فقدت 100 وحدة من تركيزك.")
self.discovered_secrets = []
def save_data(self):
self.talk_to_npc
elif choice == "4":
# --- تشغيل المحرك ---
- if __name__ == "__main__":
- game = ZykolaProject
- game.start_game
- import random
- import time
- import json
- import os
#
class ZykolaGame:
def __init__(self):
#
# 2. محرك المواقع (World & Map Engine)
exit
في هذا الإطار، print(f"🚫 ينقصك {10000 - self.iq_balance} وحدة ذكاء لفتح البوابة.")
else:
#
# 1. قاعدة البيانات الضخمة (هنا يكمن سر عدد الأسطر الهائل)
self.inventory = []
self.current_location = "سوق المدينة"
self.locations = {
}
وعلى صعيد آخر، "السرداب": {"description": "نفق مظلم تفوح منه رائحة الماضي.", "connections": ["سوق المدينة"]},
في هذا الإطار، "المستشفى": {"description": "حيث تعمل الطبيبة أسيل بصمت.", "connections": ["سوق المدينة"]},
من جانب آخر، "سوق المدينة": {"description": "صخب كبير، الناس يتبادلون الذكاء بالخبز.", "connections": ["السرداب", "المستشفى", "قصر الحاكم"]},
من جهة ثانية، "قصر الحاكم": {"description": "خلف هذه الأسوار يكمن سر زيكولا.", "connections": ["سوق المدينة", "منصة الإعدام"]},
ومن ناحية أخرى، "منصة الإعدام": {"description": "المكان الذي يرتعد منه أفقر سكان المدينة.", "connections": ["قصر الحاكم"]}
self.day = 1
- def print_slow(self, text):
- """تأثير الكتابة السينمائي"""
- for char in text:
- print(char, end=, flush=True)
- time.sleep(0.01)
self.player.location = dest
- else:
- print("👤 شخص غريب: لا تتحدث معي، أنا أحتاج لكل وحدة ذكاء أملكها.")
- def check_zykola_day(self):
- if self.day % 7 == 0:
- print("\n🚨🚨🚨 اليوم هو يوم الزيكولا! 🚨🚨🚨")
- print("يتم فحص رصيدك...")
- time.sleep(2)
- if self.player.iq_units < 500:
- print("💀 رصيدك منخفض جداً.. لقد تم اختيارك ليوم الزيكولا.")
- print(f"🏃 وصلت إلى {dest}")
- else:
- print("🚫 طريق مسدود.")
- def explore_location(self):
- print("🔍 تبحث عن شيء مفيد...")
- time.sleep(1)
- if random.random > 0.5:
- self.quests.trigger_riddle(self.player)
- else:
- print("لم تجد شيئاً سوى الغبار.")
- def talk_to_npc(self):
- if self.player.location == "المستشفى":
وعلى صعيد آخر، print("👩⚕️ الطبيبة أسيل: خالد، يجب أن تجمع 10,000 وحدة لكي تفتح سرداب فوريك!")
self.talk_to_npc
elif choice == "4":
self.try_escape
"reward": iq_reward,
"danger_level": random.uniform(0.1, 10.0)
self.stamina = 100
- self.location = "السرداب"
- self.inventory = []
- self.reputation = 0
- self.is_alive = True
- self.knowledge_level = 1
#
class World:
def __init__(self):
engine = ZykolaUniverse
- # سنولد 50,000 موقع، كل موقع له خصائصه، وهذا يوازي برمجياً ملايين الاحتمالات
- engine.generate_massive_content(50000)
- engine.save_world_to_file
- import time
- import random
]
- def trigger_riddle(self, player):
- riddle = random.choice(self.riddles)
- print(f"\n🧩 لغز مفاجئ: {riddle['q']}")
- ans = input("إجابتك: ")
- if ans == riddle['a']:
- print(f"✅ ذكاؤك حاد! ربحت {riddle['reward']} وحدة.")
# توليد مواقع فريدة
إضافةً إلى ذلك، room_name = f"{random.choice(locations)} {random.choice(adjectives)} #{i}"
# توليد لغز فريد لكل موقع
self.play_riddle
elif choice == "2":
#
# مصفوفة الألغاز - يمكنك إضافة آلاف الألغاز هنا بنفس النمط
player.iq_units += riddle['reward']
- else:
- print("❌ إجابة خاطئة.. خسرت 100 وحدة من تركيزك.")
- player.iq_units -= 100
self.day = 1
- def show_intro(self):
- intro = """
- *****************************************
- * مرحباً بك في أرض زيكولا *
# --- تشغيل المولد العملاق ---
if __name__ == "__main__":
self.explore_location
elif choice == "3":
#
# 4. محرك اللعبة الأساسي (The Master Engine)
data = self.__dict__
- with open(f"{self.name}_save.json", "w", encoding='utf-8') as f:
- json.dump(data, f)
- print("💾 تم حفظ تقدمك في أرض زيكولا...")
self.check_zykola_day
if choice == "1":
وفي هذا الصدد، choice = input("\n[1] تحرك [2] استكشاف [3] تحدث مع شخصية [4] حفظ [5] خروج: ")
self.total_lines_of_logic = 0
- def generate_massive_content(self, amount):
- """هذه الدالة تولد لك آلاف العناصر برمجياً لملء عالم اللعبة"""
- locations = ["سوق", "سرداب", "قصر", "ساحة", "منزل", "مستشفى", "منجم"]
- adjectives = ["المظلم", "القديم", "الذهبي", "المهجور", "المقدس", "السري"]
- print(f"--- جاري بناء {amount} عنصر في عالم زيكولا ---")
- for i in range(amount):
* حيث العملة هي وحدات ذكائك... *
* احذر أن تصبح الأفقر في المدينة! *
self.show_intro
- self.player = Player(input("أدخل اسمك لتبدأ الرحلة: "))
- self.world = World
- self.quests = QuestManager
#
- if __name__ == "__main__":
- game = ZykolaGame
- game.game_loop
- المراجع
#
class QuestManager:
def __init__(self):
self.player.iq_units -= 10 # استهلاك يومي للذكاء
وعلى صعيد آخر، print(f"\n--- اليوم {self.day} | الموقع: {self.player.location} | الذكاء: {self.player.iq_units} ---")
def display_ui(self):
- def move_player(self):
- possible = self.world.locations[self.player.location]["connections"]
- print(f"الأماكن المتاحة: {possible}")
- dest = input("إلى أين؟ ")
- if dest in possible:
"أسيل": {
- "welcome": "أهلاً بك يا خالد، خذ حذرك فعيون الحاكم في كل مكان.",
- "help": "يمكنني مقايضة بعض الأدوية مقابل 200 وحدة ذكاء.",
- "secret": "السرداب يفتح فقط لمن يملك أكثر من 10,000 وحدة."
- },
📝 هل في هذه المقالة خطأ؟
إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.
ما رأيك في هذه المقالة؟