Çözüldü Konami kodu nasıl yapılır?

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

Stereo.Luigi99

Hectopat
Katılım
21 Ocak 2023
Mesajlar
3.433
Makaleler
6
Çözümler
67
Yer
Isparta
Selam, iyi Sosyaller.

Programım için istediğim şey şu:
"Yukarı, yukarı, aşağı, aşağı, sol, sağ, sol, sağ, B, A" tuşları sırasıyla basıldığı zaman belli bir kod çalıştırmalı.

Bu tuş kombinasyonuna "Konami kodu" deniyor ve bir "easter egg" olarak ekleyeceğim.
Nasıl yapabileceğimi anlamadım, bunu yapabilecek modüller var mı?
 
Son düzenleyen: Moderatör:
Çözüm
Pygame ekranını gizlediğinizde Konami kodunun çalışmaması normal, çünkü pygame tuş girişlerini sadece aktif pencere üzerinde algılar. Eğer Tkinter/TTK kullanacaksanız, pygame modülü yerine Tkinter’ın kendi tuş girişi yöntemlerini kullanmanız gerekiyor.

Bunun için, Tkinter’ın bind() metodunu kullanarak tuşlara fonksiyonlar atayabilirsiniz. Bu fonksiyonlar, tuşlar basıldığında bir liste veya kuyruk veri yapısına tuş isimlerini ekler ve Konami kodu ile karşılaştırır. Eğer kod doğru girilirse, istediğiniz kodu çalıştırabilirsiniz.


Python:
import tkinter as tk
from collections import deque

konami_code = ["Up", "Up", "Down", "Down", "Left", "Right", "Left", "Right", "b", "a"]
queue = deque(maxlen=10)

def check_code(event):
    global queue
    queue.append(event.keysym)
    if list(queue) == konami_code:
        print("Konami code entered!")
        # buraya istediğiniz kodu yazın

root = tk.Tk()
root.bind("<Key>", check_code)
root.mainloop()


Bu kod, Tkinter’ın bind() metodunu kullanarak her tuşa check_code fonksiyonunu bağlar. Bu fonksiyon, tuş isimlerini bir kuyruğa ekler ve Konami kodu ile karşılaştırır. Eğer kod doğru girilirse, ekrana bir mesaj yazdırır ve istediğiniz başka bir kodu çalıştırabilirsiniz.
Hocam pygame modülünü kullanarak tuş girişlerini algılayabilir ve bir liste veya kuyruk veri yapısı ile karşılaştırabilirsiniz. Bu şekilde, tuş kombinasyonu doğru girildiğinde istediğiniz kodu çalıştırabilirsiniz

Python:
import pygame
from collections import deque

konami_code = ["up", "up", "down", "down", "left", "right", "left", "right", "b", "a"]
queue = deque(maxlen=10)

pygame.init()
screen = pygame.display.set_mode((800, 600))
running = True

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_UP:
                queue.append("up")
            elif event.key == pygame.K_DOWN:
                queue.append("down")
            elif event.key == pygame.K_LEFT:
                queue.append("left")
            elif event.key == pygame.K_RIGHT:
                queue.append("right")
            elif event.key == pygame.K_b:
                queue.append("b")
            elif event.key == pygame.K_a:
                queue.append("a")
            if list(queue) == konami_code:
                print("Konami code entered!")
                # buraya istediğiniz kodu yazın
 
Hocam pygame modülünü kullanarak tuş girişlerini algılayabilir ve bir liste veya kuyruk veri yapısı ile karşılaştırabilirsiniz. Bu şekilde, tuş kombinasyonu doğru girildiğinde istediğiniz kodu çalıştırabilirsiniz
Bu çalıştı hocam fakat şöyle bir sıkıntı var:
Pygame ekranını pygame.HIDDEN ile gizlediğimde çalışmıyor.
Programın GUI sistemi için Tkinter/TTK kullanacağım.
 
Pygame ekranını gizlediğinizde Konami kodunun çalışmaması normal, çünkü pygame tuş girişlerini sadece aktif pencere üzerinde algılar. Eğer Tkinter/TTK kullanacaksanız, pygame modülü yerine Tkinter’ın kendi tuş girişi yöntemlerini kullanmanız gerekiyor.

Bunun için, Tkinter’ın bind() metodunu kullanarak tuşlara fonksiyonlar atayabilirsiniz. Bu fonksiyonlar, tuşlar basıldığında bir liste veya kuyruk veri yapısına tuş isimlerini ekler ve Konami kodu ile karşılaştırır. Eğer kod doğru girilirse, istediğiniz kodu çalıştırabilirsiniz.


Python:
import tkinter as tk
from collections import deque

konami_code = ["Up", "Up", "Down", "Down", "Left", "Right", "Left", "Right", "b", "a"]
queue = deque(maxlen=10)

def check_code(event):
    global queue
    queue.append(event.keysym)
    if list(queue) == konami_code:
        print("Konami code entered!")
        # buraya istediğiniz kodu yazın

root = tk.Tk()
root.bind("<Key>", check_code)
root.mainloop()


Bu kod, Tkinter’ın bind() metodunu kullanarak her tuşa check_code fonksiyonunu bağlar. Bu fonksiyon, tuş isimlerini bir kuyruğa ekler ve Konami kodu ile karşılaştırır. Eğer kod doğru girilirse, ekrana bir mesaj yazdırır ve istediğiniz başka bir kodu çalıştırabilirsiniz.
 
Çözüm

Technopat Haberler

Yeni konular

Geri
Yukarı