Menu
CoddyTech
flag Ar iconالعربيةdown icon

وظيفة البحث

جزء من قسم البرمجة كائنية التوجّه في رحلة GDScript على Coddy. الدرس 59 من 65.

challenge icon

التحدي

متوسط

أضف بحثًا عن العناوين. احتفظ بكل ما كتبته في الخطوات السابقة؛ التغيير الوحيد يكون في library.gd.

اكتب search_by_title(text: String) -> Array[Book] في Library. تُعيد كل كتاب يحتوي عنوانه على text، بترتيب books:

  • يتجاهل البحث حالة الأحرف الكبيرة والصغيرة: GREAT يعثر على The Great Gatsby.
  • يكفي وجود جزء من العنوان: great يعثر أيضًا على Great Expectations.
  • إذا كانت text فارغة، تُعاد كل الكتب. تحقّق من هذه الحالة أولًا: في GDScript، "" in "Dune" هي false.
  • يُعثر على الكتب المُعارة مثل أي كتاب آخر.

يضيف الكود المزوّد الأمر search TEXT، الذي يطبع عدد الكتب التي عُثر عليها وسطرًا واحدًا لكل كتاب. لهذا الإدخال:

Community
book The Great Gatsby|F. Scott Fitzgerald|123456
book To Kill a Mockingbird|Harper Lee|789012
book Great Expectations|Charles Dickens|345678
search great
search zzz

يكون الناتج:

Results for 'great': 2
- The Great Gatsby by F. Scott Fitzgerald
- Great Expectations by Charles Dickens
Results for 'zzz': 0

ضع شيفرتك في book.gd وuser.gd وlibrary.gd. يحتوي main.gd على شيفرة الإدخال والإخراج المزوّدة، ولا يمكن تعديله.

جرّب بنفسك

extends Node

func _ready():
	# كود الإدخال/الإخراج المُقدَّم: اتركه كما هو
	var library := Library.new(OS.read_string_from_stdin())
	var line := OS.read_string_from_stdin()
	while line != "":
		var parts := line.split(" ", true, 1)
		var fields: PackedStringArray = parts[1].split("|") if parts.size() > 1 else PackedStringArray()
		match parts[0]:
			"book":
				library.add_book(Book.new(fields[0], fields[1], fields[2]))
			"user":
				library.add_user(User.new(fields[0], fields[1]))
			"borrow":
				print(library.borrow_book(fields[0], fields[1]))
			"search":
				var term: String = parts[1] if parts.size() > 1 else ""
				var found: Array = library.search_by_title(term)
				print("Results for '%s': %d" % [term, found.size()])
				for book in found:
					print("- ", book.title, " by ", book.author)
			"loans":
				var reader: User = library.find_user(fields[0])
				print(reader.user_name, " has borrowed:")
				for isbn in reader.borrowed_isbns:
					print("- ", library.find_book(isbn).title)
			"holder":
				var book: Book = library.find_book(fields[0])
				if book.available:
					print(book.title, " is on the shelf")
				else:
					print(book.title, " is borrowed by ", library.find_user(book.borrower_id).user_name)
			"books":
				for book in library.books:
					print(book)
			"users":
				for user in library.users:
					print(user)
			"show":
				print(library)
		line = OS.read_string_from_stdin()

جميع دروس البرمجة كائنية التوجّه

تدرّب بنفسك: مترجم GDScript عبر الإنترنت