Çözüldü Python'da Timer kullanımında kod nasıl yazdırılır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

mehanil

Centipat
Katılım
23 Temmuz 2021
Mesajlar
100
Python:
from threading import Timer
import time
def cc():
    timeout = 6
    t = Timer(timeout, print, ['Tahtalar kırıldı. Köprüden düşerek öldün.'])
    global bb
    global answer0
    print("Köprünün halatları koptu ve düşecekken son anda köprünün üzerindeki tahtaya tutundun.")
    time.sleep(3)
    print("Tahtalara tırmanarak yolun karşısına ulaşabilirsin ancak kırılabilirler. Hızlı olmalısın.")
    time.sleep(3)
    print("Tırmanmak için 6 saniyen var.")
    time.sleep(2)
    t.start()
    answer0 = input("İlk tahtaya tırmanmak için 1'e ve ardından Enter'a bas.")
    try:
        answer0 = int(answer0)
        bb = 5
        if answer0 == 1:
            while True:
                bb = bb - 1
                if bb > 0:
                    answer0 = (input("Sıradaki tahtaya tırmanmak için 1'e ve ardından Enter'a bas."))
                    try:
                        answer0 = int(answer0)
                        if answer0 == 1:
                            continue
                        else:
                            print("Tahtalar kırıldı. Köprüden düşerek öldün. Son kayıt noktasından devam edeceksin.")
                            time.sleep(3)
                            cc()
                    except ValueError:
                        print("Tahtalar kırıldı. Köprüden düşerek öldün. Son kayıt noktasından devam edeceksin.")
                        time.sleep(3)
                        cc()
                if bb == 0:
                    print("Karşıya ulaşmayı başardın.")
                    t.cancel()
        else:
            raise Exception()
    except:
        print("Tahtalar kırıldı. Köprüden düşerek öldün. Son kayıt noktasından devam edeceksin.")
        time.sleep(3)
        cc()
cc()

Bu kodda süre bittiğinde 5. satırdaki 'Tahtalar kırıldı. Köprüden düşerek öldün.' yazısı yazıyor. Ancak ben bunun sonrasına da kod yazmak istiyorum. Nasıl yapabilirim?

@tabii efendim bakabilir misiniz?
 
Son düzenleme:
Çözüm
Python:
def game_over():
    print("Tahtalar kırıldı...")
    cc()

İçerideki timer kodunda print'i ve mesajı silip koda şu şekilde bir fonksiyon ekle.

Python:
t = Timer(timeout, game_over)
Dediğini tam anlamadım. Timer'dan sonra da kod yazabilirsin?

Mesela şöyle:

Python:
except ValueError:
    print("Tahtalar kırıldı. Köprüden düşerek öldün. Son kayıt noktasından devam edeceksin.")
    ## diger kodlar...
    time.sleep(3)
    cc()
 
Dediğini tam anlamadım. Timer'dan sonra da kod yazabilirsin?

Mesela şöyle:

Python:
except ValueError:
    print("Tahtalar kırıldı. Köprüden düşerek öldün. Son kayıt noktasından devam edeceksin.")
    ## diger kodlar...
    time.sleep(3)
    cc()
Demek istediğim o değil. 6 saniyelik süre dolduğunda tahtalar kırıldı yazdıktan sonrasıda ben kod başa dönsün, kullanıcı bir daha denesin istiyorum. Nasıl yapabilirim?
 
Demek istediğim o değil. 6 saniyelik süre dolduğunda tahtalar kırıldı yazdıktan sonrasında ben kod başa dönsün, kullanıcı bir daha denesin istiyorum. Nasıl yapabilirim?
Böyle dene:

Python:
from threading import Timer
import time
while True:
    timeout = 6
    t = Timer(timeout, print, ['Tahtalar kırıldı. Köprüden düşerek öldün.'])
    global bb
    global answer0
    print("Köprünün halatları koptu ve düşecekken son anda köprünün üzerindeki tahtaya tutundun.")
    time.sleep(3)
    print("Tahtalara tırmanarak yolun karşısına ulaşabilirsin ancak kırılabilirler. Hızlı olmalısın.")
    time.sleep(3)
    print("Tırmanmak için 6 saniyen var.")
    time.sleep(2)
    t.start()
    answer0 = input("İlk tahtaya tırmanmak için 1'e ve ardından Enter'a bas.")
    try:
        answer0 = int(answer0)
        bb = 5
        if answer0 == 1:
            while True:
                bb = bb - 1
                if bb > 0:
                    answer0 = (input("Sıradaki tahtaya tırmanmak için 1'e ve ardından Enter'a bas."))
                    try:
                        answer0 = int(answer0)
                        if answer0 == 1:
                            continue
                        else:
                            print("Tahtalar kırıldı. Köprüden düşerek öldün. Son kayıt noktasından devam edeceksin.")
                            time.sleep(3)
                            # başa dönmek için continue kullan. Break, kodu durdurur.
                            continue
                    except ValueError:
                        print("Tahtalar kırıldı. Köprüden düşerek öldün. Son kayıt noktasından devam edeceksin.")
                        time.sleep(3)
                        break
                if bb == 0:
                    print("Karşıya ulaşmayı başardın.")
                    t.cancel()
        else:
            raise Exception()
    except:
        print("Tahtalar kırıldı. Köprüden düşerek öldün. Son kayıt noktasından devam edeceksin.")
        time.sleep(3)
        break
 
Print içindeki cümlenin başına veya sonuna \n ekleyebilirsin(Normalde geçmesi lazım ama anlamadım orasını.).
Bu sefer de iki satır atlayıp öyle yazdı. Ben de şöyle bir çözüm buldum:
def game_over(): print("") print("yazılacak metin")

Teşekkürler.

Böyle dene:

Python:
from threading import Timer
import time
while True:
    timeout = 6
    t = Timer(timeout, print, ['Tahtalar kırıldı. Köprüden düşerek öldün.'])
    global bb
    global answer0
    print("Köprünün halatları koptu ve düşecekken son anda köprünün üzerindeki tahtaya tutundun.")
    time.sleep(3)
    print("Tahtalara tırmanarak yolun karşısına ulaşabilirsin ancak kırılabilirler. Hızlı olmalısın.")
    time.sleep(3)
    print("Tırmanmak için 6 saniyen var.")
    time.sleep(2)
    t.start()
    answer0 = input("İlk tahtaya tırmanmak için 1'e ve ardından Enter'a bas.")
    try:
        answer0 = int(answer0)
        bb = 5
        if answer0 == 1:
            while True:
                bb = bb - 1
                if bb > 0:
                    answer0 = (input("Sıradaki tahtaya tırmanmak için 1'e ve ardından Enter'a bas."))
                    try:
                        answer0 = int(answer0)
                        if answer0 == 1:
                            continue
                        else:
                            print("Tahtalar kırıldı. Köprüden düşerek öldün. Son kayıt noktasından devam edeceksin.")
                            time.sleep(3)
                            # başa dönmek için continue kullan. Break, kodu durdurur.
                            continue
                    except ValueError:
                        print("Tahtalar kırıldı. Köprüden düşerek öldün. Son kayıt noktasından devam edeceksin.")
                        time.sleep(3)
                        break
                if bb == 0:
                    print("Karşıya ulaşmayı başardın.")
                    t.cancel()
        else:
            raise Exception()
    except:
        print("Tahtalar kırıldı. Köprüden düşerek öldün. Son kayıt noktasından devam edeceksin.")
        time.sleep(3)
        break
Bu da tam demek istediğim değil ancak sorunu çözdüm. Yine de teşekkürler.
 

Geri
Yukarı