Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.74/50: Рейтинг темы: голосов - 50, средняя оценка - 4.74
162 / 162 / 11
Регистрация: 07.09.2011
Сообщений: 995

Математическая викторина (помогите определить, где ошибка)

07.09.2011, 09:48. Показов 10052. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Взялся осваивать С#, поставил визуал студию 2010 экспресс. Читаю книгу, азы в консоле и паралельно решил немного поиграться в экспресс шарпе.

Делаю математическую викторину по шаблону. Вроде всё верно делаю, но встаёт ошибка:
Ошибка 1 Тип "WindowsFormsApplication1.Form1" уже содержит определение для "timeLeft"*:\******\**********\MathGame\ Golovolomka\Golovolomka\Form1.Designer.c s 335 44 Golovolomka
вот отрезок:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Random randomizer = new Random();
 
        int addend1;
        int addend2;
 
        int timeLeft;
 
        public void StartTheQuize()
        {
            addend1 = randomizer.Next(51);
 
            addend2 = randomizer.Next(51);
 
            plusLeftLabel.Text = addend1.ToString();
            plusRightLabel.Text = addend2.ToString();
            sum.Value = 0;
 
            timeLeft = 30;
            timeLabel.Text = "30 seconds";
            timer1.Start();
        }
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void startButton_Click(object sender, EventArgs e)
        {
            startButton.Enabled = false;
            StartTheQuize();
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (timeLeft > 0)
            {
                timeLeft = timeLeft - 1;
                timeLabel.Text = timeLeft + " seconds ";
            }
            else
            {
                timer1.Stop();
                timeLabel.Text = "Time's up!";
                MessageBox.Show("You didn't finish in time.", "Sorry");
                sum.Value = addend1 + addend2;
                startButton.Enabled = true;
            }
        }
    }
}
Прошу прощения если сглупил или не предоставил нужной информации. Если нужно что нибудь добавить - скажите. Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.09.2011, 09:48
Ответы с готовыми решениями:

Игра-викторина, как это можно реализовать самым оптимальным образом?
Задумал сделать что то типо викторины, игры с вопросами и 4 вариантами ответа....Как это можно...

Викторина: вопросы реализации
Мне надо, сделать мини викторину типо, когда были первые выборы в Украине? и четыре варианта...

Викторина
Ребят , вот решил создать Викторину . все понятно но есть 1 вопрос ! 1) вот я поставил...

27
162 / 162 / 11
Регистрация: 07.09.2011
Сообщений: 995
13.09.2011, 11:36  [ТС]
Студворк — интернет-сервис помощи студентам
Да, нашёл немного инфы. Используя F11 я могу проходить все этапы компиляции. Удобно, хотя и долго. Надо будет поглядеть как пользоваться, чтобы выбирать искомый промежуток для проверки. А с счётчиком ничего не ясно.... оставлю наверное пока данный проект, пойду по следующему, который предлагает майкрософт.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
13.09.2011, 17:11
Цитата Сообщение от Lovrentiy Посмотреть сообщение
Используя F11 я могу проходить все этапы компиляции. Удобно, хотя и долго
F10 позволяет проходить пошагово без входа в тело метода.

Цитата Сообщение от Lovrentiy Посмотреть сообщение
Надо будет поглядеть как пользоваться, чтобы выбирать искомый промежуток для проверки
F9 - точка останова на строке с курсором, при отладке программы, происходит остановка выполнения, когда код "придет" в установленную точку.
1
162 / 162 / 11
Регистрация: 07.09.2011
Сообщений: 995
14.09.2011, 07:40  [ТС]
Беда с авторизацией на форуме, потерял текст =(

Начал новый проект, по форме, игра "найди пару".

Всё сделанно, ошибок нет, но не выполняется ряд условий. Не могу разобраться где ошибка. Немного недогоняю логику, но вроде всё верно.

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

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

Код из форма.цс:
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Random random = new Random();
 
        Label firstClicked = null;
 
        Label secondClicked = null;
 
        List<string> icons = new List<string>()
        {
            "!", "!", "N", "N", ",", ",", "k", "k",
            "b", "b", "v", "v", "w", "w", "z", "z"
        };
 
        public Form1()
        {
            InitializeComponent();
            AssignIconsToSquares();
        }
 
        private void AssignIconsToSquares()
        {
            foreach (Control control in tableLayoutPanel1.Controls)
            {
                Label iconLabel = control as Label;
                if (iconLabel != null)
                {
                    int randomNumber = random.Next(icons.Count);
                    iconLabel.Text = icons[randomNumber];
                    iconLabel.ForeColor = iconLabel.BackColor;
                    icons.RemoveAt(randomNumber);
                }
            }
        }
 
        private void label_Click(object sender, EventArgs e)
        {
            if (timer1.Enabled == true)
                return;
 
            Label clickedLabel = sender as Label;
 
            if (clickedLabel != null)
            {
                
                if (firstClicked == null)
                {
                    firstClicked = clickedLabel;
                    firstClicked.ForeColor = Color.White;
                }
 
                secondClicked = clickedLabel;
                secondClicked.ForeColor = Color.White;
 
                if (clickedLabel.ForeColor == Color.White)
                    return;
              
 
 
                if (firstClicked.Text == secondClicked.Text)
                {
                    firstClicked = null;
                    secondClicked = null;
                    return;
                }
 
                CheckForWinner();
 
                timer1.Start();
 
            }
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Stop();
 
            firstClicked.ForeColor = firstClicked.BackColor;
            secondClicked.ForeColor = secondClicked.BackColor;
 
            firstClicked = null;
            secondClicked = null;
        }
 
        private void CheckForWinner()
        {
            foreach (Control control in tableLayoutPanel1.Controls)
            {
                Label iconLabel = control as Label;
 
                if (iconLabel != null)
                {
                    if (iconLabel.ForeColor == iconLabel.BackColor)
                        return;
                }
            }
 
            MessageBox.Show(" Ты нашёл все изображения", "Поздравляю!");
            Close();
        }
 
        }
 
 
    }
0
 Аватар для Ereona
374 / 135 / 19
Регистрация: 16.07.2010
Сообщений: 342
14.09.2011, 08:32
По-моему, ошибка в строчках
C#
1
2
3
4
5
6
7
8
                if (firstClicked == null)
                {
                    firstClicked = clickedLabel;
                    firstClicked.ForeColor = Color.White;
                }
 
                secondClicked = clickedLabel;
                secondClicked.ForeColor = Color.White;
Тут где-то должен быть или else, или return. А так получается, что мы обеим переменным (и firstClicked, и secondClicked) присваиваем одно и тоже значение, меняем цвет на белый, а потом проверяем, а не белый ли цвет?
C#
1
2
                if (clickedLabel.ForeColor == Color.White)
                    return;
И выходим из метода.
0
162 / 162 / 11
Регистрация: 07.09.2011
Сообщений: 995
14.09.2011, 09:30  [ТС]
Всё верно. Игра "найди пару" к тому и сводится, чтобы при нажатии на лабел (firstClicked) становилась белой, И не меняла своего цвета пока не кликнем второй раз (secondClicked) на другом лабеле, после этого пероходит проверка, если они одинаковые, то остаются белыми, если разные, то снова меняют цвет.


правда даже при построении меня смутила эта часть кода:

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
  private void label_Click(object sender, EventArgs e)
        {
            if (timer1.Enabled == true)
                return;
 
            Label clickedLabel = sender as Label;
            
            //Проверка лабела
            if (clickedLabel != null)
            {
                //проверка лабела при первом клике
                if (firstClicked == null)
                {
                    firstClicked = clickedLabel;
                    firstClicked.ForeColor = Color.White;
                }
 
                //Просто второй клик? без проверок? только с ориентировкой на  if (clickedLabel != null)?
                secondClicked = clickedLabel;
                secondClicked.ForeColor = Color.White;
 
                //Проверка если белый, то возвращает к фону
                if (clickedLabel.ForeColor == Color.White)
                    return;
              
 
                //Проверяет если текст лабела первого клика равень тексту лабела второго клика = возвращение в начало возвращено к белому
                if (firstClicked.Text == secondClicked.Text)
                {
                    firstClicked = null;
                    secondClicked = null;
                    return;
                }
 
                //Проверка на победу, отсылка в дрйгую часть кода
                CheckForWinner();
                
                //Начало таймера, с задержкой в 750мс 
                timer1.Start();
 
            }
        }
0
162 / 162 / 11
Регистрация: 07.09.2011
Сообщений: 995
15.09.2011, 11:13  [ТС]
Видит кто нибудь, где пропуск у меня логический?
0
 Аватар для Ereona
374 / 135 / 19
Регистрация: 16.07.2010
Сообщений: 342
15.09.2011, 11:49
Проблема в том, что дальше строчки 24 код никогда не уйдет. Если цвет белый (а он точно белый, потому что мы сделали его таким двумя строчками выше), то мы выходим из метода. Попробуй все-таки воспользоваться отладкой!
На мой взгляд этот участок кода должен выглядеть примерно так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
           //если цвет уже белый, ничего не делаем
                if (clickedLabel.ForeColor == Color.White)
                    return; 
                //если это первый лабел, запоминаем его, меняем цвет и выходим       
                if (firstClicked == null)
                {
                    firstClicked = clickedLabel;
                    firstClicked.ForeColor = Color.White;
                    return;
                }
                //запоминаем второй лабел и меняем его цвет
                secondClicked = clickedLabel;
                secondClicked.ForeColor = Color.White;
 
                //теперь уже сравниваем текст и т.д.
0
162 / 162 / 11
Регистрация: 07.09.2011
Сообщений: 995
15.09.2011, 12:24  [ТС]
Не умею правильно пользоваться отладкой =( Попробовал разные варианты, выходит что код не выполняется ДО момента проверки белы-фоновый для переворота. В итоге он выполняет только тот кусок, который отвечает за клик на лабеле и смене цвета.

Я приболел, голова не варит. Завтра посмотрю ещё раз с начала, думаю найду. Ежели что, напишу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.09.2011, 12:24

Викторина: переход к следующему пункту при правильном ответе
Вот я делаю Викторину ! и возникла большая проблема ! суть проблемы: 1) при правильном ответе...

Викторина. Реализовать смену вопроса при нажатии на кнопку
Привет делаю лабу, надо сделать викторину. я начал писать код, вот код using System; using...

Викторина угадывания пропущенной буквы
Здравствуйте, помогите реализовать или помогите советом Дана картинка и слово с пропущенной...

Викторина
Кто-то сталкивался с созданием викторины на C#? Может, знаете, как сделать так, чтобы при появлении...

Приложение "Викторина"
Можете привести примеры викторины, где вопросы берутся из текстового файла , и идет подсчет очков...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru