Faire un mouvement de joueur sur le tableau 2D grille de jeu
Je suis entrain de créer un jeu à l'aide d'un 10x10 tableau 2D. Le joueur commence en haut à gauche la mention "P" et l'objectif est d'amener le joueur à éviter les obstacles pour obtenir le trésor a indiqué que "T" situé dans le coin inférieur droit.
Comment aurais-je aller sur le faire le joueur à se déplacer sur la grille à l'aide des commandes Haut/Bas/Gauche/Droite?
Aurais-je utiliser une boucle for pour compte les éléments dans le tableau pour désigner le déplacer?
Voici ce que j'ai à ce jour:
import java.util.Scanner;
import java.util.Random;
public class Adventure {
public static void main(String[] args) {
char grid[][]= new char[10][10];
Scanner move = new Scanner(System.in);
System.out.println("Here is the current game board:");
System.out.println("-------------------------------");
for(int i=0; i<grid.length; i++) {
for(int j=0; j<grid.length; j++) {
double random = Math.random();
if(random <=.05) {
grid[i][j]='*';
}
else if(random > .06 && random <= .15) {
grid[i][j]='X';
}
else {
grid[i][j]='.';
}
grid[0][0]='P';
grid[9][9]='T';
System.out.print(grid[i][j]);
}
System.out.println("");
}
System.out.print("Enter your move (U/D/L/R)>");
}
}
OriginalL'auteur Kevin Sanchez | 2012-02-08
Vous devez vous connecter pour publier un commentaire.
vous devez garder une trace de la position actuelle du joueur et de simplement mettre à jour ces variables.
valeurs initiales (0,0) comme vous l'avez dit.
quand un coup est fait, mettez à jour les variables en conséquence:
bien sûr, vous ne devriez pas simplement à jour les valeurs "à l'aveuglette", vous devez insérer une logique de validation à suivre les règles du jeu:
OriginalL'auteur yurib
Dirait que vous êtes à l'aide de la ligne majeure de la commande, à en juger par la façon dont votre conseil imprime. Sur cette base, voici ce que vous devez faire:
row -= 1
. Droite signifiecolumn += 1
. Etc.C'est le sens de base. Droit maintenant, vous êtes à tout faire en
main()
, et c'est bien, mais si c'était moi, je voudrais commencer à diviser les choses en plusieurs méthodes, comme laInitializeBoard()
,GetNextMove()
,CheckIfMoveIsValid(int r, int c)
, et ainsi de suite. De cette façon,main()
devient une vue de haut niveau de votre boucle de jeu, et le courage de les différentes opérations sont compartimentées et plus facile à traiter. Cela nécessitera de stocker des choses comme votre plateau de jeu dans la classe des variables plutôt que des variables locales, qui devrait en fait faire des choses comme la détection d'un obstacle plus facile qu'il serait actuellement.OriginalL'auteur David Merriman
Toutes les réponses ci-dessus sont grands. Ici sont quelques suggestions que je voudrais faire:
Au lieu d'un char tableau à deux dimensions, je voudrais faire un objet personnalisé, comme Espace, et de définir un tableau à deux dimensions d'Espace (par exemple, de l'Espace[][]). Il y a quelques raisons à cela:
Plus à votre question de mouvement, je recommande également d'un certain nombre de choses. Semblable à redneckjedi la suggestion d'un CheckIfMoveIsValid() la méthode, je voudrais passer la grille et le sens du mouvement que les paramètres et retourner un booléen. Pour vous assurer de ne pas se retrouver avec une erreur arrayindexoutofbounds questions, je vous suggère aussi d'ajouter une ligne/colonne de murs de chaque côté. Je voudrais élargir la grille à la sortie de 12x12 et mettre une bande d'obstacle de type blocs autour de l'extérieur. Cela permettra d'assurer que vous ne pouvez pas marcher à l'extérieur de la grille comme frapper un mur retournera toujours "faux" sur un.
OriginalL'auteur ggrigery