Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
11 / 11 / 2
Регистрация: 13.07.2014
Сообщений: 420

Тетрис: как реализовать управление фигурой?

18.03.2015, 11:33. Показов 2344. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я нуб, вот решил сделать тетрис. Пока в разработке. Пока лишь падает один квадратик (а детали состоят из 4ёх таких), зато этот квадратик уже реагирует на то - есть ли под ним другие квадраты и ставится на него.

Но проблема в другом - не получается реализовать реагирования на ввод с клавиатуры (чтоб смещался по оси Х квадрат). Я уже запутался в этих Hadlerax Argsax и т.д. Что только не пробовал.

У меня с нажатием кнопки моей стартует в ней главный цикл приложения. Но проблема в том, что там, внутри цикла этого, плевать на то, что где-то есть код который отвечает за нажатие на клавиатурные клавиши.

И поэтому этот код как бы пофигу моему циклу:

C#
1
2
3
4
5
6
7
  private static void textBox1_KeyDown(object sender, KeyEventArgs Prinimatel)
        {        
            Button btn = sender as Button;
            var form = btn.Parent;
            MessageBox.Show(Convert.ToString(Prinimatel.KeyData));
            MessageBox.Show(Convert.ToString ( Prinimatel));
        }
Во-вторых если взглянуть на эту функцию - то я не знаю как ей передать эти аргументы. Этот object и KeyEventArgs.
Короче запутался основательно. Думал реагирования на клавиатуру будет лёгкой задачей.
П.С - пока в этой функции я хотел не смещение по оси Х сделать, а проверить работает ли - выводя сообщение о нажатых клавишах.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.03.2015, 11:33
Ответы с готовыми решениями:

Реализовать рисование фигурой
Реализовать рисование фигурой, а именно треугольником со вписанной в него окружность, при этом чтобы можно было настраивать цвет линии...

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

Как рисовать фигурки и реализовать движок игры Тетрис
Добрый день ! Задали написать тетрис. Я могу сделать менюшку, могу нарисовать поле игры. Но как рисовать фигурки и реализовать движок...

2
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
18.03.2015, 12:23
Во превых https://msdn.microsoft.com/ru-... .110).aspx
1
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
19.03.2015, 14:17
Masai,

Не очень понятно, причем тут textBox?
Причем, видимо sender будет типа TextBox, а вы с ним работаете как Button
C#
1
Button btn = sender as Button;
Событие нажатия клавиши нужно искать у формы.

Пример: (падающий квадратик)
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
   public partial class Form1 : Form
    {
        Panel pnl;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
            this.KeyPreview = true;
            timer1.Interval = 1000;
 
            pnl = new Panel() { Parent = this, BackColor = Color.Aqua, Bounds = new Rectangle(500, 50, 30, 30) };
            this.KeyDown+=new KeyEventHandler(Form1_KeyDown);
            
            timer1.Start();
        }
 
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Left:
                    pnl.Location = new Point(pnl.Location.X - 10, pnl.Location.Y);
                    break;
 
                case Keys.Right:
                    pnl.Location = new Point(pnl.Location.X + 10,  pnl.Location.Y);
                    break;
            }
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            pnl.Location = new Point(pnl.Location.X, pnl.Location.Y + 10);
        }
    }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.03.2015, 14:17
Помогаю со студенческими работами здесь

Реализовать алгоритм работы планировщика. Управление виртуальной памятью. Управление файловой системой
Разработка программы менеджера памяти. Свопинг. Сегментная схема организации памяти. Управление виртуальной памятью. Глобальное и локальное...

Как реализовать управление персонажем мышкой?
Как через библиотеку SFML можно реализовать управление персонажем с помощью мышки? Как в Action/RPG играх типо Diablo, когда зажав ПКМ и...

Как реализовать управление свайпами для раннера-2D?
Помогите , объясните или дайте ссылку с примером. Есть объект , на него с верху летят блоки и с помощью свайпов надо уходить в...

Как лучше всего реализовать табличный вывод и управление mySQL базы клиентов?
Хочу сделать управление (просмотр, добавление записей, удаление, редактирование). Использую php+jquery. С ajax-ом еще не работал. Кто...

Реализовать игровое поле в игре "Тетрис"
Добрый вечер, писал программу тетрис, и ни как не могу исправить некоторые ошибки Что нужно: 1. Нужно поле игровое по центру консоли...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru