2017-07-21 3 views
0

Tout d'abord, il y a juste du texte qui montre mon processus de réflexion sur la façon dont le code devrait fonctionner. Je suis super nouveau à la programmation en général et j'ai commencé à apprendre Java il y a seulement quelques jours. Je pense avoir une compréhension de base du fonctionnement de oop mais je ne peux pas l'intégrer dans mon code. L'utilisation des boucles tout en fait un peu de sens pour moi que donc je ne fais que commencer avec ceux, DComment est-ce que je peux employer pendant que les boucles dans un jeu basé sur le texte Java?

choses que je veux:

un menu principal avec 3 options

Menu (camp)

  1. quête (active la boucle de quête)

  2. Aller à la ville (active la boucle de ville)

  3. quit jeu (sort du programme)

Quête boucle de gameplay de lutte contre les monstres aléatoires et de gagner l'or/partition "monstre apparaît"

  1. combat monstre inflige des dégâts monstre monstre fait des dégâts retour retour à la boucle principale

  2. utilisation article choisissez l'élément utilisation article effets article appliqués retour à la boucle principale

  3. run retourner au menu principal (active le menu principal)

Ville vous permet de passer l'or sur « vitesse » pour augmenter les valeurs de santé et des dommages

« Je suis le forgeron bla bla bla »

  1. Arme de mise à niveau (augmente les dégâts)
  2. Armor Upgrade (augmente la santé)
  3. quitter la ville (retours joueur de retour au menu principal)

Le jeu se termine quand le joueur meurt ou choisit quitter jeu

Afficher un score et remercier le joueur pour le jeu

Ci-dessous est juste un prototype de la logique

Je me sens comme cela devrait fonctionner, mais chaque fois que je l'exécute, il ne fonctionne pas bien et finit par faire une boucle infinie . J'espère que l'un d'entre vous sera capable de voir pourquoi ça ne marche pas et de me diriger dans la direction . Tout serait grandement apprécié!

Aussi des commentaires sur ces booléens pour camp, donjon, ville? Je ne sais pas si j'ai vraiment besoin de ceux-ci et c'est probablement juste un peu plus de code inutile mais je ne suis pas vraiment sûr.

import java.util.Scanner; 


public class logic 
{ 
    public static void main(String[] args) 
    { 

    boolean running = true; 
    Scanner in = new Scanner(System.in); 
    System.out.println("This is a test"); 

    while(running) 
    { 
     boolean camp = true; 
     boolean dungeon = false; 
     boolean town = false; 
     String input = in.nextLine(); 
     while(camp) 
     { 
      System.out.println("what u do?"); 
      System.out.println("1. go dungeon"); 
      System.out.println("2. go town"); 
      System.out.println("3. quit"); 
      if (input.equals("1")) 
      { 
       dungeon = true; 
       while(dungeon) 
       { 
        System.out.println("you are in the dungeon"); 
        dungeon = false; 
        break; 

       } 



      } 
      else if (input.equals("2")) 
      { 
       dungeon = false; 
       town = true; 
       while(town) 
       { 
        System.out.println("you are in the town"); 
        town = false; 
        break; 

       } 


      } 
      else if (input.equals("3")) 
      { 
       break; 


      } 
      else 
      { 
       System.out.println("invalid command!"); 


      } 


     } 


    } 

    } 

} 
+0

Vous devez probablement affecter false au camp et courir quelque part. – JFPicard

+1

corrigez-moi si je me trompe mais je ne serais pas capable de le faire à l'intérieur du donjon ou de la ville car ils sont à l'intérieur du camp et en cours d'exécution –

+0

Vous voulez probablement faire quelque chose dans l'option 3 – JFPicard

Répondre

0

Personnellement, je ne voudrais pas utiliser tant en boucles et à la place dans sa propre fonction mettre la logique de chaque section puis utilisez un if-else-if/instruction switch pour décider quelle fonction doit être appelée et faire en une boucle while, malheureusement, je ne peux pas tester cela parce que je n'ai pas eu d'environnement Java et cela fait longtemps que j'ai utilisé Java.

+0

Très bien, ouais je vais certainement me pencher sur ça. Je suis d'accord que les boucles while sont bâclées. Comme je l'ai dit, faire des fonctions/objets et les appeler est toujours un peu bizarre pour moi et j'apprends toujours comment faire tout ça. –

+0

Oh oui, et j'utilise simplement l'invite de commande et notepad ++ pour tout. Si jamais vous avez le temps de tester ce code, c'est un moyen facile de le faire et je l'apprécierais vraiment :) –

+0

Donc, comprendre ce que vous avez suggéré n'était pas aussi dur que je le pensais ... et j'ai eu un travailler prototype vers le bas .... alors merci pour ça! : D –

0

Voici le nouveau code que j'ai conçu. J'ai été capable de comprendre comment briser tous les différents domaines dans leurs propres méthodes. Cela devrait faciliter grandement la construction du monde du jeu: D

import java.util.Scanner; 


public class LogicTest 
{ 
    Scanner in = new Scanner(System.in); 

    public static void main(String[] args) 
    { 
     LogicTest game; 
     game = new LogicTest(); // a new instance of the public class folder has to be created in order to use all the other methods 

     game.run(); 


    } 

    public void run() // this method is used to run the game from the main method 
     { 
      camp(); 
     } 

    public void quest() 
    { 
     System.out.println("you go on quest"); 
     camp(); 
    } 
    public void town() 
    { 
     System.out.println("you go to town"); 
     camp(); 
    } 
    public void camp() // this method acts as the game hub where the player can choose what they want to do next 
    { 
     System.out.println("you are in your camp"); 
     System.out.println("----------------------"); 
     System.out.println("what do you want to do?"); 
     System.out.println("1. go quest"); 
     System.out.println("2. go town"); 
     System.out.println("3. quit"); 


     String input = in.nextLine(); 
     // each one of these options just calls its respective method 
            // the methods are what have the menus and everything for each location 
     if (input.equals("1")) 
     { 
      quest(); 
     } 
     else if (input.equals("2")) 
     { 
      town(); 
     } 
     else if(input.equals("3")) // by leaving this empty the program has nothing else to read with this option and so it closes 
     { 

     } 
     else 
     { 
      camp(); 
     } 
    } 



}