Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 05.02.2013
Сообщений: 73

Два класса и данные через get/set

14.05.2018, 04:17. Показов 883. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два класса Config и Brick
При попытке передать данные из Config в Brick, они не передаются.
Использую get/set

Brick:
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
namespace WindowsFormsApplication341.Model
{
   
    class Brick : Game
    {
        public static int score { get; set; }
 
        public virtual bool IsBreakable { get; protected set; }
 
        public Brick()
        {
            IsBreakable = true;
        }
 
        public virtual void OnHit()
        {
            if (IsBreakable)
            {
                PanelInform.Score += score;
            }
        }
 
    }
}
Config:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
namespace WindowsFormsApplication341.Model
{
    class Config 
    {
 
 
        public static void Bricks()
        {
            //Normal Brick
            Brick.score = 50;
        }
    }
}
Если передавать без score,а напрямую значением,то всё нормально передает.В чем проблема?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2018, 04:17
Ответы с готовыми решениями:

Есть два класса. Как из одного класса перенести данные в другой класс?
Есть два класса : планета и диспетчер планет. Диспетчер имеет информацию о планетах: их названия, координаты (в двумерном пространстве) и...

Доступ через get/set к элементам массива внутри класса
Вот такой простой код, а как с помощью get/set обращаться к каждому элементу массива _b в отдельности? Не писать же, к примеру, 100 новых...

Виртуальные функции, как получить доступ к закрытой части класса.Через set-get?
Здравствуйте! Мне очень нужна ваша помощь. Есть вот такой код. Но мне нужно получить доступ к базовому классу var, он же приватный через...

5
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
14.05.2018, 10:54
Что значит "не передаётся"? Скомпилировал Ваши два класса, присваивание Brick.score = 50; происходит корректно.
0
0 / 0 / 1
Регистрация: 05.02.2013
Сообщений: 73
14.05.2018, 11:13  [ТС]
Ну учусь писать Арканоид.
При соприкосновении мяча с кирпичиком должно в label.text (он же score) добавлять +50 поинтов.
Но если писать через get/set поинты не добавляются,а если напрямую указать там 50,вместо переменной с конфига,то поинты прибавляются.Не могу понять в чем причина =\
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
14.05.2018, 11:21
Цитата Сообщение от Visualru Посмотреть сообщение
Но если писать через get/set поинты не добавляются,а если напрямую указать там 50,вместо переменной с конфига,то поинты прибавляются.Не могу понять в чем причина =\
Я ничего не понял Давайте Вы лучше выложите полный код, а иначе это пальцем в небо.
0
0 / 0 / 1
Регистрация: 05.02.2013
Сообщений: 73
14.05.2018, 11:29  [ТС]
Config.cs
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System.Drawing;
 
namespace WindowsFormsApplication341.Model
{
    static class Config 
    {
 
        public static void Game()
        {
 
        }
 
        public static void Bricks()
        {
            // Slow
            SlowBrick.score = 200;
            SlowBrick.speed = 1;
            SlowBrick.color = Brushes.Beige;
 
            // Speed
            SpeedBrick.score = 200;
            SpeedBrick.speed = 1;
            SpeedBrick.color = Brushes.Aquamarine;
 
            //GoldBrick
            GoldBrick.color = Brushes.Gray;
 
            //PaddleUp
            PaddleUpBrick.score = 150;
            PaddleUpBrick.bonus = 5;
            PaddleUpBrick.maxBonus = 170;
            PaddleUpBrick.color = Brushes.Green;
 
            //PaddleDown 
            PaddleDownBrick.score = 300;
            PaddleDownBrick.normal = 80;
            PaddleDownBrick.color = Brushes.Honeydew;
 
            //Normal
            Brick.score = 50;
            Brick.color = Brushes.HotPink;
        }
    }
}


Brick.cs
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System.Drawing;
 
namespace WindowsFormsApplication341.Model
{
    /// <summary>
    /// Блок
    /// </summary>
    class Brick : Game
    {
        public Rectangle Bounds { get; set; }
        public Paddle Paddle { get; set; }
        public static int score { get; set; }
        public static Brush color { get; set; }
        /// <summary>
        /// Разрушаемый блок?
        /// </summary>
        public virtual bool IsBreakable { get; protected set; }
 
        public Brick()
        {
            IsBreakable = true;
        }
 
        public virtual void Draw(Graphics g, Rectangle rect)
        {
            g.FillRectangle(Brushes.Red, rect);
            g.DrawRectangle(Pens.Black, rect);
            
        }
 
        /// <summary>
        /// Удар мячом
        /// </summary>
        /// 
        public virtual void OnHit(int x, int y, Game game)
        {
            if (IsBreakable)
            {
                game.Level[x, y] = null;//удаляем блок
                MainForm.Score += score;
            }
        }
 
    }
}


mainForm.cs

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System.ComponentModel;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using System.Linq;
using System.Drawing;
using WindowsFormsApplication341.Model;
 
namespace WindowsFormsApplication341
{
    public partial class MainForm : Form
    {
        private Game game;
        public static int Score { get; set; }
        public static int Deb { get; set; }
        public MainForm()
        {
            InitializeComponent();
 
            game = new Game();
            game.Bounds = pnGame.ClientRectangle;
            game.InitLevel();
            pnGame.Game = game;
           
            var tm = new Timer{Enabled = true, Interval = 5};
            tm.Tick += delegate
            {
                var dt = 0.1f;
                game.Update(dt);
                pnGame.Invalidate();
                label1.Text = "Score: " + Score;
                label2.Text = "Debug: " + Deb;
                if (game.IsGameOver())//мяч потерян
                {
                    tm.Stop();
                    MessageBox.Show("Game over!");
                    Score = 0;
                    game.InitLevel();//начало новой игры
                    tm.Start();
                }
 
                if (game.IsLevelCompleted())//уровень пройден?
                {
                    tm.Stop();
                    game.NextLevelNumber++;//след уровень
                    game.InitLevel();
                    tm.Start();
                }
            };
 
        }
    }
}
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
14.05.2018, 12:46
Как я понимаю, строка PanelInform.Score += score; в методе OnHit() отрабатывает так как нужно. Подозреваю, в методе Bricks(), Вам нужно как то вызвать OnHit(). Как вариант, можно сделать этот метод статичным:
C#
1
2
3
4
5
6
public static void Bricks()
{
    //Normal Brick
    Brick.score = 50;
    Brick.OnHit();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.05.2018, 12:46
Помогаю со студенческими работами здесь

Разнести данные и методы в два разных класса
Товарищи скорректируйте в какую сторону двигаться. Есть задача создать библиотеку из двух классов. Один содержит поля с характеристиками...

Вызов функции через два класса
Можно ли, вызывать функцию, через два класса?) Первый класс, как прослойка для других, классов в которых уже будут функции. ...

как тут эту программу через два класса сделать ?
как тут эту программу через два класса сделать ? #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;conio.h&gt; using...

Как в коде таймера поставить через запятую два класса
Всем привет, я в скриптах &quot;темный лес&quot; столкнулся с такой проблемой, ставлю таймер и там два таймера с разным классом вот код ...

Вбить в переменную данные за пределом класса и достать эти данные внутри класса
$bd =1; class cl { public function __construct() { print_r($bd); } } Как сделать так чтобы вбить в переменную...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru