Oyunumuz “Kolay – Orta – Zor ” aşamalarından oluşuyor. İsteyen oyuncu bunlardan birini seçip ad ve soyad girerek oyuna başlıyor. En kısa zamanda karşısına gelen listeden ve rastgele gelen sayının katını birer boşluk bırakarak giriyor. Bilen oyuncular arasından en kısa zamanda bilen oyunun sonunda çıkış denildiğinde rapor olarak sunuluyor.

# "Sayının Katlarını Bul" Oyunu from random import randint import colorama from datetime import datetime class Ana: def __init__(self): self.calisma = True self.liste = [] self.rastSayi = 0 self.istatistik = {"zorluk" : [],"ad" : [],"soyad" :[],"sure" : [],"sonuc" : []} def menuSecim(self): secim = 1 try: secim = int(input("Lütfen Seçiminizi Giriniz [1-4] : ")) while secim < 1 or secim > 4: secim = int(input("Seçiminiz geçerli değil. Lütfen kontrol edip yeniden deneyiniz [1-4] : ")) except: print("Kolay seçimle devam ettiniz ! Kolay gelsin\n") return secim def menu(self): print(colorama.Fore.LIGHTYELLOW_EX) print("----------------------- KATLAR OYUNU -----------------------") print("1. Kolay\n2. Orta\n3. Zor\n4. Çıkış") aralik = 0 secim = self.menuSecim() if secim == 1: self.istatistikKayit("Kolay") self.oyunBasla(6) elif secim == 2: self.istatistikKayit("Orta") self.oyunBasla(7) elif secim == 3: self.istatistikKayit("Zor") self.oyunBasla(8) else: self.istatistikDegerlendir() self.calisma = False def istatistikKayit(self,zorluk): self.istatistik["zorluk"].append(zorluk) self.istatistik["ad"].append(input("Adınızı giriniz : ").capitalize()) self.istatistik["soyad"].append(input("Soyadınızı giriniz : ").capitalize()) def oyunBasla(self,aralik): print(colorama.Fore.LIGHTWHITE_EX) self.liste = [int(randint(1, 100)) for x in range(1, aralik)] basZaman = datetime.now() self.tabloOlustur() kullanciCevaplari = input(f"\n{self.rastSayi} sayısının katlarını birer boşluk bırakarak yazınız : ").split(" ") # kullanıcıdan alınan cevapları sayısal değere çevirip yen bir listeye atıldı. self.kullanciCevaplariSayi = [] for i in kullanciCevaplari: try: self.kullanciCevaplariSayi.append(int(i)) except Exception as hata: print("Hata ! Girişlerinizi Kontrol ediniz . Kaybettiniz !") # Burada kullanıcıdan alınan cevaplar sıralanmaktadır. self.kullanciCevaplariSayi = self.listeSirala(self.kullanciCevaplariSayi) self.oyunSonuc(basZaman) def tabloOlustur(self): satirSay = 0 for i in self.liste: satirSay += 1 print(i,end="\t") if satirSay == 5: satirSay = 0 print("\n") self.rastgeleSayiKatlar() self.calisma = False # Rastgele belirlenen sayı ve kullanıcıdan alınan cevap listesi sıralanmkatadır. Çünkü 2 liste karşılaştırılacaktır. def listeSirala(self,liste): temp = 0 for i in range(0, len(liste)): for j in range(i + 1, len(liste)): if liste[i] > liste[j]: temp = liste[i] liste[i] = liste[j] liste[j] = temp return liste def rastgeleSayiKatlar(self): self.katlar = [] while len(self.katlar) == 0: self.rastSayi = randint(2, 10) for i in self.liste: if i % self.rastSayi == 0: self.katlar.append(i) # Burada bulunan katlar sıralanmaktadır. self.katlar = self.listeSirala(self.katlar) # 1 ile 100 arasında rasgele blirlenen 5 6 ya da 7 sayı tablo haline getiriliyor. # Katlar tablosundan katı sorulan rastgele sayıyı doğru bilen self.istatistik değişkeninin sonuc anahtarına + eklenmektedir. def oyunSonuc(self,basZaman): if self.kullanciCevaplariSayi == self.katlar: print("Kutlarız ! Kazandınız. Oyunun sonunda sıralamayı bekleyiniz.") self.istatistik["sonuc"].append("+") else: print("Maalesef Elendiniz ! Sıralamaya giremediniz.") self.istatistik["sonuc"].append("-") self.istatistik["sure"].append(str(datetime.now() - basZaman)) self.menu() def istatistikDegerlendir(self): print("ZORLUK\t\t\tAD\t\t\tSoyad\t\t\tSure\t\t\t\tSonuç") # Her zorluk derecesi ayrı ayrı kategorilenmektedir. kolayIsta = {"zorluk" : [],"ad" : [],"soyad" :[],"sure" : [],"sonuc" : []} ortaIsta = {"zorluk": [], "ad": [], "soyad": [], "sure": [], "sonuc": []} zorIsta = {"zorluk": [], "ad": [], "soyad": [], "sure": [], "sonuc": []} for i in range(0,len(self.istatistik["sonuc"])): for anahtar in self.istatistik.keys(): print(self.istatistik[anahtar][i],end="\t\t\t") if self.istatistik["sonuc"][i] == "+": if self.istatistik[anahtar][i] == "Kolay": kolayIsta["zorluk"].append(self.istatistik["zorluk"][i]) kolayIsta["ad"].append(self.istatistik["ad"][i]) kolayIsta["soyad"].append(self.istatistik["soyad"][i]) kolayIsta["sure"].append(self.istatistik["sure"][i]) kolayIsta["sonuc"].append(self.istatistik["sonuc"][i]) elif self.istatistik[anahtar][i] == "Orta": ortaIsta["zorluk"].append(self.istatistik["zorluk"][i]) ortaIsta["ad"].append(self.istatistik["ad"][i]) ortaIsta["soyad"].append(self.istatistik["soyad"][i]) ortaIsta["sure"].append(self.istatistik["sure"][i]) ortaIsta["sonuc"].append(self.istatistik["sonuc"][i]) if self.istatistik[anahtar][i] == "Zor": zorIsta["zorluk"].append(self.istatistik["zorluk"][i]) zorIsta["ad"].append(self.istatistik["ad"][i]) zorIsta["soyad"].append(self.istatistik["soyad"][i]) zorIsta["sure"].append(self.istatistik["sure"][i]) zorIsta["sonuc"].append(self.istatistik["sonuc"][i]) print("\n") # Zorluk kategorisine göre en iyiler belirleniyor. if len(self.enkucukBul(kolayIsta)) > 0: birinci = self.enkucukBul(kolayIsta) print(colorama.Fore.CYAN) print(f"Zorluk Derecesi : ( {birinci[0]} ) Olan Yarışmanın Kazananı : {birinci[1]} {birinci[2]}, Derecesi : {round(float(birinci[3].split(':')[2]),2)} ") if len(self.enkucukBul(ortaIsta)) > 0: birinci = self.enkucukBul(ortaIsta) print(colorama.Fore.CYAN) print(f"Zorluk Derecesi : ( {birinci[0]} ) Olan Yarışmanın Kazananı : {birinci[1]} {birinci[2]}, Derecesi : {round(float(birinci[3].split(':')[2]), 2)} ") if len(self.enkucukBul(zorIsta)) > 0: birinci = self.enkucukBul(zorIsta) print(colorama.Fore.CYAN) print(f"Zorluk Derecesi : ( {birinci[0]} ) Olan Yarışmanın Kazananı : {birinci[1]} {birinci[2]}, Derecesi : {round(float(birinci[3].split(':')[2]), 2)} ") # Sonuçta en az sürede cevapları doğru veren kişi belirlenecek def enkucukBul(self,ista): enKucuk = [] min = 100 for i in range(0,len(ista["sonuc"])): if float(ista["sure"][i].split(":")[2]) < min: min = float(ista["sure"][i].split(":")[2]) enKucuk.clear() enKucuk.append(ista["zorluk"][i]) enKucuk.append(ista["ad"][i]) enKucuk.append(ista["soyad"][i]) enKucuk.append(ista["sure"][i]) return enKucuk ana = Ana() while ana.calisma: ana.menu()