2013-06-28 4 views
2

Я делаю шахматную игру C#, поэтому я могу немного попрактиковаться в кодировании с языком. Я использую окна, и я использую фрагменты, которые представляют собой значки 45x45 .png. Я сделал свой фотобарабан так, чтобы каждое место на доске составляло 50x50 пикселей, делая квадрат с размером изображения 400x400. Я хотел бы выяснить, как инициализировать плату, чтобы я мог перемещать фигуры с помощью 2D-массива типа Rectangle. Таким образом, каждое место на доске представляет собой прямоугольник размером 50x50. Мой код до сих пор, если я что-то важное не хватает, дайте мне знать:Создание шахматной доски с использованием изображения и прямоугольников, как инициализировать?

class Board//this class represents the board 
{ 
    private Rectangle[,] chessBoard = new Rectangle[8, 8]; //a 2d array of rectangles 


    public void initBoard()//this method will initialize the picturebox/board 
    { 
     for (int x = 0; x < 8; x++) 
     { 
      for (int y = 0; y < 8; y++) 
      { 
       chessBoard[x, y] = new Rectangle(x * 50, y * 50, 50, 50); 


      } 
     } 

    } 

} 
+0

... Хорошо, что ваша проблема? – Servy

+1

вы ищете подтверждение? Если это так, то есть какой-то превосходный код – Jonesopolis

+0

, переходящий к ответу за больший номер ... –

ответ

3

Я хотел бы предложить, что в то время как ваш метод, скорее всего, вы там, большинство шахматных игр не будет использовать отдельные PNGs для изображений, а у вас будет одно изображение с матрицей 2x6 и использование смещений в изображении для выбора правильной плитки. Вы можете сохранить плату как одномерный массив из 64 элементов. Его начальная схема по умолчанию может быть чем-то вроде ...

board = [00,01,02,03,04,02,01,00, 
     05,05,05,05,05,05,05,05, 
     -1,-1,-1,-1,-1,-1,-1,-1, 
     -1,-1,-1,-1,-1,-1,-1,-1, 
     -1,-1,-1,-1,-1,-1,-1,-1, 
     -1,-1,-1,-1,-1,-1,-1,-1, 
     15,15,15,15,15,15,15,15, 
     10,11,12,13,14,12,11,10] 

где -1 - пустой квадрат, а 00-15 - смещенные индексы на кусочки изображения. как в:

00 10 = wr br 
01 11 = wk bk 
02 12 = wb bb 
03 13 = wq bq 
04 14 = wK bK 
05 15 = wp bp 

, когда игрок делает шаг вы просто вызвать метод, чтобы определить, является ли этот шаг является законным, если это занимает место назначения? захватить! другой установить плату [назначение] = плата [изначальный], установить плату [origin] = -1.

, возможно, придется дважды проверить меня на позициях для K и Q, надеюсь, я готовлю смысл :)

+0

королева идет по цвету! – Jonesopolis

+1

также, это крутой подход – Jonesopolis

+1

Спасибо, обратите внимание, что вы поддерживаете состояние платы просто указав индекс в pieces.bmp. для каждого элемента в плате []. У меня есть такой образ где-нибудь, если вы хотите, чтобы я посмотрел. Кроме того, да, похоже, что Q и K находятся в этой матрице. Я проверил свою шахматную доску: P Также обратите внимание, что вы можете игнорировать ведущие 0 и использовать 1-5, просто убедитесь, что ваш прямоугольник заполняет начальный нуль для смещения. –

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