Programme pour apprendre des verbes irréguliers

Résolu/Fermé
coderenjava Messages postés 4 Date d'inscription samedi 14 février 2015 Statut Membre Dernière intervention 15 février 2015 - Modifié par coderenjava le 14/02/2015 à 22:23
coderenjava Messages postés 4 Date d'inscription samedi 14 février 2015 Statut Membre Dernière intervention 15 février 2015 - 15 févr. 2015 à 01:07
Bonjour, bonsoir

Je cherche à faire dans l'urgence un programme qui permettrait de demander à un utilisateur la traduction de verbes irréguliers. Je suis actuellement débutant dans la programmation et je ne sais pas comment m'y prendre.

Ce que le programme doit comporter :

- une demande aléatoire de verbes à traduire
- une indication si la réponse est correcte ou non
- un message d'erreur si la réponse n'est pas appropriée
- un compteur de bonnes/mauvaises réponses

Voilà par quoi j'ai commencé :

-------------------------------------------------------------------------------
<script>

alert("Donner la traduction en français de ce verbe irrégulier");
alert ("Base verbale ; Prétérit ; Participe passé");

function aleatoire(size) {
var liste = ["abide abode abode : "," ",];
var result = '';
for (i = 0; i < size; i++) {
result += liste[Math.floor(Math.random() * liste.length)];
}
alert(result);
}
aleatoire(1);

</script>
--------------------------------------------------------------------------------
Les verbes sélectionnés sont les suivants :

abide abode abode :
respecter / se conformer à

arise arose arisen :
survenir

awake awoke awoken :
se réveiller

be was/were been :
être

bear bore borne/born :
porter / supporter / naître

beat beat beaten :
battre

become became become :
devenir

beget begat/begot begotten :
engendrer

begin beganb begun :
commencer

bend bent bent :
plier / se courber

bereave bereft/bereaved bereft/bereaved :
déposséder / priver

bet bet bet :
parier

bid bid/bade bid/bidden :
offrir

bleed bled bled :
saigner

blow blew blown :
souffler / gonfler

break broke broken :
casser

breed bred bred :
élever (des animaux)

bring brought brought :
apporter

broadcast broadcast broadcast :
diffuser / émettre

build built built :
construire
------------------------------------------------------------------------------------
Question supplémentaire : comment faire pour que mon programme affiche mes "alert" sur le même bloc sans appuyer sur entrée pour faire défiler les informations ?

Je vous remercie par avance de votre aide et attends vos réponses avec impatience !

PS : J'utilise le logiciel Notepad++

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
Modifié par gravgun le 14/02/2015 à 22:55
'lut, au passage j'ai déplacé dans Programmation (tout court) car tu parles de JavaScript, qui n'a strictement rien à voir avec Java hormis le nom similaire.

Pour afficher tout d'un coup dans un alert, tu peux utiliser un retour à la ligne
\n
:
alert("Donner la traduction en français de ce verbe irrégulier\n" +
      "Base verbale ; Prétérit ; Participe passé"); 


Pour le format de ta liste, je te conseille de le faire en tableau d'objets:
var liste = [
    {fr: "respecter / se conformer à", en: "abide abode abode"},
    {fr: "survenir", en: "arise arose arisen"},
    <...>
];


Tu choisis un index au hasard dans la liste:
var idx = Math.floor(Math.random() * liste.length);

En extrait l'objet faisant le lien entre anglais et français:
var trad = liste[idx];

À partir de là tu peux demander la traduction:
var reponse = prompt("Donner la traduction en Anglais de ce verbe irrégulier:\n" + trad.fr,
    "<Base verbale> <Prétérit> <Participe passé>");


Tu vérifies l'identité de la réponse donnée avec la vraie réponse:
if (reponse === trad.en) {

Puis dit si on a eu juste:
    alert("Correct");
} else {
    alert("Faux, la traduction était " + trad.en);
}


Bon c'est très vague, j'ai fait ça rapidement. Aussi, les alert et prompt c'est extrêmement pas pratique mais ça marche. Gros hic aussi: il faut donner à l'espace près la même traduction qu'il y a dans ton programme, sinon il affichera qu'on a eu faux.
Mais dans le principe, ça marche.
from human import idiocy
del idiocy
-1
coderenjava Messages postés 4 Date d'inscription samedi 14 février 2015 Statut Membre Dernière intervention 15 février 2015
14 févr. 2015 à 23:29
Merci beaucoup pour toutes ces informations ! J'essaie cela de suite.
0
coderenjava Messages postés 4 Date d'inscription samedi 14 février 2015 Statut Membre Dernière intervention 15 février 2015
15 févr. 2015 à 00:18
Génial, ça marche nickel, merci encore ! Saurais-tu comment faire pour attribuer une note finale à l'utilisateur stp ? Je ne sais pas comment comptabiliser le nombre de "correct".

Voilà ce que donne le programme pour le moment :

<script>

var liste = [
{fr: "respecter / se conformer à", en: "abide abode abode"},
{fr: "survenir", en: "arise arose arisen"},
{fr: "se réveiller", en: "awake awoke awoken"},
{fr: "être", en: "be was been"},
{fr: "porter / supporter / naître", en: "bear bore born"},
{fr: "battre", en: "beat beat beaten"},
{fr: "devenir", en: "become became become"},
{fr: "engendrer", en: "beget begot begotten"},
{fr: "commencer", en: "begin began begun"},
{fr: "plier / se courber", en: "bend bent bent"},
{fr: "déposséder / priver", en: "bereave bereft bereft"},
{fr: "parier", en: "bet bet bet"},
{fr: "offrir", en: "bid bid bid"},
{fr: "saigner", en: "bleed bled bled"},
{fr: "souffler / gonfler", en: "blow blew blown"},
{fr: "casser", en: "break broke broken"},
{fr: "élever (des animaux)", en: "breed bred bred"},
{fr: "apporter", en: "bring brought brought"},
{fr: "diffuser / émettre", en: "broadcast broadcast broadcast"},
{fr: "construire", en: "build built built"},
];

for (i = 0; i < 21; i++) {

function aleatoire(size) {
var idx = Math.floor(Math.random() * liste.length);
var trad = liste[idx];
var reponse = prompt("Donner la base verbale, le prétérit puis le participe passé en anglais du verbe irrégulier \n" + trad.fr,
"");

if (reponse === trad.en) {
alert("Correct");
} else {
alert("La réponse attendue était : " + trad.en);
}
}
aleatoire();
}

</script>
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225 > coderenjava Messages postés 4 Date d'inscription samedi 14 février 2015 Statut Membre Dernière intervention 15 février 2015
15 févr. 2015 à 00:23
Rajoutes une variable (
nbJuste
par exemple) avant ta boucle
for
, affectes-lui la valeur 0, puis avant l'affichage de "Correct", incrémentes-le avec
nbJuste++;
.
Pour finir, affiche le score après toute ta boucle
for
grâce à alert:
alert("Score: " + nbJuste + "/21");
0
coderenjava Messages postés 4 Date d'inscription samedi 14 février 2015 Statut Membre Dernière intervention 15 février 2015 > ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021
15 févr. 2015 à 01:07
Génial merci encore!
0