Quelques projets pour démarrer

I. Bataille navale : on corrige !

Rappel du cahier des charges : le programme minimal que l’on souhaite doit

  • demander à l’utilisateur
    • une ligne
    • une colonne
  • pour trouver une cible (aléatoire ?)
  • jusqu’à ce qu’il trouve
  • en comptant les coups
  • et lui indiquer « en vue » si une des deux coordonnées est juste…

Proposition de correction établie ensemble :

from random import randint,choice

liste=['A','B','C','D','E','F','G','H','I','J']

x_cible = str(randint(1,10))
y_cible = choice(liste)

y_joueur = input("Saisis ta ligne : ")
x_joueur = input("Saisis ta colonne : ")

print("Tu as joué",y_joueur+x_joueur)

compteur = 1

while x_joueur != x_cible or  y_joueur != y_cible :
# not(x_joueur == x_cible and  y_joueur == y_cible)
    if x_cible == x_joueur : print("cool en x")
    elif y_cible == y_joueur : print("cool en y")
    else : print("plouf")

    y_joueur = input("Saisis ta ligne : ")
    x_joueur = input("Saisis ta colonne : ")

    print("Tu as joué",y_joueur+x_joueur)
    compteur += 1

print("Tu as gagné en ",compteur,"coup(s) !")

Bilan : on y a appris/révisé

  • les entrées / sorties en console
    • input
    • print
  •  les types
    • int (entier)
    • string (chaîne de caractère)
  • les tests
    • if
    • elif
    • else
    • un double égal « == » pour tester une égalité
  • la boucle while
  • l’indentation
  • l’incrémentation
  • à utiliser une bibliothèque externe (ici random, et ci-dessous … turtle)

IL FAUT L’AVOIR CODÉ SOI-MÊME POUR ESPÉRER CONTINUER À SUIVRE EN ISN !!!


II. Des dés en turtle :

On veut dessiner ces dés avec le module turtle de python :

cm 2019-09-09 début avec turtle

1) Consignes : un programme devra toujours débuter par

from turtle import *

On peut alors utiliser les fonctions de turtle, par exemple :

  • up() -> lève le stylo
  • down() -> repose le stylo
  • forward(100) -> avance de 100 pixels
  • backward(taille) -> recule de taille pixels, où taille doit être déclaré avant
  • left(90) -> tourne de 90° « vers la gauche »
  • right(45) -> tourne de 45° « vers la droite »
  • fillcolor("red") puis begin_fill() et end_fill() entourant les tracés « remplissent » le contour en rouge
  • pencolor((1,0,1)) met la couleur du stylo en magenta
  • pencolor((0.1,0,0.1)) met la couleur du stylo en magenta très foncé
  • speed("fastest") accélère le tracé
  • circle(r) trace un cercle de rayon r, où r doit être déclaré avant

2) Commencer par tester et comprendre les fonctions de ce code :

from turtle import *

def exemple():
    goto(-100,-100)
    clear()
    fillcolor("green")
    begin_fill()
    forward(200)
    left(120)
    pencolor((1,0.5,0))
    forward(400)
    end_fill()

def etoile():
    clear()
    for i in range(8):
        forward(200)
        right(135)

#exemple()
#etoile()

3) Ensuite, créer une fonction carre()

4) C’est parti pour les dés !

A FINIR POUR JEUDI PROCHAIN !

À 11h42, on avait déjà ça…

from turtle import *

def carre(x,y,cote):
    up()
    goto(x,y)
    down()
    for i in range(4):
        forward(cote)
        right(90)

def trace_de(chiffre) :
    carre(-150,150,300)
    if chiffre == 1 :
        carre(-30,30,60)

def test():
    trace_de(3)
    clear()
    trace_de(1)

test()

4 réflexions au sujet de « Quelques projets pour démarrer »

  1. Bonsoir monsieur,
    j’ai des difficultés pour refaire le programme réalisant les dés. J’aurais donc une question à vous posez: comment fait-on pour calculer l’emplacement exact ou se situera chacun des carrés du dé?

  2. Oups… Je n’avais pas remarquer avant que vous aviez rajouter la suite de la programmation sur mathonomie. Excusez moi donc pour le dérangement XD
    Bonne soirée à vous.

    • Bonjour !
      Désolé, j’étais « offline » !
      Mais c’est une bonne question, et je vais quand-même y répondre :
      \triangleright la première idée est de réaliser « des dés » de taille 300, fond blanc, tracé (ligne 12 ci-dessus) avec

      carre(-150,150,300)

      avec des carrés coloriés de taille 60 dedans, à 20 pixels des bords sauf pour celui central du « un », du « trois » et du « cinq », centré, donc le stylo doit être posé en (-30,30) et dessiner un carré de côté 60, d’où le (lignes 13 et 14 ci-dessus)

      if chiffre == 1 :
          carre(30,30,60)

      \triangleright Enfin, il est à noter deux évolutions depuis :
      \circ les carrés intérieurs doivent être coloriés,
      \circ on doit tracer ce carré

      if chiffre == 1 or chiffre == 3 or chiffre == 5 :

      ce qui s’écrit bien mieux ainsi

      if chiffre %2 == 1 :
          carre(30,30,60,"pink")

      pour du rose 😉
      Un corrigé intermédiaire est d’ores et déjà disponible chez les NSI, je le recopie ici au besoin :

      from turtle import *
      from time import sleep
      #speed("slowest")
      
      def carre(x,y,longueur,couleur) :
          up()
          goto(x,y)
          down()
          fillcolor(couleur)
          begin_fill()
          for truc in range(4) :
              forward(longueur)
              right(90)
          end_fill()
      
      def de(chiffre) :
          carre(-150,150,300,"white")
          if chiffre == 1 or chiffre == 3 or chiffre == 5 :
              carre(-30,30,60,"pink")
          if chiffre == 2 or chiffre == 3 :
              carre(-130,-70,60,"green")
              carre(70,130,60,"green")
      
      for chose in range(1,7):
          print(chose)
          de(chose)
          sleep(1)
          clear()

      Le corrigé complet est visible sur cette page.

      Bon courage !

N'hésitez-pas à poser une question, ou faire avancer le schmilblick

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.