Шахматная доска не отображается должным образом [закрыто]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Шахматная доска не отображается должным образом [закрыто]

Сообщение Anonymous »

Сейчас я просматриваю обучающее видео на YouTube, которое поможет научиться играть в шахматы. К сожалению, в предоставленном ими коде есть проблемы.
В основном основная шахматная доска отображает фигуры неправильно. Он отображает только ладью на всей доске.
// код вывода тоже не работает!
Ниже приведен код для доски и фигур. :

Код: Выделить всё

namespace ChessLogic
{
public class Board
{
private readonly Piece[,] pieces = new Piece[8, 8];
public Piece this[int row, int col]
{
get { return pieces[row, col]; }
set { pieces[row, col] = value; }
}

public Piece this[Position pos]
{
get { return this[pos.Row, pos.Column]; }
set { this[pos.Row, pos.Column] = value; }
}

public static Board Initial()
{
Board board = new Board();
board.AddStartPieces();
return board;
}

private void AddStartPieces()
{
this[0, 0] = new Rook(Player.Black);
this[0, 1] = new Knight(Player.Black);
this[0, 2] = new Bishop(Player.Black);
this[0, 3] = new Queen(Player.Black);
this[0, 4] = new King(Player.Black);
this[0, 5] = new Bishop(Player.Black);
this[0, 6] = new Knight(Player.Black);
this[0, 7] = new Rook(Player.Black);

this[7, 0] = new Rook(Player.White);
this[7, 1] = new Knight(Player.White);
this[7, 2] = new Bishop(Player.White);
this[7, 3] = new Queen(Player.White);
this[7, 4] = new King(Player.White);
this[7, 5] = new Bishop(Player.White);
this[7, 6] = new Knight(Player.White);
this[7, 7] = new Rook(Player.White);

for (int c = 0; c < 8; c++)
{
this[1, c] = new Pawn(Player.Black);
this[6, c] = new Pawn(Player.White);
}
}

public static bool IsInside(Position pos)
{
return pos.Row >= 0 && pos.Row < 8 && pos.Column >= 0 && pos.Column < 8;
}

public bool IsEmpty(Position pos)
{
return this[pos] == null;
}
}
}

Код: Выделить всё

using ChessLogic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace ChessUI
{
/// 
// Interaction logic for MainWindow.xaml
/// 
public partial class MainWindow : Window
{
private readonly Image[,] pieceImages = new Image[8, 8];

private GameState gameState;

// public object PieceGrid { get; private set; }
// public Stretch Stretch { get; private set; }

public MainWindow()
{
InitializeComponent();
InitializeBoard();

gameState = new GameState(Player.White, Board.Initial());
DrawBoard(gameState.Board);
}

private void InitializeBoard()
{
for (int r = 0; r < 8; r++)
{
for (int c = 0; c < 8; c++)
{
Image image = new Image();
pieceImages[r, c] = image;

// Grid BoardGrid = new Grid();

Grid.SetRow(image, r);
Grid.SetColumn(image, c);

BoardGrid.Children.Add(image);
}
}
}

private void DrawBoard(Board board)
{
for (int r = 0; r < 8; r++)
{
for (int c = 0; c < 8; c++)
{
Piece piece = board[r, c];
if (piece != null)
{
pieceImages[r, c].Source = Images.GetImage(piece);
}
else
{
pieceImages[r, c].Source = null;
}
}
}
}
}
}
Надеюсь, это поможет, если вы больше от проекта, дайте мне знать.


Подробнее здесь: https://stackoverflow.com/questions/793 ... g-properly
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»