2017-01-26 1 views
-4

Je suis un étudiant débutant CS et aimerais de l'aide pour vérifier le pseudo-code VRAIMENT SIMPLY.Ecrire pseudo-code pour l'affectation et que vous voulez vérifier si cela a du sens

est le problème:

Ecrire un algorithme pour jouer une version robotique du jeu « chasse au trésor ». Le jeu implique des robots recevant des indices qui les guident vers d'autres indices jusqu'à ce qu'ils atteignent finalement un «trésor».

Les indices sont représentés par des couleurs de tuiles et chaque indice nécessite simplement que le robot déplace une tuile dans une direction (gauche, droite, vers l'avant). Après avoir fait un mouvement, le robot examine de nouveau la couleur de la tuile, il se tient à trouver le prochain mouvement, etc.

Les règles pour les couleurs des carreaux sont:

  • carrelage blanc = suivant indice est la tuile directement en face du robot
  • carreaux bleu = prochain indice est la tuile à gauche du robot
  • tuile verte = indice suivant est la tuile à la droite du robot
  • tuile noire = robot se déplace en arrière DEUX tuiles ré-examine ensuite les indices en fonction de sa nouvelle position
  • carreaux jaune = trésor et jeu est plus

Les règles de l'algorithme:

  • Le robot ne peut aller de l'avant, tourner à gauche ou à droite
  • Le robot est capable de lire la la couleur de la tuile, il est debout sur

Voici mon pseudo-code:

 //assign movements and actions to variables 

    whiteTile = step forward one space 
    blueTile = turn left and step forward one space 
    greenTile = turn right and step forward one space 
    blackTile = step backwards two spaces without changing directions 
    yellowTile = treasure found and game over 
    tileColor = check color of tile 

    //initiate while loop to run continously until robot reaches yellow tile 

    While tile under feet does not equal yellowTile 
    // initiates the movements of the robot to start if loop 
     Check color of tile 
    // this if loop should run continously as long as tileColor isn’t yellow 
     if tile color does not equal yellowTile 
      output(tileColor) 
      check color of tile 


    // once robot is on top of yellow tile, it exits the while loop and game is over 
    output “Game over, you win!” 

Répondre

0

Je sais que c'est quelques semaines mais j'ai trouvé cela maintenant car je suis nouveau ici aussi. Je ne suis pas sûr de savoir pourquoi vous déclarez ces variables de cette manière. Je comprends que c'étaient les conditions/règles données mais elles devraient être traduites en évaluations et actions réelles. Donc, dans une nouvelle fonction, output() puisque c'est ce que vous utilisez dans la boucle WHILE, vous devriez avoir des instructions IF prenant tileColor et exécutant les mouvements en conséquence.

BEGIN output 
    IF tileColor = white THEN 
     CALL moveForward 
    ELSE IF tileColor = blue THEN 
     CALL moveLeft 
    .. 
    . 
    . 

En supposant qu'il existe une autre fonction pour les mouvements.

Et en regardant la boucle WHILE, le FI n'est-il pas redondant? La boucle while vérifie déjà la même condition de la tileColor non jaune. Et la tileColor n'a pas été vérifiée avant d'entrer dans la boucle WHILE. Cela suppose que vous auriez différentes fonctions où la sortie prendrait tileColor et se déplacerait en conséquence. Et aussi checkTileColor étant une autre fonction qui vérifie les couleurs réelles des tuiles et renvoie une valeur (couleur).Je ne suis pas un expert en tant qu'étudiant aussi, mais j'ai regardé autour et c'est quelque chose que je pensais pouvoir réellement répondre.