2017-05-30 8 views
1

Je tente d'afficher des instructions pour un jeu à partir d'un fichier texte dans un écran pygame. À ce stade, j'ai codé ceci:Comment afficher du texte sur un écran de pygame à partir d'un fichier texte?

def instructions(): 
    screen.fill(TEAL) 
    with open("pongInstructions.txt", encoding = 'utf-8') as f: 
     for line in f: 
      instructText = instructionsFont.render(line, True, WHITE) 
      screen.blit(instructText, ((400 - (instructText.get_width()/2)),(300 - (instructText.get_height()/2)))) 
      pygame.display.update() 

Lorsque j'appelle la fonction instructions, rien ne se passe du tout. Quelqu'un a-t-il une idée de pourquoi? Toute aide est grandement appréciée!

EDIT:

#Imports and Initialize Pygame Screen 
import pygame 
import sys 
import time 
import random 
import codecs 

pygame.init() 
screenSize = (800,600) 
screen = pygame.display.set_mode((screenSize),0) 
pygame.display.set_caption("Tasnim's Pong") 

instructionsFile = [line.strip('\n') 
    for line in open('pongInstructions.txt', 'r', encoding = 'utf-8').readlines()] 
font = pygame.font.SysFont("americantypewriter", 16) 

def instructions(screen): 
    screen.fill(TEAL) 
    for n, line in enumerate(instructionsFile): 
     text = font.render(line, 1, WHITE) 
     text_rect = text.get_rect() 
     text_rect.centerx = screenSize[0]//2 
     text_rect.centery = n*25 + 50 
     screen.blit(text, text_rect) 
     pygame.display.update() 

#Define Colours 
WHITE = (255,255,255) 
BLUE = (0,0,255) 
BLACK = (0,0,0) 
GRAY = (128, 128, 128) 
MAROON = (128, 0, 0) 
NAVYBLUE = (0, 0, 128) 
OLIVE = (128, 128, 0) 
PURPLE = (128, 0, 128) 
TEAL = (0,128,128) 
PINK = (226,132,164) 
MUTEDBLUE = (155,182,203) 
PLUM = (221,160,221) 

#All Fonts 
startscreenTitleFont = pygame.font.SysFont("americantypewriter", 120) 
startscreenPlayerChoiceFont = pygame.font.SysFont("americantypewriter", 60) 
startscreenQuitFont = ("americantypewriter", 60) 
startscreenCreditsFont = ("americantypewriter", 60) 
instructionsFont = pygame.font.SysFont("americantypewriter",60) 
quitFont = pygame.font.SysFont("americantypewriter",60) 
maingameP1ScoreFont = pygame.font.SysFont("americantypewriter",70) 
maingameP2ScoreFont = pygame.font.SysFont("americantypewriter",70) 
maingamePlayerOneFont = pygame.font.SysFont("americantypewriter",50) 
maingamescoreFont = pygame.font.SysFont("americantypewriter",25, bold = True) 
winnerFont = pygame.font.SysFont("americantypewriter",25) 

instructionsFile = [line.strip('\n') 
    for line in open('pongInstructions.txt', 'r', encoding = 'utf-8').readlines()] 
font = pygame.font.SysFont("americantypewriter", 16) 



#Introduction Screen 
def startscreen(): 
    go = True 
    choice = 1 

    screen.fill(MUTEDBLUE) 

    pygame.display.update() 
    pongTitle = startscreenTitleFont.render("Pong", True, WHITE) 
    screen.blit(pongTitle,((400 - (pongTitle.get_width()/2)),0)) 

    playerchoiceTitle = startscreenPlayerChoiceFont.render("Two Player Game", True, WHITE) 
    screen.blit(playerchoiceTitle, ((400 - (playerchoiceTitle.get_width()/2)),160)) 

    playerchoice2Title = startscreenPlayerChoiceFont.render("One Player Game", True, WHITE) 
    screen.blit(playerchoice2Title, ((400 - (playerchoice2Title.get_width()/2)),275)) 

    instructionsTitle = instructionsFont.render("How To Play", True, WHITE) 
    screen.blit(instructionsTitle, ((400 - (instructionsTitle.get_width()/2)),390)) 

    quitgameTitle = quitFont.render("Quit", True, WHITE) 
    screen.blit(quitgameTitle, ((400 - (quitgameTitle.get_width()/2)),495)) 


    pygame.display.update() 

#Choices for Introduction Screen 
    while go: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       go = False 

      elif event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_UP: 
        if choice != 1: 
         choice = choice - 1 
       elif event.key == pygame.K_DOWN: 
        if choice != 4: 
         choice = choice + 1 

       elif event.key == pygame.K_RETURN: 
        if choice == 1: 
         playTwoPlayer() 
        elif choice == 2: 
         playOnePlayer()       
        elif choice == 3: 
         instructions() 
        elif choice == 4: 
         quitGame() 

     if choice == 1: 
      screen.fill(MUTEDBLUE) 

      pongTitle = startscreenTitleFont.render("Pong", True, WHITE) 
      screen.blit(pongTitle,((400 - (pongTitle.get_width()/2)),0)) 

      playerchoiceTitle = startscreenPlayerChoiceFont.render("Two Player Game", True, NAVYBLUE) 
      screen.blit(playerchoiceTitle, ((400 - (playerchoiceTitle.get_width()/2)),160)) 

      playerchoice2Title = startscreenPlayerChoiceFont.render("One Player Game", True, WHITE) 
      screen.blit(playerchoice2Title, ((400 - (playerchoice2Title.get_width()/2)),275)) 

      instructionsTitle = instructionsFont.render("How To Play", True, WHITE) 
      screen.blit(instructionsTitle, ((400 - (instructionsTitle.get_width()/2)),390)) 

      quitgameTitle = quitFont.render("Quit", True, WHITE) 
      screen.blit(quitgameTitle, ((400 - (quitgameTitle.get_width()/2)),495)) 

     elif choice == 2: 
      screen.fill(MUTEDBLUE) 

      pongTitle = startscreenTitleFont.render("Pong", True, WHITE) 
      screen.blit(pongTitle,((400 - (pongTitle.get_width()/2)),0)) 

      playerchoiceTitle = startscreenPlayerChoiceFont.render("Two Player Game", True, WHITE) 
      screen.blit(playerchoiceTitle, ((400 - (playerchoiceTitle.get_width()/2)),160)) 

      playerchoice2Title = startscreenPlayerChoiceFont.render("One Player Game", True, NAVYBLUE) 
      screen.blit(playerchoice2Title, ((400 - (playerchoice2Title.get_width()/2)),275)) 

      instructionsTitle = instructionsFont.render("How To Play", True, WHITE) 
      screen.blit(instructionsTitle, ((400 - (instructionsTitle.get_width()/2)),390)) 

      quitgameTitle = quitFont.render("Quit", True, WHITE) 
      screen.blit(quitgameTitle, ((400 - (quitgameTitle.get_width()/2)),495)) 

     elif choice == 3: 
      screen.fill(MUTEDBLUE) 

      pongTitle = startscreenTitleFont.render("Pong", True, WHITE) 
      screen.blit(pongTitle,((400 - (pongTitle.get_width()/2)),0)) 

      playerchoiceTitle = startscreenPlayerChoiceFont.render("Two Player Game", True, WHITE) 
      screen.blit(playerchoiceTitle, ((400 - (playerchoiceTitle.get_width()/2)),160)) 

      playerchoice2Title = startscreenPlayerChoiceFont.render("One Player Game", True, WHITE) 
      screen.blit(playerchoice2Title, ((400 - (playerchoice2Title.get_width()/2)),275)) 

      instructionsTitle = instructionsFont.render("How To Play", True, NAVYBLUE) 
      screen.blit(instructionsTitle, ((400 - (instructionsTitle.get_width()/2)),390)) 

      quitgameTitle = quitFont.render("Quit", True, WHITE) 
      screen.blit(quitgameTitle, ((400 - (quitgameTitle.get_width()/2)),495)) 

     if choice == 4: 
      screen.fill(MUTEDBLUE) 

      pongTitle = startscreenTitleFont.render("Pong", True, WHITE) 
      screen.blit(pongTitle,((400 - (pongTitle.get_width()/2)),0)) 

      playerchoiceTitle = startscreenPlayerChoiceFont.render("Two Player Game", True, WHITE) 
      screen.blit(playerchoiceTitle, ((400 - (playerchoiceTitle.get_width()/2)),160)) 

      playerchoice2Title = startscreenPlayerChoiceFont.render("One Player Game", True, WHITE) 
      screen.blit(playerchoice2Title, ((400 - (playerchoice2Title.get_width()/2)),275)) 

      instructionsTitle = instructionsFont.render("How To Play", True, WHITE) 
      screen.blit(instructionsTitle, ((400 - (instructionsTitle.get_width()/2)),390)) 

      quitgameTitle = quitFont.render("Quit", True, NAVYBLUE) 
      screen.blit(quitgameTitle, ((400 - (quitgameTitle.get_width()/2)),495)) 

      pygame.display.update() 

     pygame.display.update() 

#Two Player Game 
def playTwoPlayer(): 
    screen.fill(MUTEDBLUE) 
    play = True 
    startballSPACE = True 

#Two Player Game- Set Variables 
    playeroneScore = 0 
    playertwoScore = 0 

    ballx = 400 
    bally = 350 
    balldx = 0 
    balldy = 0 
    xOne = 775 
    yOne = 275 
    xTwo = 0 
    yTwo = 275 
    dyOne = 0 
    dyTwo = 0 
    heightPaddleoneandtwo = 150 
    paddleheight = 150 

    go = True 
    while go: 

     if playeroneScore == 3: 
      winnerPlayerOne() 

     if playertwoScore == 3: 
      winnerPlayerTwo() 

     balldxdir = random.choice([-5,5]) 
     balldydir = random.choice([-5,5]) 

     for event in pygame.event.get(): 

      if event.type == pygame.QUIT: 
       quitGame() 

      elif event.type == pygame.KEYDOWN: 

#Controls for player one- Up and Down key    
       if event.key == pygame.K_UP: 
        dyOne = -10 
        directiony = 3 
       elif event.key == pygame.K_DOWN: 
        dyOne = 10 
        directiony = 4 

#Controls for player two- W and S key 
       elif event.key == pygame.K_w: 
        dyTwo = -10 
        directionyTWO = 2 
       elif event.key == pygame.K_s: 
        dyTwo = 10 
        directionyTWO = 1 
#Controls to quit 
       elif event.key == pygame.K_q: 
        startscreen() 

#Controls to start game (press space bar) 
       elif startballSPACE == True: 
        if event.key == pygame.K_SPACE: 
         play = True 
         balldx = balldxdir 
         balldy = balldydir 
         startballSPACE = False 

      if event.type == pygame.KEYUP: 

       if event.key == pygame.K_UP or event.key == pygame.K_DOWN: 
        dyOne = 0 
        directiony = 0 

       elif event.key == pygame.K_w or event.key == pygame.K_s: 
        dyTwo = 0 
        directionyTWO = 0 

     screen.fill(MUTEDBLUE) 

#Paddle Positioning 
     yOne = yOne + dyOne 
     yTwo =yTwo + dyTwo 

#Screen Top and Bottom Collision Check  
     if yOne > (600 - heightPaddleoneandtwo) and directiony == 4: 
      dyOne = 0 
      yOne = (600 - heightPaddleoneandtwo) 

     if yOne < 100 and directiony == 3: 
      dyOne = 0 
      yOne = 100 

     if yTwo > (600 - heightPaddleoneandtwo) and directionyTWO == 1: 
      dyTwo = 0 
      yTwo = (600 - heightPaddleoneandtwo) 

     if yTwo < 100 and directionyTWO == 2: 
      dyTwo = 0 
      yTwo = 100 

#Makes Ball Bounce in opposite direction 
     if play == True: 
      if ballx == xOne and bally <= (yOne + heightPaddleoneandtwo) and bally >= yOne: 
       balldx = -balldx 

#Makes Paddle Shorter on collisions with ball (makes game tougher) 
       if heightPaddleoneandtwo >= 10: 
        heightPaddleoneandtwo = heightPaddleoneandtwo - 7 
       else:     
        heightPaddleoneandtwo = heightPaddleoneandtwo 

#Makes Ball Bounce in opposite direction    
      elif bally >= 580: 
       balldy = -balldy 
      elif ballx == (xTwo + 25) and bally <= (yTwo + heightPaddleoneandtwo) and bally >= yTwo: 
       balldx = -balldx 

#Makes Paddle Shorter on collisions with ball (makes game tougher) 
       if heightPaddleoneandtwo >= 10: 
        heightPaddleoneandtwo = heightPaddleoneandtwo - 7 
       else: 
        heightPaddleoneandtwo = heightPaddleoneandtwo 

      elif bally <= 110: 
       balldy = -balldy 

      elif ballx<0 or ballx>800: 

#Adds score if ball passes paddle     
       if ballx>800: 
         playeroneScore = playeroneScore + 1 
         startballSPACE = True 
       elif ballx < 0: 
         startballSPACE = True 
         playertwoScore = playertwoScore + 1 
       ballx = 400 
       bally = 350 
       balldx = 0 
       balldy = 0 
       yOne = 275 
       y2Two = 275 
       heightPaddleoneandtwo = 150 
       play = False 

      ballx = ballx + balldx 
      bally = bally - balldy 

#Draw all screen components 
     pygame.draw.rect(screen, WHITE,(xOne, yOne, 25, heightPaddleoneandtwo),0) 
     pygame.draw.rect(screen, WHITE,(xTwo, yTwo, 25, heightPaddleoneandtwo),0) 

     pygame.draw.circle (screen, WHITE, (ballx,bally), 10, 0) 

     textScore = maingamescoreFont.render("Score", True, WHITE) 
     screen.blit(textScore, (((800/2)-(textScore.get_width()/2),0))) 

     textPlayeroneScore = maingameP1ScoreFont.render(str(playeroneScore), True, WHITE) 
     screen.blit(textPlayeroneScore, (0,0)) 

     textPlayertwoScore = maingameP2ScoreFont.render(str(playertwoScore), True, WHITE) 
     screen.blit(textPlayertwoScore, ((800 - textPlayertwoScore.get_width()),0)) 

     pygame.draw.rect (screen, WHITE, (0,90,800,10),0) 

     pygame.draw.rect (screen, WHITE, (395,112,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,162,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,212,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,262,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,312,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,362,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,412,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,462,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,512,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,562,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,612,10,25),0) 

     pygame.draw.rect (screen, WHITE, (45,0,3,100),0) 
     pygame.draw.rect (screen, WHITE, (752,0,3,100),0) 

     playerOneText = maingamePlayerOneFont.render("Player 1", True, WHITE) 
     playerTwoText = maingamePlayerOneFont.render("Player 2", True, WHITE) 
     screen.blit(playerOneText, (70,15)) 
     screen.blit(playerTwoText, (525,15)) 

     pygame.display.update() 

def instructions(): 
    screen.fill(TEAL) 
    for n, line in enumerate(instructionsFile): 
     text = font.render(line, 1, WHITE) 
     text_rect = text.get_rect() 
     text_rect.centerx = screenSize[0]//2 
     text_rect.centery = n*25 + 50 
     screen.blit(text, text_rect) 
     pygame.display.update() 

def winnerPlayerOne(): 
    screen.fill(TEAL) 
    winnerP1Message = winnerFont.render("Congrats Player 1. You Win! Press 'c' to continue", True, WHITE) 
    screen.blit(winnerP1Message, ((400 - (winnerP1Message.get_width()/2)),(300 - (winnerP1Message.get_height()/2)))) 
    pygame.display.update() 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      quitGame()    
     elif event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_c: 
       startscreen() 

def winnerPlayerTwo(): 
    screen.fill(TEAL) 
    winnerP2Message = winnerFont.render("Congrats Player 2. You Win! Press 'c' to continue", True, WHITE) 
    screen.blit(winnerP2Message, ((400 - (winnerP2Message.get_width()/2)),(300 - (winnerP2Message.get_height()/2)))) 
    pygame.display.update() 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      quitGame()    
     elif event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_c: 
       startscreen() 

def CPUwinner(): 
    screen.fill(TEAL) 
    computerWinner = winnerFont.render("Better luck next time... The computer has won! Press 'c' to continue", True, WHITE) 
    screen.blit(computerWinner, ((400 - (computerWinner.get_width()/2)),(300 - (computerWinner.get_height()/2)))) 
    pygame.display.update() 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      quitGame()    
     elif event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_c: 
       startscreen() 

def quitGame(): 
    pygame.quit() 
    sys.exit() 

def playOnePlayer(): 
    screen.fill(MUTEDBLUE) 
    play = True 
    startballSPACE = True 

#One Player Game- Set Variables 
    playeroneScore = 0 
    playertwoScore = 0 

    ballx = 400 
    bally = 350 
    balldx = 0 
    balldy = 0 
    xOne = 775 
    yOne = 275 
    xTwo = 0 
    yTwo = 275 
    dyOne = 0 
    dyTwo = 0 
    heightPaddleoneandtwo = 150 
    paddleheight = 150 

    go = True 
    while go: 

     if playeroneScore == 3: 
      winnerPlayerOne() 

     if playertwoScore == 3: 
      CPUwinner() 

     balldxdir = random.choice([-5,5]) 
     balldydir = random.choice([-5,5]) 

     for event in pygame.event.get(): 

      if event.type == pygame.QUIT: 
       quitGame() 

      elif event.type == pygame.KEYDOWN: 

#Controls for player one- Up and Down key    
       if event.key == pygame.K_UP: 
        dyTwo = -10 
        directiony = 3 
       elif event.key == pygame.K_DOWN: 
        dyTwo = 10 
        directiony = 4 

#Controls to quit 
       elif event.key == pygame.K_q: 
        startscreen() 

#Controls to start game (press space bar) 
       elif startballSPACE == True: 
        if event.key == pygame.K_SPACE: 
         play = True 
         balldx = balldxdir 
         balldy = balldydir 
         startballSPACE = False 

      if event.type == pygame.KEYUP: 
       if event.key == pygame.K_UP or event.key == pygame.K_DOWN: 
        dyTwo = 0 
        directionyTWO = 0 

     screen.fill(MUTEDBLUE) 

#Paddle Positioning 
     yTwo = yTwo + dyTwo 
     yOne = bally - (heightPaddleoneandtwo/2) 

#Screen Top and Bottom Collision Check  
     if yOne > (600 - heightPaddleoneandtwo): 
      dyOne = 0 
      yOne = (600 - heightPaddleoneandtwo) 

     if yOne < 100: 
      dyOne = 0 
      yOne = 100 

     if yTwo > (600 - heightPaddleoneandtwo) and directiony == 4: 
      dyTwo = 0 
      yTwo = (600 - heightPaddleoneandtwo) 

     if yTwo < 100 and directiony == 3: 
      dyTwo = 0 
      yTwo = 100 

#Makes Ball Bounce in opposite direction 
     if play == True: 
      if ballx == xOne and bally <= (yOne + heightPaddleoneandtwo) and bally >= yOne: 
       balldx = -balldx 

#Makes Paddle Shorter on collisions with ball (makes game tougher) 
       if heightPaddleoneandtwo >= 10: 
        heightPaddleoneandtwo = heightPaddleoneandtwo - 7 
       else:     
        heightPaddleoneandtwo = heightPaddleoneandtwo      

#Makes Ball Bounce in opposite direction       
      elif bally >= 580: 
       balldy = -balldy 

      elif ballx == (xTwo + 25) and bally <= (yTwo + heightPaddleoneandtwo) and bally >= yTwo: 
       balldx = -balldx 

#Makes Paddle Shorter on collisions with ball (makes game tougher)     
       if heightPaddleoneandtwo >= 10: 
        heightPaddleoneandtwo = heightPaddleoneandtwo - 7 
       else: 
        heightPaddleoneandtwo = heightPaddleoneandtwo 

      elif bally <= 110: 
       balldy = -balldy 

      elif ballx<0 or ballx>800: 

#Adds score if ball passes paddle     
       if ballx>800: 
         playeroneScore = playeroneScore + 1 
         startballSPACE = True 
       elif ballx < 0: 
         startballSPACE = True 
         playertwoScore = playertwoScore + 1 
       ballx = 400 
       bally = 350 
       balldx = 0 
       balldy = 0 
       yOne = 275 
       y2Two = 275 
       heightPaddleoneandtwo = 150 
       play = False 

      ballx = ballx + balldx 
      bally = bally - balldy 


#Draw all screen components 
     pygame.draw.rect(screen, WHITE,(xOne, yOne, 25, heightPaddleoneandtwo),0) 
     pygame.draw.rect(screen, WHITE,(xTwo, yTwo, 25, heightPaddleoneandtwo),0) 

     pygame.draw.circle (screen, WHITE, (ballx,bally), 10, 0) 

     textScore = maingamescoreFont.render("Score", True, WHITE) 
     screen.blit(textScore, (((800/2)-(textScore.get_width()/2),0))) 

     textPlayeroneScore = maingameP1ScoreFont.render(str(playeroneScore), True, WHITE) 
     screen.blit(textPlayeroneScore, (0,0)) 

     textPlayertwoScore = maingameP2ScoreFont.render(str(playertwoScore), True, WHITE) 
     screen.blit(textPlayertwoScore, ((800 - textPlayertwoScore.get_width()),0)) 

     pygame.draw.rect (screen, WHITE, (0,90,800,10),0) 

     pygame.draw.rect (screen, WHITE, (395,112,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,162,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,212,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,262,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,312,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,362,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,412,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,462,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,512,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,562,10,25),0) 
     pygame.draw.rect (screen, WHITE, (395,612,10,25),0) 

     pygame.draw.rect (screen, WHITE, (45,0,3,100),0) 
     pygame.draw.rect (screen, WHITE, (752,0,3,100),0) 

     playerOneText = maingamePlayerOneFont.render("Player 1", True, WHITE) 
     playerTwoText = maingamePlayerOneFont.render("CPU", True, WHITE) 
     screen.blit(playerOneText, (70,15)) 
     screen.blit(playerTwoText, (630,15)) 

     pygame.display.update() 

startscreen() 

Répondre

1

Vous y êtes presque, mais screen.blit a besoin d'un objet rectangle à côté de votre textsprite, cet objet est utilisé pour définir la taille et l'emplacement de l'image-objet. De plus, vous devez donner à chaque ligne sa propre coordonnée x ou y (sinon elles seront toutes dessinées les unes sur les autres). Pour résoudre ce problème, utilisez for n, line in enumerate(f). Cela vous donnera une valeur d'index pour chaque ligne, appelée n . si l'utilisation d'énumérer et de supprimer votre relevé de screen.blit actuel et le remplacer par ce bloc il devrait fonctionner:

text_rect = instructText.get_rect() 
    text_rect.centerx = SCREENSIZE[0]//2 
    text_rect.centery = n*25 + 50 
    screen.blit(text, text_rect) 

Ici, vous obtenez un objet rect pour l'image-objet texte en l'appelant est la méthode get_rect(), puis réglez son centre x coordonnée pour être le centre de l'écran (j'utilise un contant pour maintenir la taille de l'écran), puis définissez son centre y coordonnée à 25 * les lignes de placement dans le tableau + 50 pixels de remplissage, et enfin dessiner à l'écran avec screen.blit(text, text_rect)

J'ai fait un exemple de travail en utilisant une police personnalisée, vous pouvez le voir here

Dans un précédent projet, je l'ai aussi fait un objet pour des tâches telles que cela, vous êtes invités à utiliser ou copier si vous voulez, vous pouvez le trouver here

Quoi qu'il en soit, je l'espère aidé, heureux codage.

EDIT:

juste pris à votre code, et de ce que je peux voir votre code ne rien actuellement :) Vous définissez votre comportement souhaité dans la fonction sartscreen() mais jamais appeler la fonction et donc rien arrive, c'est votre principal problème, heureusement c'est une solution facile, il suffit d'appeler la fonction au bas de votre document comme si startscreen(screen)

Mais attendez? Vous remarquerez que j'ai ajouté l'objet screen à cet appel de fonction, car vous devez donner à votre fonction une référence de l'objet screen, sinon il ne sait pas "quel" objet d'écran dont vous parlez, vous avez besoin Pour ce faire, vous devez également indiquer à votre fonction d'attendre un argument. Ainsi, lorsque vous définissez votre fonction d'écran d'accueil et votre fonction d'instruction, vous devez également ajouter l'objet d'écran. def startscreen(screen): et def instructions(screen): maintenant vos fonctions savent ce que vous parlez lorsque vous appelez screen.fill(COLOR) et screen.blit(text, text_rect)

Autre que c'est seulement une question de petits détails, mais après avoir appliqué ces deux changements de votre menu semblait fonctionner pour moi sur python 3.5, Cependant, je recommande que vous jetez un oeil à la Clock object ainsi que pour limiter votre framerate (sinon le jeu tournera très vite sur les ordinateurs rapides)

+0

J'ai intégré votre code dans mon code principal, mais il ne s'affiche toujours pas. Cela peut être un problème avec l'endroit où j'ai placé le code, car lorsque je l'exécute dans un fichier séparé, cela fonctionne parfaitement. Cela vous dérangerait-il de le vérifier? J'ai ajouté une partie de mon code en tant que modification dans mon message d'origine.Je vous remercie beaucoup pour votre aide! – Student

+0

J'ai regardé votre code et édité ma réponse initiale, c'était trop long pour un commentaire, j'ai essayé d'exécuter votre code après avoir appliqué les deux corrections mentionnées et cela semble fonctionner maintenant. – Molex4

+0

Ahah J'appelle la fonction, mais ce n'est qu'une partie de mon code - la partie avec la fonction instructions, c'est pourquoi elle semble incomplète mais merci beaucoup. Cependant, tout mon menu fonctionne, c'est simplement la partie des instructions qui ne fonctionne pas. J'ai ajouté mon code entier si vous voulez le voir, car il ne semble toujours pas remonter les instructions. – Student