السلام عليكم
لقد تم اضافة بعض الاضافات الى العبة مثل المغناطيس والسرعة واطلاق صاروخ على الحجارة لتدميرها
وتم تقسيم العبة الى ثلاث مراحل
اذا احب احد تجربة العبة سوف ارسل له الكود
4 إعجابات
جميل
اللهم بارك
مجهود رائع
3 إعجابات
جميل عمل وحهد رائع
ممكن ترسل الكود لكي نجرب اللعبة
إعجابَين (2)
والله عاش عليكم ي شباااب
بارك الله فيك ي اخي تسلم ايدك اللعبة شكلها حلو خالص تحياتي لك…
ممكن ترسل لنا الكود .
3 إعجابات
هذا الكود اذا احب احد تجربة العبة وبتمنا تعطوني رئيكم وبعض التحسينات والمساعدات في تحسين الكود
الملف الرئيسي game.py
from turtle import Turtle ,Screen
import time
from snake import Snake
from food import Food
from score import Score
from aid import Aid
from stones import Stones
window = Screen()
window.setup(800,800)
window.bgcolor("black")
window.tracer(0)
score = Score()
score.help_message() # طباعة رسالة البداية
window.update()
time.sleep(10)
score.turtles_print[3].clear() # حذف رسالة البداية
snake = Snake()
food = Food()
aid = Aid()
stones = Stones()
# تحديث بداية المراحل
def update_level() :
global time_magnet
global time_speed
global rocket
global time_1
stones.remove() # حذف الحجارة
score.score = 0 # اعادةالسكور صفر
score.update_score() # طباعة السكور
score.attempts = 3 # تجديد المحاولات
score.attempts_print() # طباعة المحاولات
for i in range(len(stones.turtles_wall)-1,-1,-1) :# حذف الحجارة من القائمة
del stones.turtles_wall[i]
for i in range(len(snake.turtles)-3,0,-1) :# حذف جسم الثعبان وابقاء 3 قطع فقط
snake.turtles[i].hideturtle()
del snake.turtles[i]
food.hideturtle() # اخفاء الطعام
if rocket == 1 : # حذف الصاروخ
snake.turtle_rocket.hideturtle()
rocket = 0
time_1 = 0 # ارجاع وقت المساعدات 0
aid.clear() # حذف المساعدات
for i in snake.turtles : # نقل الثعبان الى مكان البداية
i.goto(0,-300)
i.setheading(90)
time_speed = 0 # ايقاف السرعة
time_magnet = 0 # ايقاف الغناطيس
#------------------------------------------------------------------------
# وقت عرض المساعدات
time_1 = 0
#-------------------------------
# وقت السرعة
time_speed = 0
#-------------------------------
# قوت المغناطيس
magnet = 0
# وقت المغناطيس
time_magnet = 0
#--------------------------------
# تفعيل اطلاق الصاروخ
operated = 0
# عدد الصواريخ
rocket = 0
#------------------------------------------------------------------------
# دالة لارجاع رقم 1 عند الضغط على حرف (w) لتفعيل اطلاق الصاروخ
def up_rocket() :
global operated
operated = 1
#----------------------------------------------
# ايقاف تفعيل التصادم بلصخور لوقت محدد
taim_collision = 10
#-------------------------------------------------------------------------
level = 22 # تشغيل المراحل
#-----------------------------------------------
game_on = True
while game_on :
window.update()
time.sleep(0.1)
window.listen()
window.onkey(snake.up,"Up")
window.onkey(snake.down,"Down")
window.onkey(snake.right,"Right")
window.onkey(snake.left,"Left")
window.onkey(up_rocket,"w")
#---------------------------------------------------------------------------
# شرط طعام الثعبان
if snake.haede.distance(food) < magnet :
food.go_food(snake.haede)
if snake.haede.distance(food) < 20 :
if level <= 10 :
food.appear_level_1 ()
snake.height()
score.increase_score()
level += 1
elif level <= 21 :
food.appear_level_2 ()
snake.height()
score.increase_score()
level += 1
else:
food.appear_level_3 ()
snake.height()
score.increase_score()
level += 1
#-------------------------------------------------------------------------
# شرط طباعة المساعدات
time_1 += 1
if time_1 == 200 :
aid.clear()
aid.help_spot()
time_1 = 0
#------------------------------------------------------------------------
# شروط تفعيل المساعدات
if snake.haede.distance(aid) < 25 and aid.random_help == 1 :
aid.clear()
time_speed = 100
aid.goto(400,0)
elif snake.haede.distance(aid) < 25 and aid.random_help == 2 :
aid.clear()
time_magnet = 150
aid.goto(400,0)
elif snake.haede.distance(aid) < 25 and aid.random_help == 3 and rocket == 0 :
aid.clear()
snake.rocket()
rocket = 1
aid.goto(400,0)
# ----------------------------------------------------------------------------
# شرط السرعة
if time_speed > 0 :
snake.move(21)
time_speed -= 1
else:
snake.move(15)
#----------------------------------------------------------------------------
# شرط المغناطيس
if time_magnet > 0 :
magnet = 150
time_magnet -= 1
else :
magnet = 20
#---------------------------------------------------------------------------
# شرط اطلاق الصاروخ
if rocket > 0 :
if operated == 1 :
snake.operated_rocket(window,stones.turtles_wall)
rocket = 0
operated = 0
else:
snake.go_rocket()
snake.move_rocket()
else:
operated = 0
#-----------------------------------------------------------------------------
# شرط التصادم بالصخور
for i in range(len(stones.turtles_wall)):
if snake.haede.distance(stones.turtles_wall[i]) < 20 :
snake.move(0)
snake.haede.left(180)
snake.haede.forward(10)
snake.haede.left(90)
if snake.haede.distance(stones.turtles_wall[i]) < 20 :
snake.haede.left(180)
if taim_collision >= 10 :
score.increase_attempts()
taim_collision = 0
if score.attempts == 0 :
game_on = False
score.game_over()
else:
if taim_collision <= 10 :
taim_collision += 1
#---------------------------------------------------------------------------------
if level == 0 : # تشغيل المرحلة الاولى
update_level()
window.bgcolor("wheat")
score.turtles_print[2].color("red")
score.turtles_print[2].write("( LEVEL : 1 )",align="center", font=("courier",40,"bold"))
window.update()
time.sleep(5)
score.turtles_print[2].clear()
window.bgcolor("gray80")
stones.wall_level(stones.position_level_1)
food.appear_level_1()
level += 1
elif level == 11 : # تشغيل المرحلة الثانية
update_level()
window.bgcolor("wheat")
score.turtles_print[2].color("red")
score.turtles_print[2].write("( you win )",align="center", font=("courier",40,"bold"))
window.update()
time.sleep(5)
score.turtles_print[2].clear()
score.turtles_print[2].write("( LEVEL : 2 )",align="center", font=("courier",40,"bold"))
window.update()
time.sleep(5)
score.turtles_print[2].clear()
window.bgcolor("gray80")
stones.wall_level(stones.position_level_2)
food.appear_level_2()
level += 1
elif level == 22 : # تشغيل المرحلة الثالثة
update_level()
window.bgcolor("wheat")
score.turtles_print[2].color("red")
score.turtles_print[2].write("( you win )",align="center", font=("courier",40,"bold"))
window.update()
time.sleep(5)
score.turtles_print[2].clear()
score.turtles_print[2].write("( LEVEL : 3 )",align="center", font=("courier",40,"bold"))
window.update()
time.sleep(5)
score.turtles_print[2].clear()
window.bgcolor("gray80")
stones.wall_level(stones.position_level_3)
food.appear_level_3()
level += 1
elif level == 36 : # ايقاف العبة
game_on = False
window.clear()
score.turtles_print[2].write(" الى القاء\n انتظرو المراحل القادمة",align="center", font=("courier",40,"bold"))
# شرط التصادم بلحائط
if snake.haede.xcor() > 380 or snake.haede.xcor() < -380 or snake.haede.ycor() > 380 or snake.haede.ycor() < -380 and taim_collision >= 20 :
snake.haede.left(180)
score.increase_attempts()
if score.attempts == 0 :
game_on = False
score.game_over()
ملف الثعبان snake.py
from turtle import Turtle
import time
class Snake :
def __init__(self) :
self.turtles = []
self.position = [(0,-300),(0,-320),(0,-340)]
self.create_snake()
self.haede = self.turtles[-1]
self.haede.color("DarkGreen")
def create_snake(self) :
for i in range(len(self.position)):
new_turtle = Turtle("circle")
new_turtle.color("chartreuse4")
new_turtle.penup()
new_turtle.goto(self.position[i])
self.turtles.append(new_turtle)
def move(self,speed):
for i in range(len(self.turtles)-1) :
self.turtles[i].goto(self.turtles[i + 1].pos())
self.haede.forward(speed)
def up(self) :
self.haede.setheading(90)
def down(self) :
self.haede.setheading(270)
def right(self) :
self.haede.setheading(0)
def left(self):
self.haede.setheading(180)
def height(self) :
turtle = Turtle("circle")
turtle.color("chartreuse4")
turtle.penup()
self.turtles.insert(0,turtle)
def rocket(self) :
self.turtle_rocket = Turtle("arrow")
self.turtle_rocket.color("yellow","chartreuse")
self.turtle_rocket.penup()
self.turtle_rocket.goto(self.haede.pos())
def move_rocket(self) :
self.turtle_rocket.goto(self.turtles[-1].pos())
def go_rocket(self) :
if self.haede.heading() == 0 :
self.turtle_rocket.setheading(0)
elif self.haede.heading() == 90 :
self.turtle_rocket.setheading(90)
elif self.haede.heading() == 180 :
self.turtle_rocket.setheading(180)
else:
self.turtle_rocket.setheading(270)
# دالة لاطلاق الصاروخ والتحقق من الاصتدام والوقوف عند الاستضام
def operated_rocket(self,window,turtles_wall) :
self.go_rocket()
forward = 5
self.turtle_rocket.color("red")
for _ in range(40):
self.turtle_rocket.forward(forward)
window.update()
for y in range(len(turtles_wall)-1,-1,-1):
if self.turtle_rocket.distance(turtles_wall[y]) < 20 :
forward = 0
turtles_wall[y].clear()
turtles_wall[y].hideturtle()
del turtles_wall[y]
self.turtle_rocket.hideturtle()
ملف الطعام food.py
from turtle import Turtle
import random
class Food(Turtle) :
def __init__(self):
super().__init__()
self.level_3 = 0
self.shape("turtle")
self.color("green4")
self.speed("slowest")
self.penup()
self.shapesize(0.8,0.8)
self.showturtle()
def appear_level_1(self) :
self.showturtle()
random_x = random.randint(-380,380)
random_y = random.randint(-380,380)
self.goto(random_x,random_y)
self.shapesize(0.8,0.8)
def appear_level_2(self) :
self.showturtle()
position_food_2 = [(-10,90),(275,250),(-275,250),(275,-215),(-275,-215)]
self.goto(random.choice(position_food_2))
self.shapesize(0.8,0.8)
def appear_level_3(self) :
self.showturtle()
position_food_3 = [(-30,-60),(120,-60),(60,25),(-90,25),(-60,+101),(120,+101),(90,+170),(-90,+170),(-152,+225),
(90,+170),(-90,25),(120,-60),(-120,-150),(-130,-150)]
self.goto(position_food_3[self.level_3])
self.shapesize(0.8,0.8)
self.level_3 += 1
# جعل الطعام يتبع الثعبان عند تفعيل المغناطيس
def go_food(self,haede) :
for _ in range(10):
if int(haede.xcor()) < int(self.xcor()):
self.setheading(180)
self.clear()
self.forward(1)
self.shapesize(0.6,0.6)
elif int(haede.xcor()) > int(self.xcor()):
self.setheading(0)
self.clear()
self.forward(1)
self.shapesize(0.6,0.6)
if int(haede.ycor()) > int(self.ycor()):
self.setheading(90)
self.clear()
self.forward(1)
self.shapesize(0.6,0.6)
elif int(haede.ycor()) < int(self.ycor()):
self.setheading(270)
self.clear()
self.forward(1)
self.shapesize(0.6,0.6)
ملف الحجارة stones.py
from turtle import Turtle
class Stones :
def __init__(self) :
self.turtles_wall = []
# مواقع احجار المستوى الاول
self.position_level_1 = [(-40,40),(-10,40),(20,40)]
# مواقع احجار المستوى ثاني
self.position_level_2 = [(-70,100),(-70,70),(-70,40),(-40,40),(-10,40),(20,40),(50,40),(50,70),(50,100),
(300,200),(270,200),(240,200),(240,230),
(-300,200),(-270,200),(-240,200),(-240,230),
(-300,-200),(-270,-200),(-240,-200),(-240,-230),
(300,-200),(270,-200),(240,-200),(240,-230)]
# مواقع احجار المستوى الثالث
self.position_level_3 = [(-180,-120),(-180,-90),(-180,-60),(-180,-30),(-180,0),(-180,30),(-180,60),(-180,90),(-180,120),(-180,150),(-180,180),
(+180,-120),(+180,-90),(+180,-60),(+180,-30),(+180,0),(+180,30),(+180,60),(+180,90),(+180,120),(+180,150),(+180,180),
(-60,-120),(-30,-120),(0,-120),(30,-120),(60,-120),(90,-120),(120,-120),(150,-120),
(-150,-30),(-120,-30),(-90,-30),(-60,-30),(-30,-30),(0,-30),(30,-30),(60,-30),(90,-30),
(-90,+50),(-60,+50),(-30,+50),(0,+50),(30,+50),(60,+50),(90,+50),(120,+50),(150,+50),
(-150,+120),(-120,+120),(-90,+120),(-60,+120),(-30,+120),(0,+120),(30,+120),(60,+120),(90,+120),(120,+120),
(-120,+180),(-90,+180),(-60,+180),(-30,+180),(0,+180),(30,+180),(60,+180),(90,+180),(120,+180),(150,+180),]
def wall_level(self,position) :
for i in range(len(position)):
wall_turtle = Turtle("square")
wall_turtle.color("gray20")
wall_turtle.penup()
wall_turtle.shapesize(1.4,1.4)
wall_turtle.goto(position[i])
wall_turtle.hideturtle()
wall_turtle.write("🪨",align="center",font=("Arial",30,"normal"))
self.turtles_wall.append(wall_turtle)
wall_turtle.goto(wall_turtle.xcor(),wall_turtle.ycor()+17) # تصحيح مكان الحجارة مع مكان طباعة الحجارة
# حذف الحجارة
def remove(self) :
for i in self.turtles_wall :
i.clear()
ملف السكور والطباعة score.py
from turtle import Turtle
import time
class Score() :
def __init__(self) :
self.score = 0
self.attempts = 3
self.turtles_print = []
self.position_print = [(0,350),(300,350),(0,0),(0,275)]
self.create_turtle_print()
self.update_score()
self.attempts_print()
def create_turtle_print(self) :
for i in range(len(self.position_print)) :
turtle_print = Turtle("turtle")
turtle_print.color("red")
turtle_print.penup()
turtle_print.hideturtle()
turtle_print.goto(self.position_print[i])
self.turtles_print.append(turtle_print)
def update_score(self) :
self.turtles_print[0].clear()
self.turtles_print[0].write(f"( Score : {self.score} )",align="center", font=("Arial",20,"normal"))
def increase_score(self) :
self.score += 1
self.update_score()
def game_over(self) :
self.turtles_print[0].screen.bgcolor("darkred")
self.turtles_print[0].goto(0,0)
self.turtles_print[0].write(f"GAME OVER\nFinal Score: {self.score}",align="center", font=("Arial",20,"normal"))
def increase_attempts(self) :
self.attempts -= 1
self.attempts_print()
def attempts_print(self) :
self.turtles_print[1].clear()
if self.attempts == 3 :
self.turtles_print[1].write("🖤🖤🖤",align="center", font=("Arial",20,"normal"))
elif self.attempts == 2 :
self.turtles_print[1].write("🖤🖤💔",align="center", font=("Arial",20,"normal"))
else :
self.turtles_print[1].write("🖤💔💔",align="center", font=("Arial",20,"normal"))
def help_message(self) :
self.turtles_print[3].color("white")
self.turtles_print[3].write("التحكم : ( ⇅ ⇄ )",align="center", font=("Arial",30,"bold"))
self.turtles_print[3].goto(0,150)
self.turtles_print[3].write("اطلاق الصاروخ : W",align="center", font=("Arial",30,"bold"))
self.turtles_print[3].goto(0,50)
self.turtles_print[3].write("المساعدات",align="center", font=("Arial",30,"bold"))
self.turtles_print[3].goto(0,-50)
self.turtles_print[3].write("مغناطيس : 🧲️",align="center", font=("Arial",30,"bold"))
self.turtles_print[3].goto(0,-150)
self.turtles_print[3].write("ذيادة السرعة : ⏫",align="center", font=("Arial",30,"bold"))
self.turtles_print[3].goto(0,-250)
self.turtles_print[3].write("صاروخ : 🚀",align="center", font=("Arial",30,"bold"))
ملف المساعدات aid.py
from turtle import Turtle
import random
class Aid(Turtle) :
def __init__(self) :
super().__init__()
self.shape("arrow")
self.shapesize(0.5,0.5)
self.penup()
self.hideturtle()
self.goto(400,0)
self.random_help = 0
def help_spot(self) :
random_x = random.randint(-350,350)
random_y = random.randint(-350,350)
self.goto(random_x,random_y)
self.print_help()
def print_help(self):
help = [1,2,3]
self.random_help = random.choice(help)
if self.random_help == 1 :
self.color("green")
self.write("⏫", font=("Arial",18,"normal"))
elif self.random_help == 2 :
self.color("red")
self.write("🧲️",font=("Arial",18,"normal"))
else :
self.color("tomato")
self.write("🚀", font=("Arial",20,"normal"))
3 إعجابات
جميل الثعبان هو الي يتحرك
السلحفاة هي الطعام
جميل الدمج
إعجابَين (2)