Özet - Skor Takipçisi
Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama 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: biri bireysel puan kayıtlarını temsil edecek, diğeri ise operatör aşırı yüklemesiyle desteklenen sıralama özelliklerine sahip liderlik tablosunu yönetecek.
Kodunu üç dosya arasında düzenleyeceksin:
ScoreEntry.lua: Tek bir oyuncunun puanını temsil eden bir ScoreEntry sınıfı oluştur. Her kayıtta birplayerNameve birscorebulunur.:getInfo()biçiminde bir dize döndüren bir"{playerName}: {score} points"yöntemi ekle. Buradaki temel özellik__ltmetamethod'unu uygulamaktır; ancak azalan sıralama (en yüksek puanlar önce) için karşılaştırmanın, ilk kaydın puanı ikincinin puanından büyük olduğundatruedöndürmesi gerektiğini unutma.Leaderboard.lua: Puan kayıtlarından oluşan bir koleksiyonu yöneten bir Leaderboard sınıfı oluştur. Liderlik tablon şunları içermelidir::addEntry(entry): bir ScoreEntry'yi dahili listeye ekler:sort():table.sortkullanarak kayıtları en yüksek puandan en düşük puana doğru sıralar:display(): her kayıt için bilgileri satır başına bir tane olacak şekilde yazdırır
main.lua: Her şeyi bir araya getir! Bir Leaderboard oluştur, aldığın girdilere göre puan kayıtları ekle, liderlik tablosunu sırala ve sonuçları görüntüle.
Bu tasarımın zarif yanı, table.sort'un ScoreEntry nesnelerini karşılaştırmak için __lt metamethod'unu otomatik olarak kullanmasıdır. Kayıtların birbirleriyle nasıl karşılaştırılacağını tanımlayarak Lua'nın yerleşik sıralaması özel nesnelerinle doğrudan çalışır!
Üç oyuncuyu temsil eden altı girdi alacaksın:
- İlk oyuncunun adı
- İlk oyuncunun puanı (bir sayı)
- İkinci oyuncunun adı
- İkinci oyuncunun puanı (bir sayı)
- Üçüncü oyuncunun adı
- Üçüncü oyuncunun puanı (bir sayı)
Ana dosyanda bir liderlik tablosu oluştur, üç kaydın tümünü ekle, :sort() çağrısını yap, ardından sıralanmış sonuçları göstermek için :display() çağrısını yap.
Örneğin girdiler Alice, 1500, Bob, 2300, Charlie ve 1800 ise çıktı şöyle olmalıdır:
Bob: 2300 points
Charlie: 1800 points
Alice: 1500 pointsGirdiler Zara, 500, Max, 750, Luna ve 600 ise çıktı şöyle 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 girdileri 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())
-- TODO: Yeni bir Leaderboard oluştur
-- TODO: Her oyuncu için ScoreEntry nesneleri oluştur
-- TODO: Üç girdiyi de leaderboard'a ekle
-- TODO: Leaderboard'u sırala
-- TODO: Sıralanmış sonuçları görüntüle
Nesne Yönelimli Programlama 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üKendi başına pratik yap: Online Lua derleyicisi