فى بايثون على فيجول فى لعبة الثعبان كتبت كل الاكواد الخاصة بالعبه وشاشة العرض بتظهر وتختفى بسرعه ومفيش اخطأ بتظهر وكاتبه فى اخر الكود
()Window.exitonclick
ممكن حل للمشكله
إعجابَين (2)
ارسل صورة للكود مشان تبان المشكلة اكثر
إعجابَين (2)
كانت مشكله فى امتداد المف وكتبته تانى بس المشكله بيظهر شاشة GAME OVER اول ميشتغل الكود
إعجابَين (2)
تأكد من كلمة window الحرف الأول صغير أو كبير!
إعجابَين (2)
- الكائن
snake
:
- غير معرّف في الكود الموجود بالصورة. تحتاج إلى إنشاء كائن
snake
باستخدام كلاس أو وظيفة تنشئ ثعبانًا وتتحكم في حركته.
- الكائن
food
:
- الكود يشير إلى
food.appear()
، ولكن كائن الطعام غير معرّف أيضًا. تحتاج إلى إنشاء كائن للطعام يُستخدم عند التقاطه.
- الكائن
score
:
- الكود يشير إلى
score.increase_score()
وscore.game_over()
، لكن كائن النقاط غير موجود. تحتاج إلى تعريف كائن يقوم بعرض النقاط والتحكم في حالة اللعبة.
ماذا تحتاج لإكمال الكود؟
1. إنشاء كائن للثعبان:
- كائن
snake
الذي يحتوي على قائمة من المربعات (Segments) ويتحكم في حركتها.
2. إنشاء كائن للطعام:
- كائن
food
الذي يتم عرضه في مواقع عشوائية على الشاشة.
3. إنشاء كائن للنقاط:
- كائن
score
الذي يعرض النقاط على الشاشة ويظهر رسالة “Game Over” عند انتهاء اللعبة.
from turtle import Screen, Turtle
import random
import time
# --- تعريف كائن الثعبان ---
class Snake:
def __init__(self):
self.turtles = []
self.create_snake()
self.head = self.turtles[0]
def create_snake(self):
for i in range(3): # إنشاء 3 أجزاء ابتدائية للثعبان
self.add_segment((-20 * i, 0))
def add_segment(self, position):
new_segment = Turtle("square")
new_segment.color("white")
new_segment.penup()
new_segment.goto(position)
self.turtles.append(new_segment)
def extend(self):
# إضافة قطعة جديدة لجسم الثعبان
self.add_segment(self.turtles[-1].position())
def move(self):
for seg_num in range(len(self.turtles) - 1, 0, -1):
x = self.turtles[seg_num - 1].xcor()
y = self.turtles[seg_num - 1].ycor()
self.turtles[seg_num].goto(x, y)
self.head.forward(20)
def up(self):
if self.head.heading() != 270: # منع الحركة للخلف
self.head.setheading(90)
def down(self):
if self.head.heading() != 90:
self.head.setheading(270)
def left(self):
if self.head.heading() != 0:
self.head.setheading(180)
def right(self):
if self.head.heading() != 180:
self.head.setheading(0)
# --- تعريف كائن الطعام ---
class Food(Turtle):
def __init__(self):
super().__init__()
self.shape("circle")
self.color("red")
self.penup()
self.speed("fastest")
self.appear()
def appear(self):
x = random.randint(-380, 380)
y = random.randint(-380, 380)
self.goto(x, y)
# --- تعريف كائن لوحة النقاط ---
class Scoreboard(Turtle):
def __init__(self):
super().__init__()
self.score = 0
self.color("white")
self.penup()
self.hideturtle()
self.goto(0, 360)
self.update_score()
def update_score(self):
self.clear()
self.write(f"Score: {self.score}", align="center", font=("Arial", 24, "normal"))
def increase_score(self):
self.score += 1
self.update_score()
def game_over(self):
self.goto(0, 0)
self.write("Game Over", align="center", font=("Arial", 36, "bold"))
# --- إعداد نافذة اللعبة ---
window = Screen()
window.setup(width=800, height=800)
window.bgcolor("black")
window.title("لعبة الثعبان")
window.tracer(0) # إيقاف التحديث التلقائي للشاشة
# --- إنشاء الكائنات ---
snake = Snake() # كائن الثعبان
food = Food() # كائن الطعام
score = Scoreboard() # كائن لوحة النقاط
# --- إعداد التحكم بالثعبان ---
window.listen()
window.onkey(snake.up, "Up")
window.onkey(snake.down, "Down")
window.onkey(snake.left, "Left")
window.onkey(snake.right, "Right")
# --- تشغيل اللعبة ---
game_on = True
while game_on:
window.update()
time.sleep(0.1)
snake.move()
# فحص اصطدام رأس الثعبان بالطعام
if snake.head.distance(food) < 15:
food.appear()
snake.extend()
score.increase_score()
# فحص اصطدام رأس الثعبان بجدران الشاشة
if (
snake.head.xcor() > 380 or
snake.head.xcor() < -380 or
snake.head.ycor() > 380 or
snake.head.ycor() < -380
):
game_on = False
score.game_over()
# فحص اصطدام رأس الثعبان بجسمه
for segment in snake.turtles[1:]: # تجاهل الرأس
if snake.head.distance(segment) < 10:
game_on = False
score.game_over()
# إغلاق النافذة عند النقر
window.exitonclick()
إعجاب واحد (1)