Académie
Premiers pas (Python)
Modifiez les graphismes et la difficulté

Modifiez les graphismes et la difficulté

Étape 6

Nous avons mis en application ce que nous avons appris sur les variables. Jouons un peu avec les graphismes et les mécaniques de jeu !

Challenge #5

Notre raquette et notre balle ont une hauteur et une largeur, en pixels. Ces valeurs sont définies dans des variables. De plus, elles sont toutes blanches... Nous aimerions rendre le jeu un peu plus simple. Essayez de rendre la raquette et la balle un peu plus grandes, et d'afficher les deux dans des couleurs différentes !

Besoin d'aide ?

  • Les tailles sont stockées dans des variables, trouvez où elles sont ! La raquette possède une hauteur et une largeur, tandis que la balle n'a qu'une seule variable (car sa hauteur et sa largeur sont identiques).
  • Pour ce qui est de la couleur, c'est exactement le même principe que pour le texte. Il vous suffit de trouver à quel endroit sont affichés les éléments souhaités, puis de rajouter une instruction pour modifier la couleur juste avant. Par exemple, pour le rouge : display.setColor(color.RED)

Résultat attendu

Vous êtes libre de choisir les tailles et couleurs de votre choix, mais voici un exemple de ce que vous pouvez faire !

Solution

Voir

Il s'agit d'une solution possible, la votre est peut-être différente !

from gamebuino_meta import begin, waitForUpdate, display, color, buttons, collide

# Taille, vitesse et position initiale de la balle :
ball_size = 3
ball_x_speed = 1
ball_y_speed = 1
ball_x_position = 20
ball_y_position = 20

# Taille initiale de la raquette du joueur :
player_height = 12
player_width = 3
player_speed = 2

# Position initiale de la raquette :
player_x_position = 10
player_y_position = 30

# Score
score = 0
total = 0

begin()

while True:
    waitForUpdate()
    display.clear()

    # Si on presse les boutons UP ou DOWN, nous déplaçons la raquette vers le haut, ou vers le bas :
    if buttons.repeat(buttons.UP, 0):
        player_y_position = player_y_position - player_speed

    if buttons.repeat(buttons.DOWN, 0):
        player_y_position = player_y_position + player_speed

    # Nous déplaçons la balle
    ball_x_position = ball_x_position + ball_x_speed
    ball_y_position = ball_y_position + ball_y_speed

    # Vérification si la balle entre en collision avec le haut, bas ou droite de l'écran
    # Si c'est le cas, nous inversons sa direction
    if ball_y_position <= 0:
        ball_y_speed = -ball_y_speed

    if ball_y_position >= 64 - ball_size:
        ball_y_speed = -ball_y_speed

    if ball_x_position + ball_size >= 80:
        ball_x_speed = -ball_x_speed

    # Nous testons s'il y a collision entre la balle et la raquette du joueur
    if (    (ball_x_position <= player_x_position + player_width)
            and (ball_y_position + ball_size >= player_y_position)
            and (ball_y_position <= player_y_position + player_height)
        ):
        ball_x_speed = -ball_x_speed
        score = score + 1
        total = total + 1
		
    # Vérifier si la balle est sortie de l'écran
    if ball_x_position <= 0:
        score = 0  # Nous remettons le score à 0
        ball_x_speed = -ball_x_speed
				
    # Empêcher la raquette de sortir de l'écran
    if player_y_position <= 0:
        player_y_position = 0
    
    if player_y_position >= 64 - player_height:
        player_y_position = 64 - player_height

    # Affichage de la balle
    display.setColor(color.PINK)
    display.fillRect(ball_x_position, ball_y_position, ball_size, ball_size)

    # Affichage de la raquette du joueur
    display.setColor(color.BROWN)
    display.fillRect(player_x_position, player_y_position, player_width, player_height)
	
	# Affichage du score
    display.setColor(color.GREEN)
    display.print("Mon score est ")
    display.print(score)
	
    display.print("\n")
    
    display.setColor(color.BLUE)
    display.print("Total : ")
    display.print(total)

Explications

En modifiant la valeur de ball_size à 6, notre balle fait désormais 6 pixels de haut, et 6 pixels de large. Pour la raquette, nous avons modifié player_height et player_width. C'est tout ! Enfin, nous avons changé la couleur juste avant l'affichage de nos éléments : la raquette en marron (color.BROWN), et la balle en rose (color.PINK). Le jeu est désormais un peu plus simple !

Aller plus loin

Trop simple, même ? Et si nous faisions l'inverse : rendre le jeu plus difficile ?

Quelques pistes :

  • Diminuer la taille de la raquette et de la balle
  • Augmenter la vitesse de la balle
  • Offrir 2 points au lieu de 1 à chaque renvoi réussi
  • ...

Nous ne vous donnons pas d'exemple ici, mais nous sommes certains que vous serez créatifs !

Nous sommes arrivés à la fin de ce workshop, et nous espérons qu'il vous aura donné envie d'aller un peu plus loin dans l'apprentissage du Python. D'autres workshops vont arriver prochainement, mais d'ici là, vous avez assez de connaissances pour pouvoir vous amuser et pratiquer de votre côté !

Remarques et infos utiles

Maintenant que vous avez fait vos premiers pas, vous êtes sûrement impatient de vous lancer dans une vraie création et de pouvoir y jouer sur votre Gamebuino où et quand vous le souhaitez !

Toutefois, le développement de l'environnement Python sur Gamebuino est très récent et certaines choses ne sont pas encore possible à l'heure d'aujourd'hui.

Code.py n'est pas persistant :

Lorsque vous sauvez le fichier code.py sur le volume CIRCUITPY de votre Gamebuino, celui est interprété et exécuté directement sur la console. Mais à l'heure actuelle il n'est pas encore possible de sauver ce fichier code.py sur la carte SD et de le monter dans CircuitPython sans que vous soyez raccordé à un ordinateur pour effectuer manuellement l'opération. Il y a encore des choses à développer avant que cela ne soit possible.

Pour le moment la seule façon d'avoir une création persistante exécutable depuis le menu de la Gamebuino est d'utiliser l'environnement Arduino/C++ de la Gamebuino.

Workshop suivant