![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
WWW123 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 28.9.2016 Репутация: нет Всего: нет |
Здравствуйте.
Как сделать поворот змейки не налево и направо, а по и против часовой стрелки? |
|||
|
||||
Garmahis |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: нет Всего: 4 |
Точно так же как поворот налево и направо
![]() |
|||
|
||||
WWW123 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 28.9.2016 Репутация: нет Всего: нет |
Как сделать чтобы при движении налево и при нажатии клавиши влево, змейка двигалась вниз, то есть против часовой стрелки?
Это сообщение отредактировал(а) WWW123 - 5.10.2016, 12:51 |
|||
|
||||
Garmahis |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: нет Всего: 4 |
в каждом if, где вы сейчас определяете какая клавиша нажата анализировать текущие значения x и y и уже на основании этого устанавливать новые значения.
|
|||
|
||||
WWW123 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 28.9.2016 Репутация: нет Всего: нет |
Когда изменил третий If , программа стала работать неправильно. Перескакивает и выполняет следующий оператор If |
|||
|
||||
WWW123 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 28.9.2016 Репутация: нет Всего: нет |
Не могу загрузить exe файл на форум. Такой тип файла не можете загружать, пишет.
Это сообщение отредактировал(а) WWW123 - 6.10.2016, 08:36 |
|||
|
||||
WWW123 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 28.9.2016 Репутация: нет Всего: нет |
змейка движется правильно. Добавил ElseIf
|
|||
|
||||
WWW123 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 28.9.2016 Репутация: нет Всего: нет |
Как сделать хвост змеи?
|
|||
|
||||
Garmahis |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: нет Всего: 4 |
Я правильно понимаю что каждая клеточка тела змеи у тебя отдельный PictureBox? Если так то просто переносишь последний в то место куда змея должна шагнуть. Если змея упирается головой в PictureBox еды то, он просто становиться головой и в эту итерацию змея не двигается.
|
|||
|
||||
WWW123 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 28.9.2016 Репутация: нет Всего: нет |
Спасибо, Garmahis. Сделал хвост. Как сделать чтобы игра прекращалась при ударении о границы формы? У меня не получается.
|
|||
|
||||
Garmahis |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: нет Всего: 4 |
если (x, y <= 0) или (x >= Width) или (y >= Height) значит конец так же я так понимаю если новые координаты головы совпали с координатами другой части змеи тоже конец.
|
|||
|
||||
WWW123 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 28.9.2016 Репутация: нет Всего: нет |
Я так и делаю. Змейка или прилипает к краю и движется только по краю или движется нормально, но в обоих случаях не реагирует на Timer1.Enabled = False
|
|||
|
||||
WWW123 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 28.9.2016 Репутация: нет Всего: нет |
Сделал . Игра останавливается. Делал не через х , y, а через picturebox
Это сообщение отредактировал(а) WWW123 - 6.10.2016, 19:36 |
|||
|
||||
jsharp36 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 8.10.2011 Репутация: нет Всего: 1 |
Не хочется разбираться в этом адском языке и коде. Но если я понял задачу. Движется куда-то змея. Надо ее поворачивать относительно движения за или против стрелки.
Чуть простой математики и не надо этих ифов. Давайте условимся направление помечать цифрой. По кругу, от 0 до 3. Например, как мы привыкли в математике, от угла 0 и против часовой стрелки. (Это не важно на самом деле как, главное по кругу). Вправо - 0, вверх - 1, влево - 2, вниз - 3. Теперь, голова змеи всегда движется уже в каком-то направлении. И поворот ее клавишами вправо или влево будет значит к текущему направлению добавить +1 или -1. Желательно в этом же коде сразу проверить на выход за пределы и устанавливать нужное. Т.е. если стало значение -1, то сделать 3. Если +4, делает 0. Хотя подозреваю, работать будет и без этого, (на ходу придумываю алгоритм). С направлениями определились? Дальше можете написать любимые ифы и в зависимости от направления, выставлять x и y: +2, 0, -2. Что сложного вообще, вроде очевидно же? Но и тут можно без ифов обойтись, чтобы красивее код был. Ифы портят код. Не помню, как в VB деление по модулю? % ? Допустим так. Обычно так в других языках (хотя не всегда). Допустим направление обозначим как d Нам надо для икса, чтобы 0 и 2 стало 2 и -2. А 1 и 3 стали 0. Напряжем чуть мозг и: x = 2 * ((1 - d) % 2) * (1 - d) y = 2 * (d % 2) * (d - 2) Тут я считаю, что координаты, как обычно в компьютере, идут с верхнего левого угла. Т.е. вверх y уменьшается. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
jsharp36 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 8.10.2011 Репутация: нет Всего: 1 |
Не хочется разбираться в этом адском языке и коде. Но если я понял задачу. Движется куда-то змея. Надо ее поворачивать относительно движения за или против стрелки.
Чуть простой математики и не надо этих ифов. Давайте условимся направление помечать цифрой. По кругу, от 0 до 3. Например, как мы привыкли в математике, от угла 0 и против часовой стрелки. (Это не важно на самом деле как, главное по кругу). Вправо - 0, вверх - 1, влево - 2, вниз - 3. Теперь, голова змеи всегда движется уже в каком-то направлении. И поворот ее клавишами вправо или влево будет значит к текущему направлению добавить +1 или -1. Желательно в этом же коде сразу проверить на выход за пределы и устанавливать нужное. Т.е. если стало значение -1, то сделать 3. Если +4, делает 0. Хотя подозреваю, работать будет и без этого, (на ходу придумываю алгоритм). С направлениями определились? Дальше можете написать любимые ифы и в зависимости от направления, выставлять x и y: +2, 0, -2. Что сложного вообще, вроде очевидно же? Но и тут можно без ифов обойтись, чтобы красивее код был. Ифы портят код. Не помню, как в VB деление по модулю? % ? Допустим так. Обычно так в других языках (хотя не всегда). Допустим направление обозначим как d Нам надо для икса, чтобы 0 и 2 стало 2 и -2. А 1 и 3 стали 0. Напряжем чуть мозг и: x = 2 * ((1 - d) % 2) * (1 - d) y = 2 * (d % 2) * (d - 2) Тут я считаю, что координаты, как обычно в компьютере, идут с верхнего левого угла. Т.е. вверх y уменьшается. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |