Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 28.10.2018
Сообщений: 15
1
.NET 4.x

Вызов метода в другом классе

08.01.2020, 20:46. Показов 925. Ответов 1
Метки нет (Все метки)

У меня очень обширный вопрос.Если вкратце я пишу курсач шахматы.У меня есть 3 класса Moves.cs Chess.cs и FigureMoving.сs.Я пытаюсь реализовать
взятие на проходе пешки.Для этого мне где-то нужно хранить предыдущий ход(для этого я создаю в классе Chess свойство public FigureMoving PrevMove и метод public char CheckPrev() который использует это свойство и проверяет подходит ли мне предыдущий ход. Этот метод мне надо вызвать в классе Moves, но несмотря на то что все 3 класса находятся в одном пространстве имён.Как мне реализовать вывоз метода CheckPrev в классе Moves.cs без создания нового объекта и использовать нужное мне свойство с хранящимся в нём предыдущим ходом.
Это создание нового хода в цикле и присвоение его в предыдущий ход
FigureMoving fm = new FigureMoving(move);//генерация нового хода
PrevMove = fm;
Этот метод из класса Moves.cs
C#
1
2
3
4
5
6
7
8
9
10
11
public bool CanPawnAisleTake(int stepY)
        {
            Chess a = new Chess(board);
            if (a.CheckPrev(fm) == 'f')
                return false;
            else
            if (a.CheckPrev(fm) == 'r' && a.CheckPrev(fm) == 'l')
                return true;
            return false;
 
        }
Это отрывок из класса FigureMoving.cs
C#
1
2
3
4
 public Figures figure { get; private set; }
        public Square from { get; private set; }
        public Square to { get; private set; }
        public Figures promotion { get; private set; }
Это свойство которое я использовал для запоминания пред.хода и функция которая его использует
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
protected internal FigureMoving PrevMove;
        public char CheckPrev(FigureMoving fm)
        {
 
            if (fm.figure.GetColor() == Color.white)
                if (PrevMove.figure == Figures.blackPawn)
                    if (PrevMove.from.y == 6 && PrevMove.to.y == 4)
                        if (PrevMove.to.x == fm.from.x + 1)
                            return 'r';
                        else
                            if (PrevMove.to.x == fm.from.x - 1)
                            return 'l';
            if (fm.figure.GetColor() == Color.black)
                if (PrevMove.figure == Figures.whitePawn)
                    if (PrevMove.from.y == 1 && PrevMove.to.y == 3)
                        if (PrevMove.to.x == fm.from.x + 1)
                            return 'r';
                        else
                            if (PrevMove.to.x == fm.from.x - 1)
                            return 'l';
            return 'f';
 
 
        }
Не знаю хватит ли этой информации для решения моей проблемы я уверен,что тут какая-то проблема с модификаторами доступа.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2020, 20:46
Ответы с готовыми решениями:

Выполнение метода интерфейса в другом классе
Здравствуйте. У меня тут задача разобрать стародавний код и привести его в порядок. В частности...

Global Hook и вызов в другом классе
public class Nimaf { UserActivityHook actHook; void LOL1(object sender,...

Постоянный вызов метода основного класса в наследованном классе
Всем привет! Вопрос про наследование. Можно сделать так, чтобы при вызове в производном классе...

Как создать метод с использованием объекта другого метода, который определен в другом классе
В общем суть вот в чем: У меня есть 2 класса. 1 основный(Program) в нем в методе Main создается...

1
1552 / 937 / 500
Регистрация: 23.02.2019
Сообщений: 2,426
08.01.2020, 22:18 2
Лучший ответ Сообщение было отмечено TGI как решение

Решение

Если честно, то я мало что понял по коду, особенно непонятно что в чём находится и тп.
Но для вызова метода в другом классе знаю такие варианты:
- события (неплохой вариант)
- статические методы (не очень хороший вариант, так как большое кол-во таких методов, могут быстро запутать, ведь их могут вызывать все, кому не лень в любом месте программы. Главное всё использовать с умом).

Или поменять архитектуру кода, чтобы нужный метод был доступен всем, кому он необходим. Возможно есть смысл создать отдельный класс, который будет хранить все предыдущие ходы всех фигур.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2020, 22:18

Вызов метода базового класса игнорируя переопределенный метод в производном классе
Как вызвать метод базового класса игнорируя переопределенный метод в производном классе. PS...

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что...

Как использовать объект класса, созданого в определеном классе, в другом классе
У меня такой вопрос,как использовать объект класса,созданого в определеном классе,в другом классе.У...

Как использовать информацию парсированую в 1 классе в другом классе
имеются 2 класса , объясните плз в чём ошибка using System; using System.Collections.Generic;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.