انا عملت مشروع هوا عبارة عن انك ترسم من الكيبورد

ارسم من الكيبورد بيدك

حلو ولا عايز تحسين تنصحوني اعمل اية فيه عشان يبقا احسن


3 إعجابات

ده الكود
main.py

from turtle import Screen

from Draw import Draw_2

screen = Screen()

screen.title(“drawing program”)

screen.bgcolor(‘white’)

screen.setup(700,700)

draw = Draw_2(‘circle’, ‘black’)

screen.listen()

screen.onkey(draw.pen_up,‘p’)

screen.onkey(draw.pen_down,‘d’)

screen.onkey(draw.fd,‘Up’)

screen.onkey(draw.right,‘Right’)

screen.onkey(draw.left,‘Left’)

screen.onkey(draw.down,‘Down’)

screen.onkey(screen.reset, ‘r’)

while True:

screen.exitonclick()

ده الملف الثاني!

from turtle import Turtle

class Draw_2(Turtle):

def __init__(self, shape, color):
    super().__init__()
    self.shape(shape)
    self.color(color)


def fd(self):
    self.goto(self.xcor(), self.ycor() + 20)
def right(self):
    self.goto(self.xcor() + 20, self.ycor())    
def left(self):
    self.goto(self.xcor() - 20, self.ycor())    
def down(self):
    self.goto(self.xcor(), self.ycor() - 20) 
def pen_up(self):
    self.penup()       
def pen_down(self):
    self.pendown()
3 إعجابات

رائع اخي البرنامج باين انو بالفعل رائع بس في مشكلة في الكود عشان ما في شي داخل الوايل لووب اي كود
فلو امكن ان ترسل الكود كامل حتى نستطيع التجربة الرائعة

4 إعجابات

كدا عشان لو ضغطت كلك بالماوس مش يخرج

إعجابَين (2)

لا ال وايل لوب احذفة
كدا

3 إعجابات

عظييم ي اخي بجددد .
فكرة رائعة :two_hearts::two_hearts:
انا جربت اعمله بنفسي
وهذه هي النتيجة


_


Code
تم تعديلة

from turtle import Turtle , Screen
screen=Screen()
screen.bgcolor('black')
screen.setup(600,600)
turtle=Turtle("turtle")
turtle.color('white')
turtle.up()

def up():
    if turtle.heading()==90:
        turtle.fd(20)
    else:
        turtle.setheading(90)

def down():
    if turtle.heading() == 270:
        turtle.fd(20)
    else:
        turtle.setheading(270)
def left():
    if turtle.heading()==180:
        turtle.fd(20)
    else:
        turtle.setheading(180)
def right():
    if turtle.heading()==0:
        turtle.fd(20)
    else:
        turtle.setheading(0)
def clr():
    turtle.reset()
    turtle.color('white')
is_showed=False
def stop():
    global is_showed
    if is_showed:  # Ture
        is_showed=False
        turtle.up()
        clr()
    if turtle.pencolor() == screen.bgcolor():
        turtle.pencolor('white')
    else:
        if turtle.isdown():
            turtle.up()
        else:
            turtle.down()

def help():
    global is_showed
    is_showed=True
    screen.tracer(0)
    turtle.write('''
d-->To put a dot sign.
r-->To reset a turtle.
space-->To start/stop a draw.
''',font=('arial',20,'bold'),align='center')
    screen.tracer(1)
def delete():
    turtle.down()
    turtle.pencolor(screen.bgcolor())
screen.listen()
screen.onkey(clr,'r')
screen.onkey(up,"Up")
screen.onkey(down,"Down")
screen.onkey(left,"Left")
screen.onkey(right,"Right")
screen.onkey(turtle.dot,"d")
screen.onkey(stop,"space")
screen.onkey(help,"h")
screen.onkey(turtle.undo,"u")
screen.onkey(delete,"x")

screen.exitonclick()
4 إعجابات

ما شاء الله جميل جدا
فانكشن ال ستوب عجبتني
فكره جميلة برافو عليك
نستفيد منك🤍🩵

3 إعجابات

هذا من بعض ما عندكم دا مشروعك❤️
انا بس ضفت فيه بعض الاسطر
ممكن برضو نضيف فانكشن لعرض التعليمات للمستخدم وفانكشن للمسح وفانكشن لاعادة الضبط بالشكل دا


def clr():
    turtle.reset()
    turtle.color('white')
is_showed=False
def stop():
    global is_showed
    if is_showed:  # Ture
        is_showed=False
        turtle.up()
        clr()
    if turtle.isdown():
        turtle.up()
    else:
        turtle.down()

def help():
    global is_showed
    is_showed=True
    screen.tracer(0)
    turtle.write('''
d-->To put a dot sign.
r-->To reset a turtle.
space-->To start/stop a draw.
''',font=('arial',20,'bold'),align='center')
    screen.tracer(1)
def delete():
    turtle.down()
    turtle.pencolor(screen.bgcolor())

هنا ف حالة لو المستخدم ضغط ع حرف h هتظهرله التعلميمات ف اي مكان السلحفاء موجوده فيه .
وعشان اتاكد ان المستخدم ضغط علي حرف h وظهرتله التعليمات انشأت متغير وخزنت جواه بيانات من نوع بولين. وفي حالة تشغيل الفانكشن دي هخلي قيمته ب True.
عشان بعد كدا اقدر امسح التعليمات واخلي المستخدم يرسم براحته.

إعجابَين (2)

ما شاء الله كويس جدا

إعجابَين (2)

انا مش فاهم فانكشن stop

3 إعجابات
is_showed=False
def stop():
    global is_showed
    if is_showed:  # Ture
        is_showed=False
        turtle.up()
        clr()
    if turtle.pencolor() == screen.bgcolor():
        turtle.pencolor('white')
    else:
        if turtle.isdown():
            turtle.up()
        else:
            turtle.down()

الداله دي ببساطة وظيفتها الاساسية انها ترفع القلم وتنزله للرسم .


بس قبلها هي بتشيك ع كام حاجه كده
منها
بتتحقق لو المستخدم ضغط ع حرف ال h وشاف التعليمات والا لاء ؟

  • عشان تستدعي الدالة ال بتمسح الشاشة قبل ميبدأ رسم.

ثم التحقق التاني بيشوف لو المستخدم شغل الاستيكة (Eraser) والا لاء ؟؟

  • لو مشغلها بترجع لون الخط للابيض عشان يكمل رسم.
  • طب ولو مش مشغلها ؟؟!
  • بتشوف لو القلم مرفوع بتنزله ولو نازل بترفعه.
إعجابَين (2)

ايوا ما شاء الله
فهمت الحين

إعجابَين (2)

الحمد لله ي اخي :two_hearts::two_hearts:


إعجابَين (2)