كوود اللعبة ي شباااب Ping pong game Code

الملف الرئيسى main

from turtle import Screen
from paddle import Paddle
from ball import Ball
from border import Border
from scorebord import Scoreborde
import time
screen=Screen()
screen.title("Ping pong game")
screen.bgcolor("black")
screen.setup(700,700) 
screen.tracer(0)
r_paddle=Paddle((300,0))
l_paddle=Paddle((-300,0))
ball=Ball()
border=Border()   # الحواف 680  x=340 , y=340
r_score=Scoreborde((-170,290))    
l_score=Scoreborde((170,290))
while True:
    screen.update()
    time.sleep(.01)
    ball.move()
    if ball.ycor() > 320 or ball.ycor() < -320:
        ball.dy *=-1
    if ball.xcor() > 320:
        ball.home()
        ball.dx *=-1
        ball.dy *=-1
        l_score.increase_score()
    if ball.xcor() < -320 :
        ball.home()
        ball.dx *=-1
        r_score.increase_score()
    if ball.distance(r_paddle) < 30 or ball.distance(l_paddle) < 30 :  # 10+8+10
        ball.dx *=-1
    screen.listen()
    screen.onkey(r_paddle.up,"Up")
    screen.onkey(r_paddle.down,"Down")
    screen.onkey(l_paddle.up,"w")
    screen.onkey(l_paddle.down,"s")
screen.exitonclick()

ملف المضارب


from turtle import Turtle
class Paddle (Turtle):
    def __init__(self,posstion):
        super().__init__()
        self.shape('square')
        self.color('white')
        self.penup()
        self.goto(posstion)
        self.shapesize(5,1)
    def up(self):
        if self.ycor() < 300:
            self.sety(self.ycor()+50)
    def down(self):
        if self.ycor() > -300:
            self.sety(self.ycor()-50)


ملف الكرة

from turtle import Turtle 
class Ball(Turtle):
    def __init__(self):
        super().__init__()
        self.shape("circle")
        self.shapesize(.8,.8) # 16px
        self.color("blue")
        self.penup()
        self.speed=3
        self.dx=1
        self.dy=1
    def move(self):
        self.setx(self.xcor()+self.dx*self.speed)
        self.sety(self.ycor()+self.dy*self.speed)


ملف عمل الحدود

from turtle import Turtle

class Border(Turtle):
    def __init__(self):
        super().__init__()
        self.color('white')
        self.penup()
        self.pensize(10)
        self.hideturtle()
        self.goto(-340,340)
        self.create_border()
    def create_border(self):
        self.pendown()
        for _ in range(4):
            self.fd(680)
            self.rt(90)


ملف عمل لوحة الاهداف

from turtle import Turtle
class Scoreborde(Turtle):
    def __init__(self,postion):
        super().__init__()
        self.score=0
        self.hideturtle()
        self.penup()
        self.color('white')
        self.goto(postion)
        self.score_update()
    def score_update(self):
        self.write(f'Score:{self.score}'
                   ,align='center'
                   ,font=("arial",26,"bold"))
    def increase_score(self):
        self.clear()
        self.score+=1
        self.score_update()

صورة اللعبة

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

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

وانهئك واشجعك على الاستمرار في اختبار نفسك وممارسة اللغة والمحاولة في انشاء الكود قبل سماع شرح الكود
وجزاك الله خير على المشاركة اسعدتنا بمشاركتك

إعجابَين (2)

انا عندي مشكله
منتدي اكتوكود

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

شكررررا جدا ليك ع الدعم الحار دا ربنا يكرمك :heart::face_holding_back_tears:

فعلااا معاك حق ف كون الكرة بتتداخل مع المضرب :sweat_smile: لكن حاول اعدلها معرفتش والله انا قولت كدا وقولت ال عنده حل او تعديل يبعته وانجربه…
بالنسبة لحركة المضرب ف دي هغيرها باذن الله تعالى.
لو ف اي شي تاني قوولي :heart::face_holding_back_tears:

إعجابَين (2)

اكيد انت عامل لوب وسايبه صح …
ابعت الكود كدا

إعجاب واحد (1)
إعجابَين (2)

العفو اخي الكريم بارك الله فيك :rose:

باذن الله غدا اجرب بعمل حل لهذه المشكلة :+1:

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