2014-01-16 6 views
0

ОК для моей программы Я пытаюсь получить ее так, чтобы, когда у меня есть клавиша, нажмите на мою программу и скажите, что я нажимаю L, и она перемещается в массив 4x4 2d, и я получаю яму, которую я обозначенный как P в массиве, я хочу, чтобы он знал, что он попал в P, и распечатайте, что у вас есть удар в яму, или если я дойду до того места, где у него есть G на массиве, я хочу, чтобы он распечатывался, вы нашли золото. Любая помощь приветствуется.Пытаюсь выписать программу

using System; 

namespace DragonCave 
{ 
    public struct DragonPlayer 
    { 
     public int X, Y; 
     public string CurrentMove; 
    } 

    public class DragonGameboard 
    { 
     public string[,] GameboardArray; 
     public DragonPlayer Player; 
     private Random r; 

     public DragonGameboard(){ 
      GameboardArray = new string[4,4]; 
      Player.CurrentMove = ""; 
      r = new Random(); 
      Player.X = r.Next(0, 4); 
     Player.Y = r.Next(0, 4); 
     GenerateRandomBoard(); 
    } 

    private void GenerateRandomBoard() 
    { 
     //Put a dot in every spot 
     int row; 
     int col; 
     for (row = 0; row < 4; row++) 
     { 
      for (col = 0; col < 4; col++) 
      { 
       Console.Write(GameboardArray[row, col] = "."); 
      } 
      //Console.WriteLine(); 
     } 

     //Randomly Places the entrance, dragon, pit and gold. 

     GameboardArray[r.Next(0,4), r.Next(0, 4)] = "E"; 
     GameboardArray[r.Next(0,4), r.Next(0,4)] = "D"; 
     GameboardArray[r.Next(0, 4), r.Next(0, 4)] = "P"; 
     GameboardArray[r.Next(0, 4), r.Next(0, 4)] = "P"; 
     GameboardArray[r.Next(0, 4), r.Next(0, 4)] = "P"; 
     GameboardArray[r.Next(0, 4), r.Next(0, 4)] = "G"; 
    } 

    public void PrintBoard() 
    { 
     int row; 
     int col; 
     for (row = 0; row < 4; row++) 
     { 
      for (col = 0; col < 4; col++) 
      { 
       Console.Write(GameboardArray[row, col] + "\t"); 
      } 
      Console.WriteLine(); 
     } 
     Console.WriteLine("Cheat you are in" + Player.X + "," + Player.Y); 

     //fill with room numbers 

    } 

    public void ProcessMove(string move) 
    { 
     switch (move) 
     { 
      case "F": 
       Console.WriteLine("You chose forward"); 
       break; 
      case "L": 
       Player.X--; 
       Player.Y--; 
       //Console.WriteLine("You chose Left"); 
       Console.WriteLine("A Breeze is in the air"); 
       break; 
      case "R": 
       Player.X++; 
       Player.Y++; 
       if (GameboardArray) 
       Console.WriteLine("You chose Right"); 
       break; 
      case "G": 
       Console.WriteLine("You chose Grab gold"); 
       break; 
      case "S": 
       Console.WriteLine("You chose Shoot arrow"); 
       break; 
      case "C": 
       Console.WriteLine("You chose Climb"); 
       break; 
      case "Q": 
       Console.WriteLine("You chose Quit"); 
       break; 
      case "X": 
       Console.WriteLine("You chose Cheat"); 
       PrintBoard(); 
       break; 
      default: 
       Console.WriteLine("Invalid move!!!!!!!!!!1"); 
       break; 
     } 
    } 
} 
+2

Было бы полезно, если кто-то попытается ответить на ваш вопрос, если вы объясните, что происходит, и почему это не то, что вы желаете. Четко сформулируйте свою цель и текущее поведение и задайте вопрос. Как только вы это сделаете, я уверен, что больше людей смогут вам помочь. –

ответ

0

Просто проверьте, какая строка находится в GameboardArray [player.x, player.y].

public void ProcessTileEvent() 
{ 
    if(Player.X >= 0 && Player.X < 4 && Player.Y >= 0 && Player.Y < 4 ) 
    { 
     switch(GameboardArray[Player.X, Player.Y]) 
     { 
      case "G": 
      Console.WriteLine("You found gold!"); 
      break; 
      case "P": 
      Console.WriteLine("You fell in a pit!"); 
      break; 
     } 
    } 
} 

Возможно, вы захотите сделать это каждый раз, когда игрок перемещается.

+0

Итак, скажем, я начинаю с 2,1 в массиве, и я хочу перейти к 2,2 в массиве, и я столкнулся с ямой, которую я обозначил как P, чтобы эта небольшая часть кода работала над программой? – user3196400

+0

Ну, нет, вы не могли просто скопировать и вставить его. Однако это именно то, что вам нужно будет сделать. У вас есть массив строк, справа, и игрок перемещается по этому массиву. Вы хотите проверить, что находится под игроком, поэтому имеет смысл, что строка, за которой вы находитесь, находится на позиции игрока. Если вы находитесь в 2,1 и вы двигаетесь до 2,2, ТОГДА вы проверяете, какая строка находится в 2,2 в массиве, вы сможете выполнить действие, основанное на том, что такое строка. – Ben

Смежные вопросы