예제 #1
0
        //сброс необходимый в начале игры
        public void SbrosSchetchikov()
        {
            napravlenie = 0;      // направление движения змейки: 0 - вверх, 1 - вправо, 2 - вниз, 3 - влево
            mouses      = 0;      // количество пойманых мышек
            Shag        = 1;      // уровень игры
            ochki       = 0;      // набранные очки в игре


            napravlenie = 0;
            // делаем змейку из трех секции, с начальными координатами внизу и по-центру формы
            // удалаем все звенья змейки. это нужно для перезапусков программы
            for (int i = zmeyka.Count(); i > 0; i--)
            {
                zmeyka.Remove(zmeyka[i - 1]);
            }

            zmeyka.Add(new koordinata(W / 2, H - 5));
            zmeyka.Add(new koordinata(W / 2, H - 4));
            zmeyka.Add(new koordinata(W / 2, H - 3));
            zmeyka.Add(new koordinata(W / 2, H - 2));
            zmeyka.Add(new koordinata(W / 2, H - 1));

            mouse = new koordinata(rand.Next(W), rand.Next(H));             // координаты мышонка
        }
예제 #2
0
        //расчет движения змеи
        public void Dvijenie()
        {
            //ЗМЕЯ
            // запоминаем координаты головы змейки
            int x = zmeyka[0].X, y = zmeyka[0].Y;
            // в зависимости от направления вычисляем где будет голова на следующем шаге
            // сделал чтобы при достижении края формы голова появлялась с противоположной стороны
            // и змея продолжала движение
            int visotaPaneliKnopok = 1;

            switch (napravlenie)
            {
            case 0:
                y--;
                if (y < (0 + visotaPaneliKnopok))
                {
                    y = H - 1 - visotaPaneliKnopok;
                }
                break;

            case 1:
                x++;
                if (x >= W)
                {
                    x = 0;
                }
                break;

            case 2:
                y++;
                if (y >= (H - visotaPaneliKnopok))
                {
                    y = 0 + visotaPaneliKnopok;
                }
                break;

            case 3:
                x--;
                if (x < 0)
                {
                    x = W - 1;
                }
                break;
            }
            koordinata c           = new koordinata(x, y); // секция с новыми координатами головы

            zmeyka.Insert(0, c);                           // вставляем его в начало списка сегментов змеи(змея выросла на одну секцию)

            //проверим на седъедание самой себя
            //змея это массив. поэтому пробежимся по нему с целью узнать нет ли совпадения
            for (int i = 1; i < zmeyka.Count(); i++)
            {
                if (zmeyka[i].X == zmeyka[0].X && zmeyka[i].Y == zmeyka[0].Y)
                {
                    gamover = true;
                }
            }



            //МЫШЬ
            if (zmeyka[0].X == mouse.X && zmeyka[0].Y == mouse.Y)             // если координаты головы и мышки совпали
            {
                tmpH = rand.Next(H);
                if (tmpH == 0)
                {
                    tmpH = 1;
                }
                if (tmpH >= H - 1)
                {
                    tmpH = tmpH - 3;
                }
                mouse = new koordinata(rand.Next(W), tmpH); // располагаем мышонка в новых случайных координатах

                mouses++;                                   // увеличиваем счетчик пойманых мышат
                ochki += Shag;                              // увеличиваем набранные очки в игре: за каждого мышонка прибавляем количество равное номеру уровня
                if (mouses % 10 == 0)                       // после каждого десятого мышонка
                {
                    Shag++;                                 // повышаем уровень
                    interval -= 10;                         // и уменьшаем интервал срабатывания таймера
                }
            }
            else             // если координаты головы и коодинаты мышонка не совпали - убираем последнюю секцию змейки(т.к. ранее добавляли новую голову)
            {
                zmeyka.RemoveAt(zmeyka.Count - 1);
            }
        }