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

Как при нажатии кнопки Мини-игра перемешивались все кнопки?

26.02.2023, 21:54. Показов 580. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задали сделать калькулятор и мини-игру с перемешиванием кнопок. Не знаю как сделать рандомное перемещение кнопок по заданным позициям. Вот код:
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Калькулятор
{
    public partial class Form1 : Form
    {
        public string D;
        public string N1;
        public bool N2;
        public Form1()
        {
            N2 = false;
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button5_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button7_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button8_Click(object sender, EventArgs e)
        {
            if (N2)
            {
                N2 = false;
                TextBox2.Text = "0";
            }
 
            Button B = (Button)sender;
            if (TextBox2.Text == "0")
                TextBox2.Text = B.Text;
            else
                TextBox2.Text = TextBox2.Text + B.Text;
        }
 
        private void TextBox2_Click(object sender, EventArgs e)
        {
            Button B = (Button)sender;
            D = B.Text;
            N1 = TextBox2.Text;
            N2 = true;
        }
 
        private void button14_Click(object sender, EventArgs e)
        {
            double DN1, DN2, result;
            result = 0;
 
            DN1 = Convert.ToDouble(N1);
            DN2 = Convert.ToDouble(TextBox2.Text);
 
            if (D == "+")
            {
                result = DN1 + DN2;
            }
 
            if (D == "-")
            {
                result = DN1 - DN2;
            }
 
            if (D == "x")
            {
                result = DN1 * DN2;
            }
 
            if (D == "/")
            {
                result = DN1 / DN2;
            }
 
            D = "=";
            N2 = true;
            TextBox2.Text = result.ToString();
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.02.2023, 21:54
Ответы с готовыми решениями:

Как сделать чтобы при нажатии кнопки чтобы активировались все неактивные кнопки?
На форме имеются три кнопки. При открытии формы кнопка "button1" становится неактивна: button1.Enabled = false; Как сделать чтобы...

При нажатии правой кнопки мыши на форме с нее удаляются все кнопки
Написать программу, динамически порождающую на окне кнопки или метки. Левый верхний угол элемента управления определяется местоположением...

При нажатии правой кнопки мыши на форме с нее удаляются все кнопки
Написать программу, динамически порождающую на окне кнопки или метки. Левый верхний угол элемента управления определяется местоположением...

3
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,560
26.02.2023, 22:43
Цитата Сообщение от PROCuuuba Посмотреть сообщение
Не знаю как сделать рандомное перемещение кнопок по заданным позициям.
А где кнопки-то? Сколько их? Куда размещать?
0
0 / 0 / 0
Регистрация: 26.02.2023
Сообщений: 2
26.02.2023, 22:48  [ТС]
Кнопки имеются, разделены на 2 группы: знаки и цифры. button8_Click это цифры, а button14_Click это знаки. Я думаю их надо в общую группу объединить для смешивания между собой.
0
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,560
26.02.2023, 23:31
Цитата Сообщение от PROCuuuba Посмотреть сообщение
Я думаю их надо в общую группу объединить для смешивания между собой.
Ясности не добавило, ну да ладно.

В общем случае можно решить так. В форме объявить массив Point[] buttonLocations для хранения позиций кнопок. В конструкторе формы заполнить его положениями кнопок:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public partial class Form1 : Form
{
    Random rand = new Random();
    Point[] buttonLocations;
 
    public Form1()
    {
        InitializeComponent();
 
        buttonLocations = new Point[Controls.OfType<Button>().Count()];
        int i = 0;
        foreach (var button in Controls.OfType<Button>())
            buttonLocations[i++] = button.Location;
    }
    // ...
}
Далее в нужном месте кода рандомно перемешать этот массив и присвоить новые значения кнопкам. Можно воспользоваться таким алгоритмом:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    void ShuffleButtons()
    {
        int n = buttonLocations.Length;
        while (n > 1)
        {
            n--;
            int k = rand.Next(n + 1);
            Point temp = buttonLocations[k];
            buttonLocations[k] = buttonLocations[n];
            buttonLocations[n] = temp;
        }
 
        int i = 0;
        foreach (var button in Controls.OfType<Button>())
            button.Location = buttonLocations[i++];
    }
Не проверял, но должно работать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.02.2023, 23:31
Помогаю со студенческими работами здесь

При нажатии правой кнопки мыши записать символ красного цвета на экран, при нажатии левой кнопки - заменить на зелёный
При нажатии правой кнопки обеспечить вывод на экран по координатам х и у курсора определенного символа (любого) красного цвета, а при...

При нажатии правой кнопки мыши записать символ на экран, при нажатии левой кнопки - стереть
При нажатии правой кнопки обеспечить вывод на экран по координатам х и у курсора определенного символа (любого), а при нажатии левой кнопки...

Как активировать кнопки при нажатии другой кнопки
Есть 1 кнопка, которая активная и 4 кнопки которые не активные вначале. По нажатию активной кнопки стают активные 4 остальных. Как ето...

Замена картинки при нажатии кнопки(игра Сапёр)
Здравствуйте. Пришла идея написать сапёра чисто для тренировки на Qt. Вот и хочу спросить. Реализация такая: нажал на кнопку,...

Как при нажатии кнопки отчистить все TextBox, comboBox3, dateTimePicker?
Здравствуйте, подскажите как сделать чтоб по нажатии кнопки отчищались все TextBox, comboBox3, dateTimePicker. Они находятся на tabControl...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru