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.
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();
}
}
}
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. –
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. –
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. –