مساعدة في حل تحدي اخر وحدة (اعداد لعبة كاملة ) السلحفاة تتحرك افقيا لا عموديا لعدد مالا نهاية اريد مساعدة

main.py
from turtle import Screen, Turtle
from paddle_M import Paddle
from score import Sscorboard
from rain import My_turtles
import time
import random

screen = Screen()
screen.tracer(0)
screen.setup(800, 600)
screen.bgcolor(‘black’)
screen.title(“OctuCode: My Game”)
paddle = Paddle()
score = Sscorboard()
my_turtle = My_turtles()

screen.listen()
screen.onkey(paddle.go_left, ‘Left’)
screen.onkey(paddle.go_right, ‘Right’)

دالة لتوليد قيمة عشوائية جديدة للموقع x

def random_x():
return random.randint(-360, 360)

default_sleep = 0.1
game_on = True
while game_on:
my_turtle.goto(random_x(), 290) # استخدم الدالة random_x لتوليد موقع عشوائي
screen.update()

time.sleep(default_sleep)
my_turtle.sety(my_turtle.ycor() - 10)

if my_turtle.ycor() < -300:
    if my_turtle.shape() == 'circle':
        score.point(1)
        default_sleep *= 0.9
    if my_turtle.shape() == 'square':
        score.point(2)
        default_sleep *= 0.9
        
    if my_turtle.shape() == 'triangle':
        score.reset()
        default_sleep *= 0.9

    if my_turtle.shape() == 'turtle' and my_turtle.color() == 'white':
        score.game_over()

    # بعد سقوط السلحفاة، يتم إعادة تموضعها في الأعلى مرة أخرى
    my_turtle.goto(random_x(), 290)  # استخدم الدالة random_x لتوليد موقع عشوائي

time.sleep(default_sleep)

score.py
from turtle import Turtle , Screen
screen = Screen()
class Sscorboard(Turtle):
def init(self):
super().init()
self.color(“white”)
self.hideturtle()
self.penup()
self.score = 0
self.update_score()

def point(self,x):
    self.score += x 
    self.update_score()

def reset(self):
    self.score =0 
    self.update_score()

def update_score(self):
    self.clear()
    self.goto(0,250)
    self.write(self.score, align='center', font=('courier', 40, 'normal'))

def game_over(self):
    self.screen.bgcolor("darkred")
    self.goto(0,0)
    self.write(f"Game Over \nFinal Score: {self.score}", align="center", font=("Arial", 30, "normal"))

rain.py
from turtle import Turtle
import random

shapes = ‘classic’, ‘turtle’, ‘triangle’, ‘classic’, ‘arrow’, ‘square’, ‘circle’
colors = ‘black’, ‘blue’, ‘green’, ‘red’, ‘yellow’, ‘purple’, ‘pink’, ‘orange’, ‘white’, ‘gray’, ‘cyan’

width = random.randint(1,3) # Random width between 1 and 10
length = random.randint(1,3) # Random length between 1 and 10
outline = random.randint(1,2) # Random outline thickness between 1 and 5

class My_turtles(Turtle):
def init(self):
super().init()
self.color(random.choice(colors))
self.shape(random.choice(shapes))
self.shapesize(stretch_wid=width, stretch_len=length, outline=outline)
self.penup()
self.setheading(270)

paddle.py
from turtle import Turtle

class Paddle(Turtle):
def init(self, position):
super().init()
self.shape(“square”)
self.color(“white”)
self.penup()
self.goto(position)
self.shapesize(stretch_wid=5,stretch_len=1)

def go_left(self):
    self.goto(self.xcor() - 40, self.ycor())

def go_right(self):
    self.goto(self.xcor() + 40, self.ycor())
إعجابَين (2)

ارسل الكود بشكل منسق حتى تبان المشكلة اكثر

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

راه منظم غي تبع من لول غتلقا

main.py
code
score.py
code
rain.py
code
paddle.py

إعجابَين (2)

لا يظهر اي كود في الرد ربما هناك خطا في لصق الكود

ايضا عندما ترسل الكود سترى خانة كود منظم اضغط عليها وارسل الكود

إعجابَين (2)
  1. مشكلة علامات التنصيص:

استخدم علامات التنصيص المزدوجة " بدلاً من الأحادية ‘ و’، لأن علامات التنصيص الأحادية المستخدمة في الكود غير صحيحة وستؤدي إلى حدوث خطأ. استبدلها كالتالي:

screen.bgcolor(“black”)
screen.title(“OctuCode: My Game”)
screen.onkey(paddle.go_left, “Left”)
screen.onkey(paddle.go_right, “Right”)

  1. إصلاح init في الكلاسات:

في كلاسات Sscorboard, My_turtles, و Paddle، يجب أن يكون اسم الدالة init وليس init. تأكد من تعديله كما يلي:

class Sscorboard(Turtle):
def init(self):
super().init()
# بقية الكود هنا

  1. إضافة الموقع الأولي عند إنشاء Paddle:

قم بتمرير الموقع الأولي عند إنشاء Paddle في ملف main.py:

paddle = Paddle((0, -250)) # موقع paddle افقي بالقرب من الأسفل

  1. تحديث rain.py:

في ملف rain.py، تأكد من استخدام العلامات الصحيحة لـ shapes و colors (باستخدام بدلاً من الأقواس العادية ()).

shapes = [“classic”, “turtle”, “triangle”, “classic”, “arrow”, “square”, “circle”]
colors = [“black”, “blue”, “green”, “red”, “yellow”, “purple”, “pink”, “orange”, “white”, “gray”, “cyan”]

  1. إصلاح المتغيرات العشوائية:

في rain.py، قم بتحديث قيم width, length, و outline داخل دالة init حتى تُنشأ عند كل عملية إنشاء سلحفاة جديدة:

class My_turtles(Turtle):
def init(self):
super().init()
self.color(random.choice(colors))
self.shape(random.choice(shapes))
self.width = random.randint(1, 3)
self.length = random.randint(1, 3)
self.outline = random.randint(1, 2)
self.shapesize(stretch_wid=self.width, stretch_len=self.length, outline=self.outline)
self.penup()
self.setheading(270)

الكود النهائي:

بعد إجراء التعديلات السابقة، سيكون كود main.py على الشكل التالي:

from turtle import Screen, Turtle
from paddle_M import Paddle
from score import Sscorboard
from rain import My_turtles
import time
import random

screen = Screen()
screen.tracer(0)
screen.setup(800, 600)
screen.bgcolor(“black”)
screen.title(“OctuCode: My Game”)
paddle = Paddle((0, -250)) # الموقع الأولي paddle افقي بالقرب من الأسفل
score = Sscorboard()
my_turtle = My_turtles()

screen.listen()
screen.onkey(paddle.go_left, “Left”)
screen.onkey(paddle.go_right, “Right”)

def random_x():
return random.randint(-360, 360)

default_sleep = 0.1
game_on = True

while game_on:
my_turtle.goto(random_x(), 290) # الموقع العشوائي x
screen.update()
time.sleep(default_sleep)
my_turtle.sety(my_turtle.ycor() - 10)

if my_turtle.ycor() < -300:
    if my_turtle.shape() == 'circle':
        score.point(1)
        default_sleep *= 0.9
    elif my_turtle.shape() == 'square':
        score.point(2)
        default_sleep *= 0.9
    elif my_turtle.shape() == 'triangle':
        score.reset()
        default_sleep *= 0.9
    elif my_turtle.shape() == 'turtle' and my_turtle.color() == 'white':
        score.game_over()
        game_on = False  # إيقاف اللعبة عند game_over

    my_turtle.goto(random_x(), 290)  # إعادة التموضع
from turtle import Screen, Turtle
import time
import random

# إعداد الشاشة
screen = Screen()
screen.tracer(0)
screen.setup(800, 600)
screen.bgcolor("black")
screen.title("OctuCode: My Game")

# دالة لتوليد قيمة عشوائية للموقع x
def random_x():
    return random.randint(-360, 360)

# كلاس النقاط
class Sscorboard(Turtle):
    def __init__(self):  # تصحيح __init__
        super().__init__()  # تصحيح __init__
        self.color("white")
        self.hideturtle()
        self.penup()
        self.score = 0
        self.update_score()

    def point(self, x):
        self.score += x
        self.update_score()

    def reset(self):
        self.score = 0
        self.update_score()

    def update_score(self):
        self.clear()
        self.goto(0, 250)
        self.write(self.score, align='center', font=('Courier', 40, 'normal'))

    def game_over(self):
        screen.bgcolor("darkred")
        self.goto(0, 0)
        self.write(f"Game Over \nFinal Score: {self.score}", align="center", font=("Arial", 30, "normal"))

# كلاس السلحفاة المتساقطة
class My_turtles(Turtle):
    def __init__(self):  # تصحيح __init__
        super().__init__()  # تصحيح __init__
        shapes = ["classic", "turtle", "triangle", "arrow", "square", "circle"]
        colors = ["blue", "green", "red", "yellow", "purple", "pink", "orange", "gray", "cyan"]
        self.color(random.choice(colors))
        self.shape(random.choice(shapes))
        self.width = random.randint(1, 3)
        self.length = random.randint(1, 3)
        self.outline = random.randint(1, 2)
        self.shapesize(stretch_wid=self.width, stretch_len=self.length, outline=self.outline)
        self.penup()
        self.goto(random_x(), 290)  # تموضع السلحفاة في موقع عشوائي في الأعلى
        self.setheading(270)  # جعل السلحفاة متجهة لأسفل

    def reset_position(self):
        self.goto(random_x(), 290)  # إعادة تموضع السلحفاة في موقع عشوائي في الأعلى
        self.color(random.choice(["blue", "green", "red", "yellow", "purple", "pink", "orange", "gray", "cyan"]))
        self.shape(random.choice(["classic", "turtle", "triangle", "arrow", "square", "circle"]))

# كلاس المضرب
class Paddle(Turtle):
    def __init__(self, position):  # تصحيح __init__
        super().__init__()  # تصحيح __init__
        self.shape("square")
        self.color("white")
        self.penup()
        self.goto(position)
        self.shapesize(stretch_wid=1, stretch_len=5)  # تكبير حجم المضرب أفقيا

    def go_left(self):
        self.goto(self.xcor() - 40, self.ycor())

    def go_right(self):
        self.goto(self.xcor() + 40, self.ycor())

# إنشاء العناصر
paddle = Paddle((0, -250))  # المضرب بالقرب من الأسفل
score = Sscorboard()
my_turtle = My_turtles()  # إنشاء السلحفاة

# إعداد التحكم
screen.listen()
screen.onkey(paddle.go_left, "Left")
screen.onkey(paddle.go_right, "Right")

# إعدادات اللعبة
default_sleep = 0.1
game_on = True

# حلقة اللعبة
while game_on:
    screen.update()
    time.sleep(default_sleep)
    my_turtle.sety(my_turtle.ycor() - 10)  # جعل السلحفاة تتحرك لأسفل

    # التحقق من موقع السلحفاة
    if my_turtle.distance(paddle) < 50 and my_turtle.ycor() < -230:  # التحقق من التصادم مع المضرب
        if my_turtle.shape() == 'circle':
            score.point(1)
            default_sleep *= 0.9
        elif my_turtle.shape() == 'square':
            score.point(2)
            default_sleep *= 0.9
        elif my_turtle.shape() == 'triangle':
            score.reset()
            default_sleep *= 0.9
        elif my_turtle.shape() == 'turtle' and my_turtle.color() == 'white':
            score.game_over()
            game_on = False  # إيقاف اللعبة عند Game Over

        # إعادة تموضع السلحفاة بعد لمس المضرب
        my_turtle.reset_position()

    # التحقق إذا السلحفاة وصلت لأسفل الشاشة بدون لمس المضرب
    if my_turtle.ycor() < -300:
        my_turtle.reset_position()

    time.sleep(default_sleep)

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

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

اسف بس مش فاهم قصدك
يعني الاكل بيدنو مستمر لتحت

إعجابَين (2)

الاكل بيروح يمين يسار وبسرعه
المفروض ينزل تحت ووبطئ

إعجابَين (2)

معلش ممكن تبعت الكود تاني بس بالترتيب أو ابعتلك رقمي تبت علي الوتس

إعجابَين (2)

بس اكيد انتا مش عامل tracer

إعجابَين (2)
from turtle import Screen, Turtle
import time
import random

# إعداد الشاشة
screen = Screen()
screen.tracer(0)
screen.setup(800, 600)
screen.bgcolor("black")
screen.title("OctuCode: My Game")

# دالة لتوليد قيمة عشوائية للموقع x
def random_x():
    return random.randint(-360, 360)

# كلاس النقاط
class Sscorboard(Turtle):
    def __init__(self):  # تصحيح __init__
        super().__init__()  # تصحيح __init__
        self.color("white")
        self.hideturtle()
        self.penup()
        self.score = 0
        self.update_score()

    def point(self, x):
        self.score += x
        self.update_score()

    def reset(self):
        self.score = 0
        self.update_score()

    def update_score(self):
        self.clear()
        self.goto(0, 250)
        self.write(self.score, align='center', font=('Courier', 40, 'normal'))

    def game_over(self):
        screen.bgcolor("darkred")
        self.goto(0, 0)
        self.write(f"Game Over \nFinal Score: {self.score}", align="center", font=("Arial", 30, "normal"))

# كلاس السلحفاة المتساقطة
class My_turtles(Turtle):
    def __init__(self):  # تصحيح __init__
        super().__init__()  # تصحيح __init__
        shapes = ["classic", "turtle", "triangle", "arrow", "square", "circle"]
        colors = ["blue", "green", "red", "yellow", "purple", "pink", "orange", "gray", "cyan"]
        self.color(random.choice(colors))
        self.shape(random.choice(shapes))
        self.width = random.randint(1, 3)
        self.length = random.randint(1, 3)
        self.outline = random.randint(1, 2)
        self.shapesize(stretch_wid=self.width, stretch_len=self.length, outline=self.outline)
        self.penup()
        self.goto(random_x(), 290)  # تموضع السلحفاة في موقع عشوائي في الأعلى
        self.setheading(270)  # جعل السلحفاة متجهة لأسفل

    def reset_position(self):
        self.goto(random_x(), 290)  # إعادة تموضع السلحفاة في موقع عشوائي في الأعلى
        self.color(random.choice(["blue", "green", "red", "yellow", "purple", "pink", "orange", "gray", "cyan"]))
        self.shape(random.choice(["classic", "turtle", "triangle", "arrow", "square", "circle"]))

# كلاس المضرب
class Paddle(Turtle):
    def __init__(self, position):  # تصحيح __init__
        super().__init__()  # تصحيح __init__
        self.shape("square")
        self.color("white")
        self.penup()
        self.goto(position)
        self.shapesize(stretch_wid=1, stretch_len=5)  # تكبير حجم المضرب أفقيا

    def go_left(self):
        self.goto(self.xcor() - 40, self.ycor())

    def go_right(self):
        self.goto(self.xcor() + 40, self.ycor())

# إنشاء العناصر
paddle = Paddle((0, -250))  # المضرب بالقرب من الأسفل
score = Sscorboard()
my_turtle = My_turtles()  # إنشاء السلحفاة

# إعداد التحكم
screen.listen()
screen.onkey(paddle.go_left, "Left")
screen.onkey(paddle.go_right, "Right")

# إعدادات اللعبة
default_sleep = 0.1
game_on = True

# حلقة اللعبة
while game_on:
    screen.update()
    time.sleep(default_sleep)
    my_turtle.sety(my_turtle.ycor() - 10)  # جعل السلحفاة تتحرك لأسفل

    # التحقق من موقع السلحفاة
    if my_turtle.distance(paddle) < 50 and my_turtle.ycor() < -230:  # التحقق من التصادم مع المضرب
        if my_turtle.shape() == 'circle':
            score.point(1)
            default_sleep *= 0.9
        elif my_turtle.shape() == 'square':
            score.point(2)
            default_sleep *= 0.9
        elif my_turtle.shape() == 'triangle':
            score.reset()
            default_sleep *= 0.9
        elif my_turtle.shape() == 'turtle' and my_turtle.color() == 'white':
            score.game_over()
            game_on = False  # إيقاف اللعبة عند Game Over

        # إعادة تموضع السلحفاة بعد لمس المضرب
        my_turtle.reset_position()

    # التحقق إذا السلحفاة وصلت لأسفل الشاشة بدون لمس المضرب
    if my_turtle.ycor() < -300:
        my_turtle.reset_position()

    time.sleep(default_sleep)
إعجابَين (2)

ده main.py
صح كدا ::::::

إعجابَين (2)

هذا كله الكود الي يشغل اللعبة خليته بملف واحد
انسخه ويشتغل تلقائي

إعجابَين (2)

تمام بشوف الكود وبخبرك الحين أن شاءالله

إعجابَين (2)

إعجابَين (2)

انا شغلت الكود كان كل ال init غير مظبوط
لما شغلت كان شغال تمام ايش المشكلة مش فاهم
انا الي لاحظتو انو بطيء فقط

إعجابَين (2)

اذهب الى اول الرسالة هذا الكود الي فيه الخطا

إعجابَين (2)

اه فهمتك تمام يعني الكود الخطأ مش تبعك تم

إعجابَين (2)

على فكرة
علامات التنصيص الأحادية بتشتغل بدون مشاكل
انا مبشتغلش غير بيها

3 إعجابات