مشروع تقوم بتنفيذ اثناء انتظار الدرس القادم

تفاصيل المشروع تعديل هذا الكود و عمل برنانج ثلاثي الابعاد مثل باندا تتحرك في اتجاهات متعددة وراء خلفية استخدم مكتبة panda3d لعمل برنامج ثلاثي الابعاد او لعبة ثلاثية الابعاد و الكود الذي امامك مجرد نموذج و مثال بسيط قم بعرض برنامجك الذي قكت بانشاءه هنا ده لو كنتم حابين تعملوه

from direct.showbase.ShowBase import ShowBase
from panda3d.core import DirectionalLight, AmbientLight
from panda3d.core import Vec4

class My3DApp(ShowBase):
    def __init__(self):
        # إنشاء نافذة التطبيق
        ShowBase.__init__(self)

        # تحميل نموذج ثلاثي الأبعاد افتراضي (باندا)
        self.model = self.loader.loadModel("models/panda")  # نموذج افتراضي (باندا)
        self.model.reparentTo(self.render)  # إضافته إلى مشهد العرض
        self.model.setScale(0.5)  # ضبط الحجم
        self.model.setPos(0, 10, 0)  # ضبط الموقع

        # إضافة إضاءة للمشهد
        self.add_lights()

        # التحكم بالكاميرا
        self.disableMouse()  # تعطيل التحكم الافتراضي بالفأرة
        self.camera.setPos(0, -20, 5)  # وضع الكاميرا خلف النموذج
        self.camera.lookAt(self.model)  # توجيه الكاميرا نحو النموذج

    def add_lights(self):
        # إضافة إضاءة اتجاهية
        d_light = DirectionalLight("d_light")
        d_light.setColor(Vec4(1, 1, 1, 1))  # لون الإضاءة (أبيض)
        light_node = self.render.attachNewNode(d_light)
        light_node.setHpr(45, -45, 0)  # توجيه الإضاءة بزاوية
        self.render.setLight(light_node)

        # إضافة إضاءة محيطة
        a_light = AmbientLight("a_light")
        a_light.setColor(Vec4(0.3, 0.3, 0.3, 1))  # لون الإضاءة المحيطة
        ambient_node = self.render.attachNewNode(a_light)
        self.render.setLight(ambient_node)


if __name__ == "__main__":
    app = My3DApp()
    app.run()
إعجابَين (2)

فى ملفات ناقصة فى الكود !!

إعجابَين (2)

ده مجرد مثال بسيط ازاي تعمل برنامج ثلاثي الابعاد عشان تعرف ازاي تعلمه و ازاي تستخدم مكتبة و تعرف نوعه بس لا اكثر

إعجاب واحد (1)

شباب حاولت اعمل لعبة ثلاثية الابعاد بسيط ببايثون مفهومة مطاردة الباندا بس فيها مشكلة لا تعمل اصلا بعد التعديل عشان تكون كويسة فيها اخطاء ممكن مساعدة هبعت الكود و تشوفه

from direct.showbase.ShowBase import ShowBase
from panda3d.core import DirectionalLight, AmbientLight, Vec4, CollisionTraverser, CollisionNode, CollisionSphere, CollisionHandlerQueue, OnscreenText
from panda3d.core import TextNode
from direct. gui. OnscreenText import onscreenText
import random


class PandaChaseGame(ShowBase):
    def __init__(self):
        # إنشاء نافذة اللعبة
        ShowBase.__init__(self)

        # تحميل نموذج الباندا
        self.panda = self.loader.loadModel("models/misc/rgbCube")  # استخدام مكعب افتراضي كنموذج
        self.panda.reparentTo(self.render)
        self.panda.setScale(0.5)  # تصغير الحجم
        self.panda.setPos(random.uniform(-8, 8), random.uniform(-3, 18), 0)

        # إعداد الكاميرا
        self.disableMouse()
        self.camera.setPos(0, -20, 10)
        self.camera.lookAt(0, 0, 0)

        # إضافة إضاءة
        self.add_lights()

        # إنشاء لاعب
        self.player = self.loader.loadModel("models/misc/rgbCube")  # استخدام مكعب افتراضي كلاعب
        self.player.reparentTo(self.render)
        self.player.setScale(0.5)
        self.player.setPos(0, -8, 0)

        # إعداد التحكم
        self.key_map = {"left": False, "right": False, "forward": False, "backward": False}
        self.accept("arrow_left", self.update_key, ["left", True])
        self.accept("arrow_left-up", self.update_key, ["left", False])
        self.accept("arrow_right", self.update_key, ["right", True])
        self.accept("arrow_right-up", self.update_key, ["right", False])
        self.accept("arrow_up", self.update_key, ["forward", True])
        self.accept("arrow_up-up", self.update_key, ["forward", False])
        self.accept("arrow_down", self.update_key, ["backward", True])
        self.accept("arrow_down-up", self.update_key, ["backward", False])

        # إعداد التصادم
        self.c_trav = CollisionTraverser()
        self.c_handler = CollisionHandlerQueue()

        player_collider = self.player.attachNewNode(CollisionNode("player"))
        player_collider.node().addSolid(CollisionSphere(0, 0, 0, 0.5))
        self.c_trav.addCollider(player_collider, self.c_handler)

        panda_collider = self.panda.attachNewNode(CollisionNode("panda"))
        panda_collider.node().addSolid(CollisionSphere(0, 0, 0, 0.5))
        self.c_trav.addCollider(panda_collider, self.c_handler)

        # إعداد النصوص
        self.score = 0
        self.score_text = OnscreenText(text=f"Score: {self.score}",
                                       style=1, fg=(1, 1, 1, 1),
                                       pos=(-1.2, 0.9), scale=0.07, align=TextNode.ALeft)

        # حركة الباندا
        self.panda_speed = [random.uniform(-2, 2), random.uniform(-2, 2)]
        self.taskMgr.add(self.move_panda, "MovePanda")

        # تحديث اللعبة
        self.taskMgr.add(self.update_game, "UpdateGame")

    def add_lights(self):
        # إضافة إضاءة اتجاهية
        d_light = DirectionalLight("d_light")
        d_light.setColor(Vec4(0.8, 0.8, 0.8, 1))
        light_node = self.render.attachNewNode(d_light)
        light_node.setHpr(45, -45, 0)
        self.render.setLight(light_node)

        # إضافة إضاءة محيطة
        a_light = AmbientLight("a_light")
        a_light.setColor(Vec4(0.3, 0.3, 0.3, 1))
        ambient_node = self.render.attachNewNode(a_light)
        self.render.setLight(ambient_node)

    def update_key(self, key, value):
        self.key_map[key] = value

    def move_panda(self, task):
        # تحريك الباندا عشوائيًا
        dt = globalClock.getDt()
        x, y, z = self.panda.getPos()
        x += self.panda_speed[0] * dt
        y += self.panda_speed[1] * dt

        # إذا اصطدمت الباندا بالجدران، عكس الاتجاه
        if x < -8 or x > 8:
            self.panda_speed[0] *= -1
        if y < -3 or y > 18:
            self.panda_speed[1] *= -1

        self.panda.setPos(x, y, z)
        return task.cont

    def update_game(self, task):
        # حركة اللاعب
        dt = globalClock.getDt()
        speed = 5 * dt
        if self.key_map["left"]:
            self.player.setX(self.player.getX() - speed)
        if self.key_map["right"]:
            self.player.setX(self.player.getX() + speed)
        if self.key_map["forward"]:
            self.player.setY(self.player.getY() + speed)
        if self.key_map["backward"]:
            self.player.setY(self.player.getY() - speed)

        # منع اللاعب من الخروج عن الحدود
        x, y, z = self.player.getPos()
        self.player.setX(max(-8, min(8, x)))
        self.player.setY(max(-3, min(18, y)))

        # التحقق من التصادم
        self.c_trav.traverse(self.render)
        for entry in self.c_handler.getEntries():
            if entry.getIntoNode().getName() == "panda":
                self.score += 1
                self.score_text.setText(f"Score: {self.score}")
                self.panda.setPos(random.uniform(-8, 8), random.uniform(-3, 18), 0)

        return task.cont


if __name__ == "__main__":
    game = PandaChaseGame()
    game.run()
إعجاب واحد (1)

أنا حاولت اشغله ودى كانت النتيجة


بيقول أن فى خطا فى السطر ٣٠ و ٣١ و السطر الاول
كنت عايز اساعد بس للاسف لم اصل لهذا المستوى
امل أن يكون هذا قد ساعد

إعجابَين (2)

ابعت الerrors اللى طلعتلك

إعجاب واحد (1)