Курсы по программированию

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Нано-игры / Арканоид - Уровень и ракетка

  • Создаём старую добрую игру Арканоид.
    Создаём меню, рисуем уровень, размещаем ракетку.
    Делаем, чтобы ракетка двигалась.
  • Дата отправки отчёта: 7 апреля 2017 г.
  • Задание выполнено: за 1 час. 20 мин.
  • Чему научился: Увидел, как в реальной программе вызываются функции и передаются параметры. Ну и вообще перенос того, что было в консоли в оконное приложение.
  • Что было сложным: Пока ничего
  • Комментарии: Не понимаю, почему если изменить вот эту часть кода:
    private void shift_racket (int sx)
            {
                int ax1 = racket_x + sx;
                int ax2 = ax1 + racket.Width;
                if (side_lx > ax1) ax1 = side_lx;
                if (side_rx < ax2) ax1 = side_rx - racket.Width;
                racket_x = ax1;
                racket.Location = new Point(racket_x, racket_y);
            }
    Вот так:
    private void shift_racket (int sx)
            {
                int ax1 = racket_x + sx;
                int ax2 = ax1 + racket.Width;
                if (side_lx > ax1) ax1 = side_lx;
                if (side_rx < ax2) ax1 = side_rx - racket.Width;
                racket.Location = new Point(ax1, racket_y);
            }

    То программа работает не правильно. Если мы последним действием внутри функции просто передаем значение уже существующей переменной, то почему нельзя просто использовать эту переменную. Не понимаю. Но, иначе не работает)
    Спасибо за урок!
  • Оценка видео-уроку:
Отчёт от 12841 за Нано-игры / Арканоид - Уровень и ракетка




Оцени работу

 
Сохранить страницу:

10558. --
Иван Воронин
Иван Воронин
ответить
→  Артем Посунько  # Наноигры / Арканоид - Уровень и ракетка / 2017-04-07 05:55

А что тут не ясного? ax1 это временная переменная, которая определена в пределах данной функции и перестаёт существовать после завершения её работы, а та, куда передаётся информация определена ранее глобально и продолжает существовать после завершения функции. Следовательно значение которое в ней остаётся, оно никуда не теряется и с ним взаимодействуют дальше другие функции. Это как автомобиль и зажигалка:
Автомобиль это глобальная переменная, а зажигалка это внутренняя. Автомобиль можно заправить и он останется заправленным сидишь ты в нём или покинул его. А зажигалку можно либо оставить в бардачке и тогда любой другой, кто сядет в автомобиль сможешь ею воспользоваться, либо забрать её с собой и тогда тот, кому она понадобится, не сможет её найти.


12841. --
Артем Посунько
Артем Посунько
ответить
→  Иван Воронин  # Наноигры / Арканоид - Уровень и ракетка / 2017-04-07 10:21

Теперь понял, спасибо.



Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Обрабатывать нажатия клавиш клавиатуры. Смешать ракетку к краю, игнорируя размер шага.
Все нравится


Научился: Был полезным момент с граничным перемещением ракетки
Трудности: По данному материалу сложностей не возникло
По данному материалу вопросов нет