Pygame'de menü ile oyun nasıl entegre edilir

Erenbarn

Decapat
Katılım
20 Nisan 2021
Mesajlar
27
Daha fazla  
Cinsiyet
Erkek
Merhaba arkadaşlar, bir projem var. Bu projede bir pygame kullanarak bir oyun kodladım. Oyunum hazır kod dizinini çalıştırdığımda direkt oyun başlıyor. Fakat bu oyuna bir menü eklemek istiyorum. İnternetten hazır bulduğum birkaç menü tasarımı var bu tasarımları kendi oyunuma entegre etmek istiyorum.

Kod:
import pygame, sys.
from button import Button.

pygame.init()

SCREEN = pygame.display.set_mode((1280, 720))
pygame.display.set_caption("Menu")

BG = pygame.image.load("assets/Background.png")

def get_font(size): # Returns Press-Start-2P in the desired size.
 return pygame.font.Font("assets/font.ttf", size)

def play():
 while True:
 PLAY_MOUSE_POS = pygame.mouse.get_pos()

 SCREEN.fill("black")

 PLAY_TEXT = get_font(45).render("This is the PLAY screen.", True, "White")
 PLAY_RECT = PLAY_TEXT.get_rect(center=(640, 260))
 SCREEN.blit(PLAY_TEXT, PLAY_RECT)

 PLAY_BACK = Button(image=None, pos=(640, 460),
 text_input="BACK", font=get_font(75), base_color="White", hovering_color="Green")

 PLAY_BACK.changeColor(PLAY_MOUSE_POS)
 PLAY_BACK.update(SCREEN)

 for event in pygame.event.get():
 if event.type == pygame.QUIT:
 pygame.quit()
 sys.exit()
 if event.type == pygame.MOUSEBUTTONDOWN:
 if PLAY_BACK.checkForInput(PLAY_MOUSE_POS):
 main_menu()

 pygame.display.update()

def options():
 while True:
 OPTIONS_MOUSE_POS = pygame.mouse.get_pos()

 SCREEN.fill("white")

 OPTIONS_TEXT = get_font(45).render("This is the OPTIONS screen.", True, "Black")
 OPTIONS_RECT = OPTIONS_TEXT.get_rect(center=(640, 260))
 SCREEN.blit(OPTIONS_TEXT, OPTIONS_RECT)

 OPTIONS_BACK = Button(image=None, pos=(640, 460),
 text_input="BACK", font=get_font(75), base_color="Black", hovering_color="Green")

 OPTIONS_BACK.changeColor(OPTIONS_MOUSE_POS)
 OPTIONS_BACK.update(SCREEN)

 for event in pygame.event.get():
 if event.type == pygame.QUIT:
 pygame.quit()
 sys.exit()
 if event.type == pygame.MOUSEBUTTONDOWN:
 if OPTIONS_BACK.checkForInput(OPTIONS_MOUSE_POS):
 main_menu()

 pygame.display.update()

def main_menu():
 while True:
 SCREEN.blit(BG, (0, 0))

 MENU_MOUSE_POS = pygame.mouse.get_pos()

 MENU_TEXT = get_font(100).render("MAIN MENU", True, "#b68f40")
 MENU_RECT = MENU_TEXT.get_rect(center=(640, 100))

 PLAY_BUTTON = Button(image=pygame.image.load("assets/Play Rect.png"), pos=(640, 250),
 text_input="PLAY", font=get_font(75), base_color="#d7fcd4", hovering_color="White")
 OPTIONS_BUTTON = Button(image=pygame.image.load("assets/Options Rect.png"), pos=(640, 400),
 text_input="OPTIONS", font=get_font(75), base_color="#d7fcd4", hovering_color="White")
 QUIT_BUTTON = Button(image=pygame.image.load("assets/Quit Rect.png"), pos=(640, 550),
 text_input="QUIT", font=get_font(75), base_color="#d7fcd4", hovering_color="White")

 SCREEN.blit(MENU_TEXT, MENU_RECT)

 for button in [PLAY_BUTTON, OPTIONS_BUTTON, QUIT_BUTTON]:
 button.changeColor(MENU_MOUSE_POS)
 button.update(SCREEN)

 for event in pygame.event.get():
 if event.type == pygame.QUIT:
 pygame.quit()
 sys.exit()
 if event.type == pygame.MOUSEBUTTONDOWN:
 if PLAY_BUTTON.checkForInput(MENU_MOUSE_POS):
 play()
 if OPTIONS_BUTTON.checkForInput(MENU_MOUSE_POS):
 options()
 if QUIT_BUTTON.checkForInput(MENU_MOUSE_POS):
 pygame.quit()
 sys.exit()

 pygame.display.update()

main_menu()

Burada gördüğünüz gibi play butonuna basıldığında siyah erkanda "this is the play screen" yazısı çıkıyor. Bunun yerine bu kısma aynı klasör içerisindeki benim oyunumu nasıl çağırabilirim?
 
Merhaba arkadaşlar, bir projem var. Bu projede bir pygame kullanarak bir oyun kodladım. Oyunum hazır kod dizinini çalıştırdığımda direkt oyun başlıyor. Fakat bu oyuna bir menü eklemek istiyorum. İnternetten hazır bulduğum birkaç menü tasarımı var bu tasarımları kendi oyunuma entegre etmek istiyorum.

Kod:
import pygame, sys.
from button import Button.

pygame.init()

SCREEN = pygame.display.set_mode((1280, 720))
pygame.display.set_caption("Menu")

BG = pygame.image.load("assets/Background.png")

def get_font(size): # Returns Press-Start-2P in the desired size.
 return pygame.font.Font("assets/font.ttf", size)

def play():
 while True:
 PLAY_MOUSE_POS = pygame.mouse.get_pos()

 SCREEN.fill("black")

 PLAY_TEXT = get_font(45).render("This is the PLAY screen.", True, "White")
 PLAY_RECT = PLAY_TEXT.get_rect(center=(640, 260))
 SCREEN.blit(PLAY_TEXT, PLAY_RECT)

 PLAY_BACK = Button(image=None, pos=(640, 460),
 text_input="BACK", font=get_font(75), base_color="White", hovering_color="Green")

 PLAY_BACK.changeColor(PLAY_MOUSE_POS)
 PLAY_BACK.update(SCREEN)

 for event in pygame.event.get():
 if event.type == pygame.QUIT:
 pygame.quit()
 sys.exit()
 if event.type == pygame.MOUSEBUTTONDOWN:
 if PLAY_BACK.checkForInput(PLAY_MOUSE_POS):
 main_menu()

 pygame.display.update()

def options():
 while True:
 OPTIONS_MOUSE_POS = pygame.mouse.get_pos()

 SCREEN.fill("white")

 OPTIONS_TEXT = get_font(45).render("This is the OPTIONS screen.", True, "Black")
 OPTIONS_RECT = OPTIONS_TEXT.get_rect(center=(640, 260))
 SCREEN.blit(OPTIONS_TEXT, OPTIONS_RECT)

 OPTIONS_BACK = Button(image=None, pos=(640, 460),
 text_input="BACK", font=get_font(75), base_color="Black", hovering_color="Green")

 OPTIONS_BACK.changeColor(OPTIONS_MOUSE_POS)
 OPTIONS_BACK.update(SCREEN)

 for event in pygame.event.get():
 if event.type == pygame.QUIT:
 pygame.quit()
 sys.exit()
 if event.type == pygame.MOUSEBUTTONDOWN:
 if OPTIONS_BACK.checkForInput(OPTIONS_MOUSE_POS):
 main_menu()

 pygame.display.update()

def main_menu():
 while True:
 SCREEN.blit(BG, (0, 0))

 MENU_MOUSE_POS = pygame.mouse.get_pos()

 MENU_TEXT = get_font(100).render("MAIN MENU", True, "#b68f40")
 MENU_RECT = MENU_TEXT.get_rect(center=(640, 100))

 PLAY_BUTTON = Button(image=pygame.image.load("assets/Play Rect.png"), pos=(640, 250),
 text_input="PLAY", font=get_font(75), base_color="#d7fcd4", hovering_color="White")
 OPTIONS_BUTTON = Button(image=pygame.image.load("assets/Options Rect.png"), pos=(640, 400),
 text_input="OPTIONS", font=get_font(75), base_color="#d7fcd4", hovering_color="White")
 QUIT_BUTTON = Button(image=pygame.image.load("assets/Quit Rect.png"), pos=(640, 550),
 text_input="QUIT", font=get_font(75), base_color="#d7fcd4", hovering_color="White")

 SCREEN.blit(MENU_TEXT, MENU_RECT)

 for button in [PLAY_BUTTON, OPTIONS_BUTTON, QUIT_BUTTON]:
 button.changeColor(MENU_MOUSE_POS)
 button.update(SCREEN)

 for event in pygame.event.get():
 if event.type == pygame.QUIT:
 pygame.quit()
 sys.exit()
 if event.type == pygame.MOUSEBUTTONDOWN:
 if PLAY_BUTTON.checkForInput(MENU_MOUSE_POS):
 play()
 if OPTIONS_BUTTON.checkForInput(MENU_MOUSE_POS):
 options()
 if QUIT_BUTTON.checkForInput(MENU_MOUSE_POS):
 pygame.quit()
 sys.exit()

 pygame.display.update()

main_menu()

Burada gördüğünüz gibi play butonuna basıldığında siyah erkanda "this is the play screen" yazısı çıkıyor. Bunun yerine bu kısma aynı klasör içerisindeki benim oyunumu nasıl çağırabilirim?
play() fonksiyonun içerisine oyununuzun kodlarınızı koymanız lazım. Ama size tavsiyem kendiniz ana menü yapmaya çalışın ki daha rahat edebilesiniz.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
Bunlara bakmayı deneyin. Kendiniz yazdığınız zaman hem yazarken öğreneceksiniz hem de kendiniz bir menü yapabileceksiniz.
 

Geri
Yukarı