Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
irina__26
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 18
1

Игра угадай слово по буквам. Выдает ошибку в procedure FormCreate(Sender: TObject);

19.05.2015, 13:37. Просмотров 1083. Ответов 9
Метки нет (Все метки)

Delphi
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);  //тут ошибку выдает
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
    vopros: array[1..7] of string = ('Компонент, который управляет программой',
   'Компонент в котором отображается текстовая информация',
    'Это назначение есть у  всех компонентов, его свойство Font',
     'Компонент, предназначенный для выбора/установления функции',
    'Color-это..?', 'Набор однородных элементов, расположенных друг под другом последовательно - это..?',
     'Что за назначение у компонента String Grid со свойством Salse?');
    mas: array[1..7] of string = ('кнопка', 'таблица', 'шрифт', 'флажок',
    'цвет', 'список', 'ячейки');
      //заполненны сразу массив
 
  GroupBox: TGroupBox; //динамическая GroupBox
  i: Byte; //для цикла
  slmas: Integer; //слово, то есть случайный элемен массива
  pvsyg: Integer; //правильно угаданные все (так как буквы повторятся в слове)
  kolp: Byte; //для кол-ва попыток
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  // выбор случайного слова (случайного элемента массива)
  slmas := 1 + Random(7);
  Label1.Caption := 'Допустимо не более 5 ошибок )';
 
 
  // обнулим переменные что для подсчета
  pvsyg := 0;
  kolp:= 0;
 
    GroupBox := TGroupBox.Create(Self);
  with GroupBox do
  begin
    Name := 'GroupBox';
    Parent := Self;
    Left := 10;
    Top := 10;
    Width := 438;
    Height := 80;
    Font.Size := 10;
    Caption := 'Компьютер загадал слово из ' + IntToStr(Length(mas[slmas])) +
      ' букв';
  end;
 
  LabelVopros.Caption := vopros[slmas];
 
    for i := 1 to Length(mas[slmas]) do
    with TPanel.Create(Self) do
    begin
      Left := 40 * i;
      Top := 24;
      Width := 35;
      Height := 41;
      Font.Size := 16;
      Visible := False; //скроем пока на время
      Caption := mas[slmas][i]; //раздадим слово по буквам из массива
      Parent := GroupBox;
    end;
 
  for i := 1 to Length(mas[slmas]) do
    with TBevel.Create(Self) do
    begin
      Left := 40 * i;
      Top := 24;
      Width := 35;
      Height := 41;
      Style := bsRaised;
      Parent := GroupBox;
    end;
 
  //==============================================================================
  // Восстановим в цикле все кнопки для нажатий
  //==============================================================================
  for i := 0 to ComponentCount - 1 do
    if Components[i] is TButton then
      (Components[i] as TButton).Enabled := True;
 
  // а эту кнопку наоборот заблокируем
  Button1.Enabled := False; //отключим на время
end;
 
procedure TForm1.Button2Click(Sender: TObject);
   var
  i: integer;
  f: boolean;
begin
  //==============================================================================
  // Все обработчики кнопок на Button2 кнопке
  //
  //==============================================================================
 
  f := False;
  for i := 0 to ComponentCount - 1 do
    if Components[i] is TPanel then
      if (Components[i] as TPanel).Caption = (Sender as TButton).Caption then
      begin
        (Components[i] as TPanel).Visible := True;
        f := True;
        Inc(pvsyg); //инкримент для всех букв и те что повторяются в слове тоже
      end;
  if f then
    Label1.Caption := 'Молодец, угадал - ' + (Sender as TButton).Caption
  else
  begin
    Label1.Caption := 'Буквы - ' + (Sender as TButton).Caption + ' здесь нет';
    Inc(kolp); //инкримент на попытки угадать
  end;
  (Sender as TButton).Enabled := False;
 
  if pvsyg = Length(mas[slmas]) then
  begin
    Button1.Enabled := True;
    Button1.Caption := 'Новая игра?';
    ShowMessage('Угадано! ' + mas[slmas]);
    //=========================================================================
    // Слово уже угадано в цикле заблокируем все кнопки пока они ненужны
    // кроме кнопки что включит игру
    //=========================================================================
    for i := 0 to ComponentCount - 1 do
      if Components[i] is TButton then
        (Components[i] as TButton).Enabled := False;
 
    Button1.Enabled := True; //а эту снова включим
  end;
  Caption := 'Открыто ' + IntToStr(pvsyg) + ' букв из ' +
    IntToStr(Length(mas[slmas]));
 
  if kolp = 5 then
  begin
 MessageBox(Handle, PAnsiChar( 'Вы проиграли, названо 5 неправильных букв, ' + #13#10 +
   'компьютер загадал - ' + mas[slmas]), 'Справка', MB_OK + MB_ICONINFORMATION);
 
 
       for i := 0 to ComponentCount - 1 do
      if Components[i] is TButton then
        (Components[i] as TButton).Enabled := False;
 
    Button1.Enabled := True; //а эту снова включим
    Button1.Caption := 'Новая игра?'; //и переименуем
    Label1.Caption:= 'Для старта игры- нажмите новая игра!';
  end;
end;
 
end.
//удалить групбокс
for i := ComponentCount - 1 downto 0 do
  if Components[i] is TGroupBox then
    Components[i].Free;
 
//включить все кнопки
for i := 0 to ComponentCount - 1 do
  if Components[i] is TButton then
    (Components[i] as TButton).Enabled := True;
 
end;
 
end.
 
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize; //для рандома
  Button1.Click; //загрузим игру сразу при запуске
  Button1.Caption := 'Игра загружена!';
  Button1.Enabled := False; //сменить слово нельзя
end;
 
end.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2015, 13:37
Ответы с готовыми решениями:

выдает ошибку в строке PROCEDURE TForm1.Button1Click(Sender: TObject);
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes,...

Показывает ошибку в procedure Form2Button1Click(Sender: TObject);
unit Unit2; interface uses Windows, Messages, SysUtils, Variants,...

Выдаёт ошибку на процедуре procedure FromImage3Click(Sender: TObject);, говорит, что такой не может найти
nit Unit2; interface uses Windows, Messages, SysUtils, Variants,...

Procedure TForm1.Button3Click(Sender: TObject);
procedure TForm1.Button3Click(Sender: TObject); begin tab1.cells:=Edit1.text;...

procedure TForm1.Edit1Change(Sender: TObject);
edit должен увеличиваться ,если в него вводят больше букв,чем он однавременно...

9
Immo
186 / 185 / 92
Регистрация: 02.10.2012
Сообщений: 827
19.05.2015, 13:50 2
сообщение ошибки какое?
0
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
20.05.2015, 00:30 3
в 169 строке уже стоит конец программы (end с точкой).
О каких ещё процедурах ПОСЛЕ него может идти речь?!

проверяй баланс открывающих BEGIN и закрывающих END
1
northener
пофигист широкого профиля
3427 / 2326 / 631
Регистрация: 15.07.2013
Сообщений: 13,776
20.05.2015, 00:34 4
Цитата Сообщение от Sergio Leone Посмотреть сообщение
в 169 строке уже стоит конец программы (end с точкой).
А ты глазастый, однако!
Я этого не заметил вчера, хотя смотрел.
1
irina__26
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 18
21.05.2015, 21:57  [ТС] 5
спасибо) Эту ошибку исправила, правда сейчас другая проблема.нажимаю буквы-никакой реакции
0
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
21.05.2015, 22:11 6
Цитата Сообщение от irina__26 Посмотреть сообщение
Эту ошибку исправила, правда сейчас другая проблема.нажимаю буквы-никакой реакции
но оно хотя бы запускается?
Тогда выложи архив с исходником проекта.
0
NIKOLAYY
819 / 717 / 339
Регистрация: 22.09.2012
Сообщений: 4,995
22.05.2015, 06:56 7
Цитата Сообщение от irina__26 Посмотреть сообщение
проблема.нажимаю буквы-никакой реакции
Там в программе на кнопках заглавные буквы, а в массиве у тебя слова из мелких букв вот и получается Б неравно б а раз буква ненайдена то и реакции нету.

Как вариант решить проблему это выровнять регистр или использовать сравнение без учета регистра.
Если можеш архив положить, тогда быстрее будет поправить в нужном месте.
1
irina__26
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 18
22.05.2015, 13:48  [ТС] 8
с буквами я исправила, как мне сказали. Но все равно..
0
Вложения
Тип файла: rar играаа.rar (191.2 Кб, 5 просмотров)
Zombi_sib
365 / 319 / 88
Регистрация: 26.05.2010
Сообщений: 744
Завершенные тесты: 1
22.05.2015, 14:58 9
Лучший ответ Сообщение было отмечено irina__26 как решение

Решение

Вот архив с исправлением теперь кнопки с буквами работают
1
Вложения
Тип файла: rar играаа_с_исправлением.rar (567.2 Кб, 23 просмотров)
irina__26
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 18
22.05.2015, 22:17  [ТС] 10
Спасибо Вам огромное!)
0
22.05.2015, 22:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2015, 22:17

Ошибка в строке: procedure TForm1.Button1Click (Sender: TObject)
Пишет ошибку в строке: procedure TForm1.Button1Click (Sender: TObject); ...

Как создать процедуру procedure RadioButtonClick(Sender: TObject);?
procedure RadioButtonClick(Sender: TObject); //Как общую процедуру сделать?

Не могу понять в чём ошибка procedure Form2FormCreate(Sender: TObject);
unit Unit2; interface uses Windows, Messages, SysUtils, Variants,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru