سلام عليكم انا بحاول اعمل لعبة صراع الفضاء عملت السفينه و الحياه
وعملت طلقات السفينه لما اجي ادوس مسافه بيطلع طلقه وحده ومش بيرضي تاني
حد عندو حل
صور الملفات كاملة حقت المشروع
انا حاابب اشكرك ع الفكرة الجميلة دي … حفزتني اني اطبقها
الواحد خد وقت جامد عشان يفكر ف الحل …اديلي فترة مكتبتش كود
المهم
انا هقولك الفكرة وانت طبقها بنفسك ك كود …وهسبلك برضو الكود بتاعي هنا بس لازم تجرب بايدك الاول.
التركية ف جعل الطلقات تخرج ورا بعض هي عمل دالة تنشأ سلحفاء (الطلقات) وترجعها ف قائمة
وف كل مره تدوس ع المسافة تستدعي الدالة دي …
بالنسبه بقي لتحريكهم …هتلووب ع القائمة ال فيها السلاحف وتخليهم يتحركوا للاعلي.
بسكدا.
وعشان تخلي الطلقات تخرج من الاعب ف انت هتمرر موقع اللاعب للطلقات.
يبقي الخطوات هتكون بالشكل دا
1- داخل كلاس اللاعب عمل قائمة فارغة لتخزين الطلقات.
2- عمل ميثود لانشاء الطلقات وارجاعها داخل هذه القائمة.
3- باقي الاكواد ف الملف الرئيسي .سواء تحريك الطلقات او التحقق من التصام او الخروج .كلهم ف الملف الاساسي.
الكود
الملف الارئيسى:
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"))```
________________