Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
irina__26
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 18
#1

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

19.05.2015, 13:37. Просмотров 973. Ответов 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 FormCreate(Sender: TObject); (Delphi):

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

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

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

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

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

Игра "Угадай слово по буквам". В чем ошибка? - Delphi
Const N=32; //Количество букв-кнопок Type STR_30=String; Var Btn: TButton; // Переменной для создания кнопок STR_N, // Зашифрованное...

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

проверяй баланс открывающих BEGIN и закрывающих END
1
northener
пофигист широкого профиля
3244 / 2296 / 496
Регистрация: 15.07.2013
Сообщений: 13,541
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
2461 / 1106 / 403
Регистрация: 07.06.2014
Сообщений: 3,259
21.05.2015, 22:11 #6
Цитата Сообщение от irina__26 Посмотреть сообщение
Эту ошибку исправила, правда сейчас другая проблема.нажимаю буквы-никакой реакции
но оно хотя бы запускается?
Тогда выложи архив с исходником проекта.
0
NIKOLAYY
818 / 716 / 161
Регистрация: 22.09.2012
Сообщений: 4,994
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
361 / 315 / 46
Регистрация: 26.05.2010
Сообщений: 740
Завершенные тесты: 1
22.05.2015, 14:58 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот архив с исправлением теперь кнопки с буквами работают
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
Привет! Вот еще темы с ответами:

Как создать процедуру RadioButtonClick(Sender: TObject) - Delphi
общая процедура— RadioButtonClick используется одновременно для RadioButton1, RadioButton2, RadioButton3 и RadioButton4, как создать её на...

Как в Delphi 7 вызвать TForm1.N1Click(Sender: TObject)? - Delphi
как в Delphi 7 вызвать TForm1.N1Click(Sender: TObject);

Как передать значение указателя в процедуру (Sender: TObject)? - Delphi
Здравствуйте! Имеется самостоятельно описанная процедура AddFilmList, в которую я хочу передать значение указателя FList : PFilms;. При...

Как правильней создавать указатель на (Sender: TObject).Parent и чем это чревато? - Delphi
Очень часто в обработчиках событий приходится обращаться к Sender, а то и к его паренту ((Sender as TButton).Parent). Чтобы внутри...


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

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

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