الملف الرئيس game.py
from turtle import Turtle ,Screen
from paddle import Paddle
from ball import Ball
from score import Score
import time
window = Screen()
window.setup(1000,700)
window.title("Ping Pong")
window.bgcolor("black")
window.tracer(0)
choose = Paddle((-80,125))
window.listen()
window.onkey(choose.choose_1,"1")
window.onkey(choose.choose_2,"2")
game_on = False
choose.choose_masseg() # طباعة صفحة الاختيار
# التحقق من اختيار المستخدم
while True :
if choose.choose > 0 :
game_on = True
choose.clear()
break
window.update()
r_paddle = Paddle((460,0))
y_paddle = Paddle((-460,0))
ball = Ball()
r_score = Score((400,300))
y_score = Score((-400,300))
window.onkey(r_paddle.up,"Up")
window.onkey(r_paddle.down,"Down")
# متغير سرعة عصة الكمبيوتر
move = 10
while game_on :
window.update()
time.sleep(0.1)
# حركة الكرة
ball.goto(ball.xcor() + ball.x_move , ball.ycor() + ball.y_move)
# العب مع الكمبيوتر
if choose.choose == 1 :
if ball.xcor() < 200 :
if y_paddle.ycor() < ball.ycor() :
y_paddle.goto(y_paddle.xcor(),y_paddle.ycor()+move )
elif y_paddle.ycor() > ball.ycor() :
y_paddle.goto(y_paddle.xcor(),y_paddle.ycor()-move )
# العب مع صديق
else:
window.onkey(y_paddle.up,"w")
window.onkey(y_paddle.down,"s")
# تغيير اتجاه الكرة عند التصادم اعلى واسفل
if ball.ycor() >= 330 or ball.ycor() <= -330 :
ball.y_move *= -1
# تحقق من اصدام الكرة باالمضرب
if ( ball.xcor() >= 435 and ball.distance(r_paddle) <= 50 ) or ( ball.xcor() <= -435 and ball.distance(y_paddle) <= 50 ) :
ball.x_move *= -1
# زيادة سرعة الكرة
if ball.x_move > 0 :
ball.x_move += 1
else:
ball.x_move -= 1
if ball.y_move > 0 :
ball.y_move += 1
else:
ball.y_move -= 1
# زيادة سرعة عصة الكومبيوتر
move += 1
# اعادة الكرة الى المنتصف وطباعة السكور و عكس اتجاه الكرة
if ball.xcor() >= 485 :
y_score.increase_score_1()
ball.goto(0,0)
ball.x_move = -10
ball.y_move = -10
move = 10
elif ball.xcor() <= -485 :
r_score.increase_score_2()
ball.goto(0,0)
ball.x_move = 10
ball.y_move = 10
move = 10
window.exitonclick()
ملف 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(5,1)
self.choose = 0
def up(self) :
self.goto(self.xcor(),self.ycor()+30)
def down(self) :
self.goto(self.xcor(),self.ycor()-30)
def choose_1(self) :
self.choose = 1
def choose_2(self) :
self.choose = 2
def choose_masseg(self) :
self.color("blue")
self.hideturtle()
self.write("️⚽️",align="center", font=("Arial",100,"normal"))
self.color("white")
self.goto(0,0)
self.write(f" للعب مع الكومبيوتر اضغط رقم : 1",align="center", font=("Arial",30,"normal"))
self.goto(0,-100)
self.write(f" للعب مع صديقك اضغط رقم : 2",align="center", font=("Arial",30,"normal"))
ملف ball.py
from turtle import Turtle
class Ball(Turtle) :
def __init__(self) :
super().__init__()
self.x_move = +10
self.y_move = +10
self.shape("circle")
self.color("white")
self.penup()
ملف score.py
from turtle import Turtle
class Score(Turtle) :
def __init__(self,position):
super().__init__()
self.color("white")
self.penup()
self.hideturtle()
self.goto(position)
self.score_1 = 0
self.score_2 = 0
self.update_score_1()
self.update_score_2()
def increase_score_1(self) :
self.score_1 += 1
self.update_score_1()
def increase_score_2(self) :
self.score_2 += 1
self.update_score_2()
def update_score_1(self) :
self.clear()
self.write(f"( Score : {self.score_1} )",align="center", font=("Arial",20,"normal"))
def update_score_2(self) :
self.clear()
self.write(f"( Score : {self.score_2} )",align="center", font=("Arial",20,"normal"))