Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 19.06.2012
Сообщений: 87
1

Счет в тетрисе

26.04.2013, 11:46. Показов 3572. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Есть прога-тетрис - просто падают и исчезают фигурки, хочу сделать, чтобы велся счет "на табло". Дайте направление - как это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2013, 11:46
Ответы с готовыми решениями:

Ошибки в тетрисе
Добрый день, пытаюсь повторить код тетриса за автором. 1. как понять где я ошибся? 2 . почему...

Счетчик очков в тетрисе
Помогите добавить счетчик, который бы считал очки при исчезновении одной и более линии тетриса....

Поворот фигур в тетрисе
Пытаюсь написать поворот фигур в тетрисе, но появляется это сообщение Вызвано исключение по...

Выбор случайной фигуры в тетрисе
Подскажите, пожалуйста, идею реализации выбора случайной фигуры в тетрисе. Фигуры хранятся в виде...

27
174 / 174 / 57
Регистрация: 08.01.2013
Сообщений: 335
26.04.2013, 12:04 2
Найди кусок кода (функцию) которая отвечает за "исчезновение" линий, и добавь туда счетчик, что то типа такого:
C#
1
2
3
4
5
6
7
public int points = 0;
public void HideFigure()
{
....
points++;
textbox1.text = points.ToString();
}
Это самый простой способ, а так, можно написать свою функцию, которая в зависимости от того сколько линий исчезло, подсчитывает баллы. Ну и желательно код программы показать, чтобы было понятно как это все реализовано.
1
1 / 1 / 1
Регистрация: 19.06.2012
Сообщений: 87
26.04.2013, 16:09  [ТС] 3
Sergey_B, сделал, сейчас при исчезновении любого количества строк добавляет +1. А как сделать, чтобы по очку за каждую строку?


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void DelLine(int[] d)
        {
 
            double iL = 0;
            for (int i = 0; i < 4; i++)
            {
                int y1 = d[i];
                if (d[i] == 0) break;
                iL += 1;
                for (int x = 0; x < 10; x++)
                {
                    for (int y = y1; y > 0; y--)
                    {
                        Area[x, y] = Area[x, y - 1];
                        
                    }
                }
            }
            
            this.Refresh();
        }
Добавлено через 9 минут
Вот так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private void DelLine(int[] d)
        {
 
            double iL = 0;
            for (int i = 0; i < 4; i++)
            {
                int y1 = d[i];
                if (d[i] == 0) break;
                iL += 1;
                for (int x = 0; x < 10; x++)
                {
                    for (int y = y1; y > 0; y--)
                    {
                        Area[x, y] = Area[x, y - 1];
                    }
                    
                }
                points++;
                label2.Text = points.ToString();
            }
            
            this.Refresh();
        }
Добавлено через 3 часа 34 минуты
Все, со счетом пока разобрался.

А какими инструментами можно добавить функцию паузы игры??
0
46 / 46 / 12
Регистрация: 03.08.2012
Сообщений: 215
26.04.2013, 21:20 4
Нужно игровой цикл останавливать.
Т.е. просто отключать обновление игры на время.
1
1 / 1 / 1
Регистрация: 19.06.2012
Сообщений: 87
30.04.2013, 15:27  [ТС] 5
Цитата Сообщение от dood Посмотреть сообщение
Нужно игровой цикл останавливать.
Т.е. просто отключать обновление игры на время.
За обновление отвечает выражение
C#
1
this.Refresh();
, которое есть в каждой из функция, как я понимаю. А вот как на него воздействовать из функции нажатия кнопки паузы?
0
212 / 214 / 44
Регистрация: 20.12.2011
Сообщений: 635
30.04.2013, 15:36 6
таймера там никакого нет?
0
1 / 1 / 1
Регистрация: 19.06.2012
Сообщений: 87
30.04.2013, 15:38  [ТС] 7
Есть таймер
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
30.04.2013, 15:40 8
Акмаль Салихов, ну тогда что за вопрос "а что останавливать"?
0
212 / 214 / 44
Регистрация: 20.12.2011
Сообщений: 635
30.04.2013, 15:43 9
Цитата Сообщение от Акмаль Салихов Посмотреть сообщение
Есть таймер
ну значит таймер и останавливайте
вызов всех функций идёт по тику таймера
чтобы паузу снять снова стартуйте таймер
1
1 / 1 / 1
Регистрация: 19.06.2012
Сообщений: 87
30.04.2013, 15:47  [ТС] 10
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
private void timer1_Tick(object sender, EventArgs e)
        {
            if (fig == null)
            {
                fig = new Figura(); fig.pic = mfig[rnd.Next(0, 7)].pic;
                if (!figure_ok())
                {
                    Stop_figure();
 
                    fig = null; timer1.Enabled = false;
                    return;
                }
            }
 
            fig.y++;
            if (!figure_ok())
            {
                fig.y--; Stop_figure();
                fig = null;
            }
            
            this.Refresh();
            
        }
Добавлено через 4 минуты
Ок, остановить я догадался как)

C#
1
2
3
4
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Stop();
        }
А вот как проверить, остановлен он уже или нет, чтобы можно было и возобновлять игру?
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
30.04.2013, 15:49 11
C#
1
timer1.Enabled
0
1 / 1 / 1
Регистрация: 19.06.2012
Сообщений: 87
30.04.2013, 15:51  [ТС] 12
C#
1
2
3
4
5
        private void button1_Click(object sender, EventArgs e)
        {
            if (timer1.Enabled == true) timer1.Stop();
            else timer1.Start();
        }
0
212 / 214 / 44
Регистрация: 20.12.2011
Сообщений: 635
30.04.2013, 16:00 13
Цитата Сообщение от Акмаль Салихов Посмотреть сообщение
if (timer1.Enabled == true)
толку сравнивать, Enabled и так бул, который нужен ифу, поэтому просто
C#
1
if (timer1.Enabled)
1
1 / 1 / 1
Регистрация: 19.06.2012
Сообщений: 87
30.04.2013, 16:27  [ТС] 14
Странное дело, кнопка заработала, но теперь прога не реагирует на кнопки - невозможно перемещать фигуры... из-за чего это могло произойти?

Добавлено через 22 минуты
Удаляю кнопку - все нормально...
0
212 / 214 / 44
Регистрация: 20.12.2011
Сообщений: 635
30.04.2013, 16:39 15
подозреваю, что обработка нажатий кнопок идёт по событию keyPress, keyDown или keyUp и т.д. для формы, но после нажатия кнопки, фокус находится на ней.
при нажатии добавьте код:
C#
1
Form1.Focus();
или что-то в этом роде
0
1 / 1 / 1
Регистрация: 19.06.2012
Сообщений: 87
30.04.2013, 16:42  [ТС] 16
Fler, но управления нет с самого запуска игры...
0
212 / 214 / 44
Регистрация: 20.12.2011
Сообщений: 635
30.04.2013, 16:52 17
значит фокус на кнопке изначально
либо в конструкторе формы перевесьте фокус на неё, либо для кнопки событие есть Enter помойму, в нём перевешивайте фокус на форму(не знаю будет ли работать, просто предположение)
1
1 / 1 / 1
Регистрация: 19.06.2012
Сообщений: 87
30.04.2013, 16:57  [ТС] 18
Fler, ничего не помогает...
0
212 / 214 / 44
Регистрация: 20.12.2011
Сообщений: 635
30.04.2013, 16:59 19
сбросьте проект архивом, посмотрю
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
30.04.2013, 20:50 20
Цитата Сообщение от Акмаль Салихов Посмотреть сообщение
C#
1
2
3
4
5
        private void button1_Click(object sender, EventArgs e)
        {
            if (timer1.Enabled == true) timer1.Stop();
            else timer1.Start();
        }
А можно еще проще:
C#
1
2
3
4
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = !timer1.Enabled;
        }
0
30.04.2013, 20:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2013, 20:50
Помогаю со студенческими работами здесь

Как сделать повороты фигур в Тетрисе!
Пишу Тетрис в консоли. У меня есть массив - map. Ширина не 20 потому что появление фигур...

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

Небесная твердь в углу экрана в тетрисе)
Делаю тетрис для себя, просмотрел видео о создании змейки на OpenGL, решил сделать тетрис....

Ошибка в тетрисе при добавлении блоков
Здравствуйте. Делал тетрис. С одним блоком работает. Добавляю второй блок- то не запускается, то...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru