Özet - Skor Takipçisi
Coddy'nin Lua Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 69 / 70.
Görev
KolayBir oyun liderlik tablosu için puan takip sistemi oluşturalım! Birlikte çalışan iki sınıf oluşturacaksınız; biri bireysel puan girişlerini temsil ederken, diğeri operatör aşırı yüklemesi (operator overloading) ile desteklenen sıralama özelliklerine sahip liderlik tablosunu yönetecek.
Kodunuzu üç dosya halinde düzenleyeceksiniz:
ScoreEntry.lua: Tek bir oyuncunun puanını temsil eden bir ScoreEntry sınıfı oluşturun. Her girişin birplayerNameve birscoredeğeri vardır."{playerName}: {score} points"formatında bir dize döndüren bir:getInfo()metodu ekleyin. Buradaki temel özellik__ltmetametodunu uygulamaktır; ancak unutmayın, azalan düzen için (en yüksek puanlar önce), karşılaştırmanız ilk girişin puanı ikinciden büyük olduğundatruedöndürmelidir.Leaderboard.lua: Puan girişlerinden oluşan bir koleksiyonu yöneten bir Leaderboard sınıfı oluşturun. Liderlik tablonuzun şunlara ihtiyacı vardır::addEntry(entry)— dahili listeye bir ScoreEntry ekler:sort()—table.sortkullanarak girişleri en yüksek puandan en düşüğe doğru sıralar:display()— her girişin bilgisini her satıra bir tane gelecek şekilde yazdırır
main.lua: Her şeyi bir araya getirin! Bir Leaderboard oluşturun, aldığınız girdilere göre puan girişlerini ekleyin, liderlik tablosunu sıralayın ve sonuçları görüntüleyin.
Bu tasarımın zarif yanı, table.sort fonksiyonunun ScoreEntry nesnelerini karşılaştırmak için otomatik olarak __lt metametodunuzu kullanmasıdır. Girişlerin birbirleriyle nasıl karşılaştırılacağını tanımlayarak, Lua'nın yerleşik sıralama mekanizması özel nesnelerinizle doğrudan çalışır!
Üç oyuncuyu temsil eden altı girdi alacaksınız:
- Birinci oyuncunun adı
- Birinci oyuncunun puanı (bir sayı)
- İkinci oyuncunun adı
- İkinci oyuncunun puanı (bir sayı)
- Üçüncü oyuncunun adı
- Üçüncü oyuncunun puanı (bir sayı)
Ana dosyanızda bir liderlik tablosu oluşturun, her üç girişi de ekleyin, :sort() metodunu çağırın ve ardından sıralanmış sonuçları göstermek için :display() metodunu çağırın.
Örneğin, girdiler Alice, 1500, Bob, 2300, Charlie ve 1800 ise çıktı şu şekilde olmalıdır:
Bob: 2300 points
Charlie: 1800 points
Alice: 1500 pointsGirdiler Zara, 500, Max, 750, Luna ve 600 ise çıktı şu şekilde olmalıdır:
Max: 750 points
Luna: 600 points
Zara: 500 pointsKendin dene
-- Ana dosya: Her şeyi bir araya getir
local ScoreEntry = require('ScoreEntry')
local Leaderboard = require('Leaderboard')
-- Üç oyuncu için girişleri oku
local name1 = io.read()
local score1 = tonumber(io.read())
local name2 = io.read()
local score2 = tonumber(io.read())
local name3 = io.read()
local score3 = tonumber(io.read())
-- YAPILACAK: Yeni bir Liderlik Tablosu oluştur
-- YAPILACAK: Her oyuncu için ScoreEntry nesneleri oluştur
-- YAPILACAK: Üç girişi de liderlik tablosuna ekle
-- YAPILACAK: Liderlik tablosunu sırala
-- YAPILACAK: Sıralanmış sonuçları görüntüle
Object Oriented Programming bölümündeki tüm dersler
1'Self' Kavramı
Fonksiyonlu TablolarAçık 'self'İki Nokta SözdizimiNokta vs İki NoktaÖzet - Hareket Eden Nokta4Proje: Dijital Banka
Proje KurulumuPara Yatırma Metodu7Çok Biçimlilik ve Geçersiz Kılma
Metotları Geçersiz KılmaÜst Sınıf Metotlarını ÇağırmaDuck TypingOrtak ArayüzTür KontrolüÖzet - Çalışan Rolleri2Sınıf Prototip Kalıbı
Prototip Kavramı__index ile Bağlama:new() KurucusuÖznitelikleri BaşlatmaBağımsız ÖrneklerÖzet - Araba Fabrikası5OOP'de Operatör Aşırı Yükleme
Nesneleri ToplamaNesneleri ÇıkarmaNesneleri BirleştirmeNesneleri Karşılaştırma (<, >)Özet - Cüzdan Matematiği8Kapsülleme
Adlandırma KurallarıGizlilik için Closure'larClosure'lar Aracılığıyla ErişimSalt Okunur TablolarDoğrulama MantığıÖzet - Güvenli Kasa11Tasarım Kalıpları (Lite)
Fabrika FonksiyonlarıSingleton TablosuIterator KalıbıObserver (Dinleyici)Özet - Logger Fabrikası3Nesne Durumu ve Davranışı
Örnek DeğişkenleriGetter MetotlarıSetter MetotlarıHesaplanmış ÖzelliklerString BiçimlendirmeEşitlik KontrolleriÖzet - Öğrenci Notu6Kalıtımın Temelleri
Kalıtım KurulumuMetot KalıtımıConstructor'ı GenişletmeAlt Sınıf Metotları EklemePaylaşılan ve BenzersizÖzet - Şekil Hiyerarşisi9Kompozisyon ve Mixin'ler
Has-A İlişkisiDelegasyonBasit Mixin'lerBirden Fazla Mixin UygulamaMixin'ler ve KalıtımÖzet - Robot Birleştirme12Son Görevler
Özet - Envanter SistemiÖzet - Kullanıcı YöneticisiÖzet - Skor TakipçisiFinal OOP Kontrolü