С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
SePil

Змейка начинает растягиваться при увеличении скорости

08.09.2014, 14:30. Показов 2595. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дали задачу - сделать простую змейку. Нарыл исходники, стал разбираться и появилась проблема - если увеличивать скорость змейки, когда она съедает точку - между квадратиками змейки появляются пробелы, то есть змейка растягивается.
Скорость увеличиваю вот так, умножением на speed.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public void moveDown()
       {
           drawSnake();
           snakeRec[0].Y += 10 * speed; 
       }
       public void moveUp()
       {
           drawSnake();
           snakeRec[0].Y -= 10 * speed;
       }
       public void moveLeft()
       {
           drawSnake();
           snakeRec[0].X -= 10 * speed;
       }
       public void moveRight()
       {
           drawSnake();
           snakeRec[0].X += 10 * speed;
       }
А целиковый класс змейки выглядит так
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
public class snake
   {
       private Rectangle[] snakeRec;
       private SolidBrush brush;
       private int x, y, width, height;
       private int speed;
       public Rectangle[] SnakeRec
       {
           get { return snakeRec; }
       
       
       }
 
       public snake()
       {
           snakeRec = new Rectangle[3];
           brush = new SolidBrush(Color.Black);
 
           x = 20;
           y = 0;
           width = 10;
           height = 10;
           for (int i = 0; i < snakeRec.Length; i++)
           {
               snakeRec[i] = new Rectangle(x, y, width, height);
               x -= 10;
           }
       }
       public void drawSnake(Graphics paper)
       {
           foreach (Rectangle rec in snakeRec)
           {
               paper.FillRectangle(brush, rec);
           }
       }
 
       public void drawSnake()
       {
           for (int i = snakeRec.Length - 1; i > 0; i--)
           {
               snakeRec[i] = snakeRec[i - 1];
           }
       }
       public void moveDown()
       {
           drawSnake();
           snakeRec[0].Y += 10 * speed; 
       }
       public void moveUp()
       {
           drawSnake();
           snakeRec[0].Y -= 10 * speed;
       }
       public void moveLeft()
       {
           drawSnake();
           snakeRec[0].X -= 10 * speed;
       }
       public void moveRight()
       {
           drawSnake();
           snakeRec[0].X += 10 * speed;
       }
       public void growSnake()
       {
           List<Rectangle> rec = snakeRec.ToList();
           rec.Add(new Rectangle(snakeRec[snakeRec.Length-1].X,snakeRec[snakeRec.Length-1].Y,width,height));
           snakeRec = rec.ToArray();
           speed++;
       
       }
    }
Помогите разобраться как увеличить скорость змейки чтобы она не растягивалась?
Сам проект прикрепил.
Вложения
Тип файла: rar snake-game.rar (46.0 Кб, 30 просмотров)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.09.2014, 14:30
Ответы с готовыми решениями:

При увеличении экрана, видео начинает моргать
стоит последняя версия мосилы и адобе флеш плауер, видео в инете все нормально загружается, но как увеличу экран видео начинает моргать,...

При увеличении яркости на ноутбуке начинает мерцать экран
Здравствуйте. Вроде всё было хорошо. Ноутбук работает по 10 часов в день. Иногда не выключается. Начал мигать экран по середине. Кстати...

Найти все трехзначные числа, которые при увеличении на 1 делятся на 2, при увеличении на 2 делятся на 3, при увеличении
Помогите разобраться с задачой Найти все трехзначные числа, которые при увеличении на 1 делятся на 2, при увеличении на 2 делятся на...

3
8 / 8 / 11
Регистрация: 11.06.2014
Сообщений: 24
08.09.2014, 14:43
Змейка растягивается при вызове метода growSnake() класса snake. Этот метод вызывается в обработчике события timer1_Tick. Поэтому, если нет необходимости в увеличении длины змейки при попадании на квадратик, то просто уберите вызов метода growSnake().
0
23 / 23 / 6
Регистрация: 23.03.2013
Сообщений: 245
08.09.2014, 14:58
В проекте змейка растягивается а не ускоряется, просто нужно быстрее таймер сделать

И еще я бы добавил
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            if ( snakes.SnakeRec [ 0 ].X < 0 )
            {
                snakes.SnakeRec [ 0 ].X = 290;
            }
            if ( snakes.SnakeRec [ 0 ].Y < 0 )
            {
                snakes.SnakeRec [ 0 ].Y = 290;
            }
 
            if ( snakes.SnakeRec [ 0 ].X > 290 )
            {
                snakes.SnakeRec [ 0 ].X = 0;
            }
            if ( snakes.SnakeRec [ 0 ].Y > 290 )
            {
                snakes.SnakeRec [ 0 ].Y = 0;
            }
что бы через стены могла двигаться )))

(вместо вызова restart)

и еще ошибка в коде

C#
1
snakes.SnakeRec [ 0 ].IntersectsWith( snakes.SnakeRec [ 1 ] ) ) // 1 а нужно i
0
Заблокирован
08.09.2014, 16:04
Цитата Сообщение от SePil Посмотреть сообщение
Дали задачу - сделать простую змейку. Нарыл исходники, стал разбираться и появилась проблема - если увеличивать скорость змейки, когда она съедает точку - между квадратиками змейки появляются пробелы, то есть змейка растягивается.
SePil, а сами написать не пробывали? Намного полезнее, чем ковырять чужие исходники.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.09.2014, 16:04
Помогаю со студенческими работами здесь

Графики переходного процесса по току якоря и скорости вращения при увеличении сопротивления
Здравствуйте, пожалуйста, помогите решить задачу На рисунке показано направление действия переменных в установившемся режиме при...

Сокеты. Разделяемая память. Резкое падение скорости при увеличении размера передаваемого файла
Долго думал, в какую тему написать этот вопрос. Написал сюда. В общем, балуюсь с сокетами и разделяемой памятью, передавая между клиентом...

Почему в вихрях самоохлаждается среда при одновременном увеличении скорости движения что нарушает закон термодинамики?
В вихрях наблюдается феномен самоохлаждения среды при одновременном увеличении скорости потока что противоречит законам термодинамики! ...

Напечатайте в строку все трехзначные числа, которые при увеличении на 1 кратные 2, при увеличении на 2 кратные 3
2.Напечатайте в строку все трехзначные числа, которые при увеличении на 1 кратные 2, при увеличении на 2 кратные 3, при увеличении на 3...

Найти все трехзначные числа, которые при увеличении на 1 делятся на 2, при увеличении на 2 делятся на 3
2.Найти все трехзначные числа, которые при увеличении на 1 делятся на 2, при увеличении на 2 делятся на 3, при увеличении на 3 делятся на...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru