Python'da bir küfür programı yazdım. İyi çalışıyor. Bununla birlikte, nodelay()
'u kullandığımda, hiç bir şey gösterilmeden (yalnızca yeni bir komut istemi), terminalden sonra program hemen çıkar.nodelay() python curses programının çıkmasına neden oluyor
Bu kod hata yeniden edecek
DÜZENLEME:
sc = curses.initscr() sc.nodelay(1) # But removing this line allows the program to run properly for angry in range(20): sc.addstr(angry, 1, "hi")
İşte benim tam kod
import curses, time, sys, random def paint(x, y, i): #... def string(s, y): #... def feed(): #... sc = curses.initscr() curses.start_color() curses.curs_set(0) sc.nodelay(1) ######################################### # vars + colors inited for angry in range(20): try: dir = chr(sc.getch()) sc.clear() feed() #lots of ifs body.append([x, y]) body.pop(0) for point in body: paint(*point, i=2) sc.move(height-1, 1) sc.refresh() time.sleep(wait) except Exception as e: print sys.exc_info()[0], e sc.getch() curses.beep() curses.endwin()
Neden bu happenning olduğunu, ve nasıl nodelay()
güvenle kullanabilir?sc.nodelay()
hat olmadan veya ile küçük test programını çalıştırırken
Hatanızı çoğaltmak için gerekli olan en düşük değere kodlamayı deneyin. Örneğin, nodelay() öğesini ayarlayabilir, ardından bir anahtarı() atarken kırılan ve çıkan sonsuz bir döngüye girebilirsiniz. Hata minimum test durumunda kaybolursa, neyin değiştiğini anlayın. Bu başarısız test vakasının gönderilmesine yardımcı olmazsa. – Philip
@Philip iyi düşün, bunu yaptın ve sonuçları yayınladı. – ACarter