Menu
CoddyTech

Periksa Ketersediaan

Termasuk bagian Logika dan Alur dalam perjalanan GDScript di Coddy. Pelajaran 74 dari 78.

challenge icon

Tantangan

Mudah

Tambahkan perintah check. Pertahankan semua yang kamu tulis pada langkah sebelumnya.

Tulis fungsi check_availability(inventory, item) di atas _ready(). Fungsi ini tidak mencetak apa pun dan mengembalikan int:

  • stok item, jika item tersebut ada di inventory
  • -1 jika item tidak ditemukan. Stok tidak pernah negatif, jadi -1 hanya bisa berarti "not found".

Dalam perulangan, baris seperti check Apple:

  • mencetak Error: Use check ITEM jika jumlah bagiannya bukan tepat 2
  • jika tidak, memanggil check_availability() dan mencetak Item not found untuk -1, atau nama item, : , stok, dan in stock

Untuk perintah add Apple 0.5 100, add Banana 0.2 50, update Apple -20, update Banana 30, check Apple, check Banana, check Orange dan exit, outputnya adalah:

Inventory Management System
Item 'Apple' added successfully.
Item 'Banana' added successfully.
Stock for 'Apple' updated successfully.
Stock for 'Banana' updated successfully.
Apple: 80 in stock
Banana: 80 in stock
Item not found
Goodbye!

Coba sendiri

extends Node

func add_item(inventory: Dictionary, item: String, price: float, stock: int) -> void:
	if inventory.has(item):
		print("Error: Item '%s' already exists." % item)
		return
	inventory[item] = {"price": price, "stock": stock}
	print("Item '%s' added successfully." % item)

func update_stock(inventory: Dictionary, item: String, quantity: int) -> void:
	if not inventory.has(item):
		print("Error: Item '%s' not found." % item)
		return
	var new_stock: int = inventory[item]["stock"] + quantity
	if new_stock < 0:
		print("Error: Insufficient stock for '%s'." % item)
		return
	inventory[item]["stock"] = new_stock
	print("Stock for '%s' updated successfully." % item)

func _ready():
	# Inventaris: nama item -> {"price": float, "stock": int}
	var inventory := {}
	print("Inventory Management System")

	while true:
		var line := OS.read_string_from_stdin()
		var parts := line.split(" ")
		var command := parts[0]

		if command == "exit":
			print("Goodbye!")
			break
		elif command == "show":
			print(inventory)
		elif command == "add":
			if parts.size() != 4:
				print("Error: Use add ITEM PRICE STOCK")
			elif not parts[2].is_valid_float() or not parts[3].is_valid_int():
				print("Error: Price and stock must be numeric.")
			else:
				add_item(inventory, parts[1], float(parts[2]), int(parts[3]))
		elif command == "update":
			if parts.size() != 3:
				print("Error: Use update ITEM QUANTITY")
			elif not parts[2].is_valid_int():
				print("Error: Quantity must be an integer.")
			else:
				update_stock(inventory, parts[1], int(parts[2]))
		else:
			print("Unknown command")

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler GDScript online