سلام عليكم مشكله في كود

سلام عليكم انا بحاول اعمل لعبة صراع الفضاء عملت السفينه و الحياه
وعملت طلقات السفينه لما اجي ادوس مسافه بيطلع طلقه وحده ومش بيرضي تاني
حد عندو حل


6 إعجابات

صور الملفات كاملة حقت المشروع

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

انا حاابب اشكرك ع الفكرة الجميلة دي … حفزتني اني اطبقها :two_hearts: :two_hearts:
الواحد خد وقت جامد عشان يفكر ف الحل :sweat_smile::joy:…اديلي فترة مكتبتش كود
المهم
انا هقولك الفكرة وانت طبقها بنفسك ك كود …وهسبلك برضو الكود بتاعي هنا بس لازم تجرب بايدك الاول.


التركية ف جعل الطلقات تخرج ورا بعض هي عمل دالة تنشأ سلحفاء (الطلقات) وترجعها ف قائمة
وف كل مره تدوس ع المسافة تستدعي الدالة دي …
بالنسبه بقي لتحريكهم …هتلووب ع القائمة ال فيها السلاحف وتخليهم يتحركوا للاعلي.
بسكدا.
وعشان تخلي الطلقات تخرج من الاعب ف انت هتمرر موقع اللاعب للطلقات.
يبقي الخطوات هتكون بالشكل دا


1- داخل كلاس اللاعب عمل قائمة فارغة لتخزين الطلقات.
2- عمل ميثود لانشاء الطلقات وارجاعها داخل هذه القائمة.
3- باقي الاكواد ف الملف الرئيسي .سواء تحريك الطلقات او التحقق من التصام او الخروج .كلهم ف الملف الاساسي.

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

الكود


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

from turtle import Screen
from player import Player
from shapes import Shape
from scoreboard import Score
import time
from pygame import mixer
mixer.init()
from pygame.mixer import Sound
screen=Screen()
screen.setup(600,600)
screen.bgcolor('black')
screen.title('New game')
screen.tracer(0)
player=Player()
shape=Shape()
score= Score()

file=Sound('music.wav')
game_over=Sound('mario.wav')
screen.listen()
# fire_list =[]
# def create_fire():
    # "دالة تنشأ الطلقات"
    # i = Turtle('square')
    # i.color('orange')
    # i.up()
    # i.setposition(player.pos())
    # i.shapesize(.3,.1)
    # fire_list.append(i)

# التحكم عن طريق الأزرار
screen.onkey(player.go_right, "Right")
screen.onkey(player.go_left, "Left")
screen.onkey(player.go_up, "Up")
screen.onkey(player.go_dowm, "Down")
screen.onkey(player.create_fire,'space')

while True:
    screen.update()
    time.sleep(.05) # تبطيأ سرعة اللوب
    # movement shapes
    shape.move() # تحريك الاشكال
    # تحريك الطلقات 
    for fire in player.fire_list :
        fire.goto(fire.xcor(),fire.ycor()+20)
        # ف حالة خروج الطلقات من الشاشة
        if fire.ycor() > 300:
            fire.hideturtle()   
            player.fire_list.remove(fire)
        # ف حالة التصادم مع الأشكال
        if shape.distance(fire) <= 15 :
            score.increase_score()
            shape.appear()
            fire.hideturtle()
            player.fire_list.remove(fire)
            file.play() # تشغيل صوت الطلقة
    # ف حالة خروج الشكل من الشاشة
    if shape.ycor() < -300:
        shape.appear()
        shape.sd += .2
        if shape.sd >= 3:
            shape.sd = 1
    # ف حالة تصادم الشكل مع اللاعب
    if player.distance(shape) < 20:
        game_over.play()    # تشغيل صوت ماريو   
        score.game_over()
        break
screen.exitonclick()

ملف اللاعب:

# ملف اللاعب
from turtle import Turtle
class Player(Turtle):
    def __init__(self):
        super().__init__()
        self.fire_list= []
        self.up()
        self.color('green')
        self.shape('classic')
        self.shapesize(stretch_len=3,stretch_wid=3)
        self.setheading(90)
        self.goto(0,-250)
        self.x_move = 30
        self.y_move = 30
    def go_up(self):
        if self.ycor() < 300:
            self.goto(self.xcor(), self.ycor()+self.y_move)
    def go_dowm(self):
        if self.ycor() > -250 :
            self.goto(self.xcor(), self.ycor()-self.y_move)
    def go_right(self):
        if self.xcor() < 300:
            self.goto(self.xcor()+self.x_move, self.ycor())
    def go_left(self):
        if self.xcor() > -300:
            self.goto(self.xcor()-self.x_move, self.ycor())
    def create_fire(self):
        fire= Turtle('square')
        fire.color('orange')
        fire.up()
        fire.setposition(self.pos())
        fire.shapesize(.3,.1)
        self.fire_list.append(fire)

ملف الاشكال:

from turtle import Turtle
import random
class Shape(Turtle):
    def __init__(self):
        super().__init__()
        self.penup()
        self.sd = 1
        self.shapes=('circle','square','triangle',"turtle")
        self.colors=('teal','white',"dark olive green",'cyan','lavender','dark gray','pale turquoise','cadet blue')
        self.appear() 
    def appear(self):
        self.shape(random.choice(self.shapes)) # change the shape
        self.color(random.choice(self.colors)) # change the color
        self.goto(random.randint(-250,250),300) # change the position
    def move(self):
        self.goto(self.xcor(),self.ycor()-10 * self.sd)

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

# لعرض الاهداف ع الشاشة
from turtle import Turtle
class Score(Turtle):
    def __init__(self):
        super().__init__()
        self.score = 0
        self.color('white')
        self.up()
        self.setposition(0,250)
        self.hideturtle()
        self.score_update()
    def score_update(self):
        self.write(f"Score: {self.score}",
                   font=('arial',26,'bold'),
                   align='center')
    def increase_score(self):
        self.score +=1
        self.clear()
        self.score_update()
    def game_over(self):
        self.home()
        self.color("black")
        self.getscreen().clear()
        self.getscreen().bgcolor('darkred')
        self.write(f'Game over.'
                   ,align='center'
                   ,font=("courier",26,"bold"))```
________________
إعجاب واحد (1)

نتيجة الكود:


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






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

شكرا يحبي علي الحل
بس العبه مش دي الي قصدي عليها
بص كدا

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

عفوا :heart:
طب دي اعملهالك ازاي :joy::joy::joy:
انا عملت نفس ال قولت عليها فووق بالضبط باستخدام مكتبة turtle :turtle:. غير كدا لا .

وحليتلك مشكلة الطلقات كمان.

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