2-Oyun iki aşamalı.
3-Oyunun 1. aşamasında sağ tarafta uçaklar,sol tarafta hayvanlar bulunuyor. Oyunun amacı doğru hayvan, fotoğraflarını, doğru uçaklara sürükleyebilmektedir.
hayvan fotoğraf dosyalarının ismi:
-akbaba.jpeg
-ebabil.jpeg
-yusufçuk.jpeg
-yunus.jpeg
uçak fotoğraf dosyalarının ismi:
-concorde.jpeg
-helikopter.jpeg
-a320.jpeg
-savasucagi.jpeg
4-Oyunun 1. aşamasında eşleştirilmesi gereken hayvan ve uçak çiftleri aşağıdaki gibidir:
yusufçuk.jpeg-helikopter.jpeg
yunus.jpeg-concorde.jpeg
ebabil.jpeg-savasucagi.jpeg
akbaba.jpeg-concorde.jpeg
5-Oyunun birinci aşamasında bu eşleştirmeler dışındaki sürüklemeler yanlıştır ve yanlış eşleşmelee sonrasinda ekranda “tekrar dene” yazar ve bir saniye sonra kaybolur.
6- Doğru eşleştirilem fotoğraflar ekrandan kaybolur. Tüm hayvanlar doğru eşlestirildikten sonra (ekranda hiç resim kalmaması gerekmektedir.)oyunun ikinci aşamasına geçilir. Ekrana ikinci aşama için fotoğraflar gelir.
7-Oyunun ikinci aşaması da birinci aşamasıyla aynı amacı taşır. Sol tarafta hayvan resimleri, sağ tarafta ise uçak resimleri durmaktadır. Oyunun ikinci aşamasında gösterilecek olan resimlerin uzantıları aşağıdaki gibidir:
oyunun 2. aşamasındaki hayvan resimlerinin dosyalarinin ismi:
-aa.jpeg
-se.jpeg
-hy.jpeg
-cy.jpeg
oyunun 2. aşamasındaki uçak resimlerinin dosyalarının ismi:
-tuyyapisi.jpeg
-kuyrukyapisi.jpeg
-ucusstili.jpeg
-burunyapisi.jpeg
8-Oyunun 2. aşamasında eşleştirilmesi gereken hayvan ve uçak çiftleri aşağıdaki gibidir:
aa.jpeg-tuyyapisi.jpeg
se.jpeg-kuyrukyapisi.jpeg
hy.jpeg-ucusstili.jpeg
cy.jpeg-burunyapisi.jpeg
9-Oyunun ikinci aşamasında bu eşleştirmeler dışındaki sürüklemeler yanlıştır ve yanlış eşleşmeler sonrasinda ekranda “tekrar dene” yazar ve bir saniye sonra kaybolur.
10- Doğru eşleştirilen fotoğraflar ekrandan kaybolur. Tüm hayvanlar doğru eşlestirildikten sonra (ekranda hiç resim kalmaması gerekmektedir.)oyun biter.
11-Fotograglarin eşleştirilmesi olayı birbiri üzerine “sürüklenilmesi” ile gerçekleştirilir.
12- Doğru eslestirilen hem hayvan hem de uçak fotoğrafı kaybolur.
13- Fotoğraflar 0.1 oranında küçültülür ve Fotoğraflar alt alta iken arasında biraz boşluk bırakılır.
şeklinde bir oyun asamam var ve ben aşağıdaki kodları yazdım.
import pygame
import sys
# Pygame başlatma
pygame.init()
# Ekran ayarları
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('Eşleştirme Oyunu')
# Renkler
WHITE = (255, 255, 255)
RED = (255, 0, 0)
# Fotoğrafların yüklenmesi ve boyutlandırılması için fonksiyon
def load_and_scale_image(image_path, scale_factor):
# Resmi yükle
image = pygame.image.load(image_path)
# Resmin boyutunu al
original_size = image.get_size()
# Yeni boyutları hesapla
scaled_size = (int(original_size[0] * scale_factor), int(original_size[1] * scale_factor))
# Resmi yeni boyutlara göre ölçeklendir
return pygame.transform.scale(image, scaled_size)
# Resimleri yükle ve %7 oranında küçült
scale_factor = 0.07
animal_images = {
'akbaba': 'akbaba.jpeg',
'ebabil': 'ebabil.jpeg',
'yusufçuk': 'yusufçuk.jpeg',
'yunus': 'yunus.jpeg'
}
plane_images = {
'concorde': 'concorde.jpeg',
'helikopter': 'helikopter.jpeg',
'a320': 'a320.jpeg',
'savasucagi': 'savasucagi.jpeg'
}
second_stage_animal_images = {
'aa': 'aa.jpeg',
'se': 'se.jpeg',
'hy': 'hy.jpeg',
'cy': 'cy.jpeg'
}
second_stage_plane_images = {
'tuyyapisi': 'tuyyapisi.jpeg',
'kuyrukyapisi': 'kuyrukyapisi.jpeg',
'ucusstili': 'ucusstili.jpeg',
'burunyapisi': 'burunyapisi.jpeg'
}
# Eşleştirme sözlüğü
matching_pairs_first_stage = {
'yusufçuk': 'helikopter',
'yunus': 'concorde',
'ebabil': 'savasucagi',
'akbaba': 'a320'
}
matching_pairs_second_stage = {
'aa': 'tuyyapisi',
'se': 'kuyrukyapisi',
'hy': 'ucusstili',
'cy': 'burunyapisi'
}
# Fotoğrafların Pygame yüzeylerine yüklenmesi ve ölçeklendirilmesi
loaded_animal_images = {name: load_and_scale_image(img, scale_factor) for name, img in animal_images.items()}
loaded_plane_images = {name: load_and_scale_image(img, scale_factor) for name, img in plane_images.items()}
loaded_second_stage_animal_images = {name: load_and_scale_image(img, scale_factor) for name, img in second_stage_animal_images.items()}
loaded_second_stage_plane_images = {name: load_and_scale_image(img, scale_factor) for name, img in second_stage_plane_images.items()}
# Boşluk değeri
spacing = 20 # Fotoğraflar arası boşluk
# Oyun durumları
first_stage_complete = False
second_stage_complete = False
dragging = False
selected_image = None
selected_key = None
# Oyun döngüsü
running = True
while running:
screen.fill(WHITE)
# Olayları kontrol etme
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN:
if not first_stage_complete or (first_stage_complete and not second_stage_complete):
for key, img in loaded_animal_images.items():
if img.get_rect(topleft=(100, list(loaded_animal_images.keys()).index(key) * (img.get_height() + spacing))).collidepoint(event.pos):
dragging = True
selected_image = img
selected_key = key
break
elif event.type == pygame.MOUSEBUTTONUP:
if dragging:
dragging = False
if not first_stage_complete:
correct_plane = matching_pairs_first_stage[selected_key]
plane_img = loaded_plane_images[correct_plane]
plane_rect = plane_img.get_rect(topleft=(700, list(loaded_plane_images.keys()).index(correct_plane) * (plane_img.get_height() + spacing)))
if plane_rect.collidepoint(event.pos):
# Doğru eşleştirme yapıldığında her iki resmi de kaldır
del loaded_animal_images[selected_key]
del loaded_plane_images[correct_plane]
if not loaded_animal_images: # İlk aşama tamamlandıysa ikinci aşamaya geç
first_stage_complete = True
loaded_plane_images = {name: load_and_scale_image(img, scale_factor) for name, img in second_stage_plane_images.items()}
loaded_animal_images = {name: load_and_scale_image(img, scale_factor) for name, img in second_stage_animal_images.items()}
else:
# Yanlış eşleştirme mesajı
font = pygame.font.Font(None, 36)
text = font.render('Tekrar Dene', True, RED)
screen.blit(text, (width // 2 - text.get_width() // 2, height // 2 - text.get_height() // 2))
pygame.display.flip()
pygame.time.wait(500) # Mesajın süresini 500 milisaniye olarak ayarla
elif first_stage_complete and not second_stage_complete:
correct_plane = matching_pairs_second_stage[selected_key]
plane_img = loaded_second_stage_plane_images[correct_plane]
plane_rect = plane_img.get_rect(topleft=(700, list(loaded_second_stage_plane_images.keys()).index(correct_plane) * (plane_img.get_height() + spacing)))
if plane_rect.collidepoint(event.pos):
# Doğru eşleştirme yapıldığında her iki resmi de kaldır
del loaded_second_stage_animal_images[selected_key]
del loaded_second_stage_plane_images[correct_plane]
if not loaded_second_stage_animal_images: # İkinci aşama tamamlandıysa oyunu bitir
second_stage_complete = True
font = pygame.font.Font(None, 36)
text = font.render('Oyun Bitti', True, RED)
screen.blit(text, (width // 2 - text.get_width() // 2, height // 2 - text.get_height() // 2))
pygame.display.flip()
pygame.time.wait(3000)
running = False
# Fotoğrafları ekrana çizme
if not first_stage_complete or (first_stage_complete and not second_stage_complete):
for key, img in loaded_animal_images.items():
screen.blit(img, (100, list(loaded_animal_images.keys()).index(key) * (img.get_height() + spacing)))
for key, img in loaded_plane_images.items():
screen.blit(img, (700, list(loaded_plane_images.keys()).index(key) * (img.get_height() + spacing)))
# Sürüklenen fotoğrafı ekranda gösterme
if dragging:
mouse_x, mouse_y = pygame.mouse.get_pos()
screen.blit(selected_image, (mouse_x - selected_image.get_width() // 2, mouse_y - selected_image.get_height() // 2))
# Ekranı güncelleme
pygame.display.flip()
kod doğru bir şekilde çalışıyor herhangi bir sorun yok. fakat ikinci aşamaya geçildiğinde eslestirilmeler yapılmıyor ve keyError vererek ekran kapanıyor. sorun nedir