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

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

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

Демо игры / Лабиринт 2D - игра

  • На этом уроке мы создадим два уровня игры и запрограммируем их.
    В игре будут предметы для собирания, ключи, двери, мигающие стены.

    Задание:
    Создать два или три уровня для игры Лабиринт.
  • Дата отправки отчёта: 21 июня 2019 г.
  • Задание выполнено: за 1 час. 13 мин.
  • Чему научился: Несколько часов потратил, однако почему то таймер сбросился.
  • Что было сложным: Сделать так, чтобы созданный мной уровень работал.
    Совместил в нем, сбор монеток, перемещающуюся стенку и
    добавил телепорт (чтобы добраться до ключа. Все работает,
    однако попал в ступор и просидел несколько часов в попытке
    понять почему при старте 3 уровня мой курсор не хочет появляться
    на кнопке страт... в общем отложил решение до того момента,
    когда опыта будет больше и смогу сразу увидеть свою ошибку.
  • Оценка видео-уроку:
Отчёт от 21721 за Демо игры / Лабиринт 2D - игра


Отчёт от 21721 за Демо игры / Лабиринт 2D - игра




Оцени работу

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

2146. --
Иван
Иван
ответить
→  Евгений  # Демо игры / Лабиринт 2D - игра / 2019-06-21 15:25

Привет. Может потому что функция start_game() не вызывается после InitializeComponent() в  первой функции?


21721. --
Евгений
Евгений
ответить
# Демо игры / Лабиринт 2D - игра / 2019-06-22 23:23

namespace Labirint2D
{
    public partial class FormLevel3 : Form
    {
        public FormLevel3()
        {
            InitializeComponent();
            start_game();
        }

        int box_left = 9;// количество монеток при старте

        private void start_game()
        {
            Point point = label_start.Location;
            point.Offset(label_start.Width / 2, label_start.Height / 2);//появление курсора по центру label_start
            Cursor.Position = PointToScreen(point);
            Sound.play_start(); //вызов функции проигрывания музыки
            label_door.Visible = true; // устанавливаем дверь
            label_key.Visible = true; // устанавливаем ключ
            label_flash3.Visible = true;
            label_flash4.Visible = false;
            box_left = 4; // количество монеток при старте
            //делаем 4 монеток видимыми
            label_box1.Visible = true;
            label_box2.Visible = true;
            label_box3.Visible = true;
            label_box4.Visible = true;
        }

        private void finish_game()
        {
            this.DialogResult = System.Windows.Forms.DialogResult.OK;//закрыть форму уровня
        }

        private void restart_game()
        {
            Sound.play_fail(); //проигрывать музыку проигрыша
            DialogResult dr = MessageBox.Show("Вы коснулись стены лабиринта!\n\nПовторим?",
                "Вы проиграли!", MessageBoxButtons.YesNo);
            if (dr == System.Windows.Forms.DialogResult.Yes)
                start_game();//если нажата кнопка "ОК"? Запуск новой игры
            else
                this.DialogResult = System.Windows.Forms.DialogResult.Abort;// выход из формы
        }

        private void FormLevel3_Shown(object sender, EventArgs e)
        {
            start_game();
        }

        private void timer1_Tick(object sender, EventArgs e)
        //тайиер, который меняет видимость label_flash2 и label_flash3
        {
            label_flash3.Visible = !label_flash3.Visible;
            label_flash4.Visible = !label_flash4.Visible;
        }

        private void label8_MouseEnter(object sender, EventArgs e)
        {
            restart_game();
        }

        private void label_teleport1_MouseEnter(object sender, EventArgs e)
        {
            Point point = label_key.Location;
            point.Offset(label_key.Width / 2, label_key.Height / 2);//появление курсора по центру label_start
            Cursor.Position = PointToScreen(point);
        }

        private void label_teleport2_MouseEnter(object sender, EventArgs e)
        {
            Point point = label_teleport3.Location;
            point.Offset(label_teleport3.Width / 2, label_teleport3.Height / 2);//появление курсора по центру label_start
            Cursor.Position = PointToScreen(point);
        }

        private void label_finish_MouseEnter(object sender, EventArgs e)
        {
            if (box_left == 0) //если собрали все монетки
                finish_game(); //событие при наведении курсора мышки на label_finish
        }

        private void label_key_MouseEnter(object sender, EventArgs e)
        {
            label_door.Visible = false; // убираем дверь
            label_key.Visible = false; // убираем ключ
            Sound.play_key(); //воспроизведем звук для ключа
        }

        private void label_box1_MouseEnter(object sender, EventArgs e)
        {
            //сначада нужно узнать на какую именно монетку мы навели курсор
            //это делается с помощью объекта sender
            ((Label)sender).Visible = false;//исчезновение монетки
            Sound.play_key(); //проигрываем мелодию
            box_left--; // уменьшаем кол-во оставшихся монет
        }


21721. --
Евгений
Евгений
ответить
→  Иван  # Демо игры / Лабиринт 2D - игра / 2019-06-22 23:25

Привет. Скинул код. Вроде как start_game() немного ниже, при загрузке формы...

private void FormLevel3_Shown(object sender, EventArgs e)
{
start_game();
}


  • Отчёт оценивали:
    7119Новопашин Владимир+1   17947Dmitry Sinitsin+1   2146Иван+1   21981Илья Белоногов0   21753Николай+1   16396Денис+1   20545Max+1   21090Yaroslav+1   791Валерий Жданов+1   8275Tekashnik+1   21721Евгений+1  

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





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

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

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

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


Научился: сохранять координаты контрола и корректировать их.
Все доступно и понятно. Спасибо за урок.


Научился: Создавать уровни для игры.
Трудности: Придумать свой уровень.
Интересно и практично. p.s Скриншот моего уровня.