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

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())
3 إعجابات

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

إعجابَين (2)

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

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

3 إعجابات

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

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

3 إعجابات
  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)  # إعادة التموضع
إعجاب واحد (1)
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)

إعجابَين (2)

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

3 إعجابات

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

3 إعجابات

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

3 إعجابات

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

3 إعجابات
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)
3 إعجابات

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

3 إعجابات

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

3 إعجابات

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

3 إعجابات

3 إعجابات

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

3 إعجابات

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

3 إعجابات

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

3 إعجابات

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

4 إعجابات