2017-02-20 1 views
0

Pour l'école, je dois créer un jeu qui existe déjà. c'est le lien vers le jeu: Game linkne trouve pas de solution pour mon jeu Java

une brève explication: chaque niveau que vous recevez (sur le côté droit de l'écran) un ensemble de flèches que vous pouvez placer sur l'écran et lorsque vous appuyez sur le « Go » bouton la vache commence à bouger. Quand il se déplace sur une flèche, il va changer de direction dans la direction de cette flèche. Il faut donc guider la vache avec la flèche jusqu'à sa destination finale (un trophée) sans toucher à aucun obstacle (comme un mur ou un arbre ...).

Nous DEVONS implémenter le modèle de conception Model-View-Presenter. J'ai donc commencé avec mon modèle parce que c'est ma logique de jeu.

mon problème: tous les niveaux doit être lu avec un simple fichier txt ici sous un exemple de mon niveau 1:

26,6 
xxxxxxxxxxxxxxxxxxxxxxxxxx 
xGRGGBGxGGRGGGGGGGGGGBGGTx 
xGGGGRGGGGFGxGGGGGGGGGGGGx 
xGFGGLGGGGGGGLGGGGGGGGGGGG 
xGGGGSGGGxGGGGGGxGGGGGGGGx 
xxxxxxxxxxxxxxxxxxxxxxxxxx 

x=obstacle 
G=grass 
T=trophy 
S= Start position of the cow 
L= Fixed left arrow 
R= Fixed right arrow 
F= fixed front arrow 
B= fixed back arrow 

i lire le fichier et un cas lieu de déclaration chaque caractère dans une ligne (chaque caractère représente un objet) dans un tableau 2D.

Mon problème est: que vous avez 2 jeux de flèches: une FixedArrow (Il est déjà sur le terrain et vous ne pouvez pas changer sa position) et un VariableArrow (les flèches sur le côté droit de l'écran où l'utilisateur peut les placer sur le terrain, si le champ est libre ou avec d'autres mots si c'est sur un objet Grass mais comment puis-je faire cela? Comment puis-je créer un écran séparé où je peux mettre des flèches que l'utilisateur peut je sais que mon explication est vague donc j'espère que vous les gars ouvrir le lien que j'ai posté ci-dessus et jouer 1 niveau afin que vous compreniez mieux ce que je veux dire

Je posterai une partie de mon code et de mon diagramme de classe ici. path = est le chemin vers le fichier .txt que j'ai expliqué ci-dessus.

My Class Diagramm

public class Board { 
private Tile[][] tiles; 

    public Board(Path path) { 

     try { 

      int yRow = 0; 
      Scanner scanner = new Scanner(path); 
      String[] split = scanner.nextLine().split(","); 
      tiles = new Tile[Integer.parseInt(split[1])][Integer.parseInt(split[0])]; 
      while (scanner.hasNext()) { 
       String line = scanner.nextLine(); 

       for (int xRow = 0; xRow < line.length(); xRow++) { 
        char character = line.charAt(xRow); 
        switch (character) { 
         case 'x': 
          tiles[yRow][xRow] = new Tile(new Obstacle()); 
          break; 
         case 'G': 
          tiles[yRow][xRow] = new Tile(new Grass()); 
          break; 
         case 'S': 
          tiles[yRow][xRow] = new Tile(new Grass()); 
          //cow.setStartPosition(xRow,yRow); 
          break; 
         case 'L': 
          tiles[yRow][xRow] = new Tile(new FixedArrow(Direction.LEFT)); 
          break; 
         case 'R': 
          tiles[yRow][xRow] = new Tile(new FixedArrow(Direction.RIGHT)); 
          break; 
         case 'F': 
          tiles[yRow][xRow] = new Tile(new FixedArrow(Direction.FRONT)); 
          break; 
         case 'B': 
          tiles[yRow][xRow] = new Tile(new FixedArrow(Direction.BACK)); 
          break; 
         case 'T': 
          tiles[yRow][xRow] = new Tile(new Trophy()); 
          break; 
         //How should i read a set of arrows in without placing them in the game field but on the right side of the screen 
        } 


       } 

       ++yRow; 
      } 

     } catch (IOException e) { 
      e.getMessage(); 
     } 
    } 

} 
+0

Il est une vaste question, semble comme un ensemble du projet, et la réponse sera énorme aussi, s'il vous plaît envisager de le rendre spécifique. –

+0

donc si je le rends spécifique: 1) comment est-ce que je reflète un panneau de grille sur un tableau 2Dimensionnel ==> de sorte que 1élément du tableau 2D soit le même que 1 carré d'une grille? 2) est-il possible de créer 2 volets différents sur une grille? par exemple pour séparer 1 volet de la grille dans un volet à gauche et un volet à droite. Le volet gauche représente tous les éléments du tableau 2D et du volet droit où je peux placer d'autres objets que l'utilisateur peut faire glisser et déposer sur le côté gauche. –

+0

1 -> Même si c'est possible, vous pouvez définir des nœuds de tableau 2d (tiles) sur la grille mais chaque tile doit être une sous-classe de Node (comme Label, ImageView, Button, etc.). 2 -> (2 volets sur la grille)? utilisez simplement un BorderPane en tant que parent et définissez Gridpane dans le côté gauche et un autre dans le côté droit du volet. 3) -> Vous devez faire beaucoup de travail et de recherche pour glisser et déposer des carreaux. –

Répondre

0

Il vous suffit de définir les flèches variables avec un scanner d'entrée ou autre chose. Les flèches de variable doivent être dans le tableau à deux dimensions. Vous devez comparer vos coordonnées de flèche variable de votre entrée avec le signe à ces points dans le tableau et vérifier si vous pouvez y mettre une nouvelle flèche ou si elle n'est pas autorisée. Si c'est autorisé alors remplacez ce signe avec votre nouvelle flèche ou vous réutilisez vos flèches fixes.

J'espère avoir bien compris votre question et cela aide :)

+0

salut, merci pour la réponse. Le problème est. J'ai 2 ensembles de flèches: Le fixedArrow, qui est mis sur le terrain lorsque le niveau est chargé et l'utilisateur ne peut pas le changer. Et le VariableArrow que l'utilisateur peut mettre sur le terrain. Je dois travailler avec Gridpane pour créer la mise en page. Si je lis les flèches de variables de mon fichier .txt, comment puis-je les définir sur le côté droit de l'écran. –