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

Сравнение Picturebox' ов по клику

19.07.2018, 19:17. Показов 2484. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!
хочу сделать наподобие игрушку.



создал пикчабоксы
как можно все это сделать через рандом? массив цифр использовать? и распределить каждую последоввательно? ладно это не самая вроде как сложная часть программы.
Думал и не додумал, как же всетаки сравнивать картинки по клику.
Может кто помощь навести мысли или показать какую то часть программы?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.07.2018, 19:17
Ответы с готовыми решениями:

Передвижение Picturebox-ов по клику
У меня на форме есть 36 Picturebox-в. При нажатии на один из них, должны передвигаться по X и Y(в пределах квадрата 3x3) компоненты...

Замена картинки в PictureBox по клику
Здравствуйте! Я никогда не писала на c#. Но сейчас неожиданно появилась в этом необходимость, при чем срочно. Мне нужно создать форму,...

Рисование окружности по клику в Picturebox
Здравствуйте, как нарисовать окружность, кликом мыши по элементу picturebox?

11
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
19.07.2018, 19:21
Цитата Сообщение от linkel Посмотреть сообщение
не знаю, как написать логику программы
Так Вы логику игры то напишите. А то мне, к примеру, представленная картинка ни о чем не говорит.
0
1 / 1 / 1
Регистрация: 13.06.2015
Сообщений: 47
19.07.2018, 19:55  [ТС]
а как я могу ее написать, если я не знаю как это сделать, и прошу подсказать мне?
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
19.07.2018, 20:01
Цитата Сообщение от linkel Посмотреть сообщение
как я могу ее написать, если я не знаю как это сделать
Так смысл игры то в чем или Вы этого тоже не знаете?
0
1 / 1 / 1
Регистрация: 13.06.2015
Сообщений: 47
19.07.2018, 20:30  [ТС]
Цитата Сообщение от Shogun31337 Посмотреть сообщение
Так смысл игры то в чем или Вы этого тоже не знаете?
да не в чем! просто хочу понять реализацию данной программы. Научиться чему то, не все же закончили институт программирования.
Ладно, это походу бессмысленно тут спрашивать, пойду прочту 2 тыс страниц какого нибудь психа автора по винформу....

Добавлено через 7 минут
код, логика то игры просто выбрать 2 одинаковые карты и они исчезнут. на этом все
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
19.07.2018, 20:44
Цитата Сообщение от linkel Посмотреть сообщение
просто хочу понять реализацию данной программы
Так для понимания реализации нужно понимать логику работы. Это как пытаться собрать, к примеру, ДВС по фотографии, не зная при этом ничего больше.

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

Цитата Сообщение от linkel Посмотреть сообщение
пойду прочту 2 тыс страниц какого нибудь психа автора по винформу
Вообще то все нормальные люди с этого и начинают!

Добавлено через 10 минут
Цитата Сообщение от linkel Посмотреть сообщение
просто выбрать 2 одинаковые карты и они исчезнут
Самый простой способ - использовать свойство Tag у pictureBox'ов, записывая туда имя файла с картинкой или индекс, если картинки в массиве хранятся. При клике на первую картинку записывать значение из Тэг в переменную, а при втором сравнивать его с тэгом второго pictureBox'а. Если совпали, значит картинки одинаковые.
0
 Аватар для Aferuga
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,470
20.07.2018, 04:33
Цитата Сообщение от linkel Посмотреть сообщение
логика то игры просто выбрать 2 одинаковые карты и они исчезнут. на этом все
Эта игра называется Мемо. Подобного на форуме достаточно.
1
1 / 1 / 1
Регистрация: 13.06.2015
Сообщений: 47
08.09.2018, 10:04  [ТС]
как то так
Цитата Сообщение от Shogun31337 Посмотреть сообщение
Добавлено через 10 минут

Самый простой способ - использовать свойство Tag у pictureBox'ов, записывая туда имя файла с картинкой или индекс, если картинки в массиве хранятся. При клике на первую картинку записывать значение из Тэг в переменную, а при втором сравнивать его с тэгом второго pictureBox'а. Если совпали, значит картинки одинаковые.
Через тэг не пойдет потому что... у меня 96 картинок в 2х листах, 36 пикчабоксов в одном tablelayoutpanel.

C#
1
2
3
List<Image> 1 = new List<Image>(); //заполненные лист
List<Image> 2 = new List<Image>(); //заполненные лист
List<Image> cardsOf36 = new List<Image>();
далее

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 void CardsCombination() //комбинация из 36 карт используемых в игре
        {
            while (cardsOf36.LongCount() != 36)
            {
                var randomnumber = random.Next(0, cardsOfJapan.Count);
                cardsOf36.Add(cardsOf1[randomnumber]); //добавляем в список 36 карт используемых в игре из списка 1
                cardsOf36.Add(cardsOf2[randomnumber]); //добавляем в список 36 карт используемых в игре из списка 2
                cardsOf1.RemoveAt(randomnumber); //удаляем из списка 1 элементы перемещенные в список 36 карт
                cardsOf2.RemoveAt(randomnumber); //удаляем из списка 2 элементы перемещенные в список 36 карт
            }
        }
 
        private void ImageRandoming()
        {
            PictureBox picture;
            int randomNumber;
 
            for (int i = 0; i < tableLayoutPanel1.Controls.Count; i++)
            {
                randomNumber = random.Next(0, cardsOf36.Count);
                if (tableLayoutPanel1.Controls[i] is PictureBox)
                {
                    picture = (PictureBox)tableLayoutPanel1.Controls[i];
                }
                else
                {
                    continue;
                }
              picture.Image = cardsOf36[randomNumber];
              cardsOf36.RemoveAt(randomNumber);     
            }
        }
 
        private void PictureBox_Click(object sender, EventArgs e)
        {
            if (firstClicked != null && secondClicked != null)
                return;
 
            PictureBox clickedBox = sender as PictureBox;
 
            if (clickedBox == null)
                return;
 
            if (clickedBox.BorderStyle == BorderStyle.FixedSingle)
                return;
 
            if (firstClicked == null)
            {
                firstClicked = clickedBox;
                firstClicked.BorderStyle = BorderStyle.FixedSingle;
                    return;
            }
 
            secondClicked = clickedBox;
            secondClicked.BorderStyle = BorderStyle.FixedSingle;
            
            if () //условие сравнения
            {
                
            }
            else
             timer1.Start();
            
        }
 
        private void Timer1_Tick(object sender, EventArgs e) //таймер сброса границ
        {
            timer1.Stop();
            firstClicked.BorderStyle = BorderStyle.None;
            secondClicked.BorderStyle = BorderStyle.None;
            firstClicked = null;
            secondClicked = null;
Добавлено через 12 минут
Все отображается и работает как мне нужно, но у меня появилась проблема на последнем шаге как сравнить 2 кликнутых пикчабоксов? (скорее она появилась вначале перед началом написания, нежели в конце, из за непродуманного шага перед написанием)
у меня только 1 мысль. Сравнить по названиям картинок которые хранятся в ресурсах. но как это правильно прописать я не знаю.
0
 Аватар для Aferuga
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,470
10.09.2018, 07:31
Цитата Сообщение от linkel Посмотреть сообщение
Через тэг не пойдет потому что... у меня 96 картинок в 2х листах
Даже если картинки не одинаковые, а похожие или например картинок больше чем необходимо, то это все равно не оправдание.
Цитата Сообщение от linkel Посмотреть сообщение
(скорее она появилась вначале перед началом написания, нежели в конце, из за непродуманного шага перед написанием)
Ну да такая проблема всегда возникает когда сперва бегут писать код, вместо того чтобы подумать как структурировать данные.

З. Ы. А чем мой вариант по ссылке не устроил?
0
1 / 1 / 1
Регистрация: 13.06.2015
Сообщений: 47
10.09.2018, 17:25  [ТС]
Цитата Сообщение от Aferuga Посмотреть сообщение
Даже если картинки не одинаковые, а похожие или например картинок больше чем необходимо, то это все равно не оправдание.
а как бы вы дописали 57 строчку моего кода?

Картинки не одинаковые по пикселям) их не надо скрывать как в memory игре. Нужно просто соотнести.

Добавлено через 1 минуту
Цитата Сообщение от Aferuga Посмотреть сообщение
З. Ы. А чем мой вариант по ссылке не устроил?
Ну во первых я не понимаю ваш код) в силу своих не знаний.
во 2х он слишком большой)

Добавлено через 8 минут
Картинки не одинаковы по пикселям и по названию файла и расположения, т.е абсолютно разные. Их не надо скрывать, а надо соотнести.

З Ы я смог все же решить ничего не переделывая. просто дополнив, ничего креативного, хотел бы глянуть ваш способ, если у вас имеется какие либо мысли, способы, так для развития, а потом скину свой)
0
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
11.09.2018, 09:10
Цитата Сообщение от linkel Посмотреть сообщение
Их не надо скрывать, а надо соотнести.
Цитата Сообщение от linkel Посмотреть сообщение
просто выбрать 2 одинаковые карты и они исчезнут
дак вы определитесь
0
1 / 1 / 1
Регистрация: 13.06.2015
Сообщений: 47
11.09.2018, 09:21  [ТС]
Цитата Сообщение от Рядовой Посмотреть сообщение
дак вы определитесь
Под не скрывать, я имел ввиду не нужно показывать рубашку карты.
После правильного соотношения карты исчезают и виден бекграунд формы. Чтоб карточки не мазолили глаза.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.09.2018, 09:21
Помогаю со студенческими работами здесь

Двойное срабатывание по клику на PictureBox
Есть PictureBox в виде мишени,я написал что то типа тира,вот код подсчета очков if (e.X &gt; 0 &amp;&amp; e.X &lt; 21 || e.X &gt; 143) ...

Отобразить картинку в PictureBox по клику
подскажите как реализовать код, чтобы при нажатии на ріcturebox , в последнем отображалась нужная мне картинка х, не в функции private...

Изменение размера PictureBox по клику мыши
...Доброго времени суток, уважаемые форумчане... Возник вопрос: возможно ли сделать так, чтобы по клику PictureBox разворачивался на весь...

Смена картинки в PictureBox по клику в строке DataGridView
у меня есть List привязанный к DGV, нужно при нажатии на строку, вывести в MassageBox или в PictureBox поменять картинку. У меня лист...

Рандомная смена картинки в PictureBox по клику на кнопку
С# При нажатии на кнопку в pictureBox рандомно меняются картинки.


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru