Разработки программы, реализующей игру "Слова"

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

тавляется из символов внутри StringGrid2

Рассматриваем StringGrid2 как строку и заполняем tempS, исходя из наличия в StringGrid2 символов}

for i:=0 to StringGrid2.ColCount do Begin:=tempS+StringGrid2.Cells[i,0];

{Очищаем пробелы из TempS}j:=length(tempS) downto 1 do Beginpos( ,tempS)>0 then delete(tempS,pos( ,tempS),1);

end;; //Закончили работу с TempS

{Проверяем соответствие TempS и ZagadalTemp. В обоих строках удалены пробелы

и остается проверять только на символы. Если они совпали, значит пользователь угадал слово

и выводится сообщение - Ты победил}

if tempS=ZagadalTemp then Begin(Победа);

end;.Cells[ACol,ARow]:=; //Очищаем нажатую ячейку от Буквы, чтоб не нажимали тысячи раз уже нажатую

end;TForm1.Button1Click(Sender: TObject);i,j:Integer;: TStringGrid;

begin; //Наша процедура, заполняющая таблицу Буквами

i:=1;; odd(i) do i:=Random(S.Count-1); //Это строка проверяет i на нечетнссть.

{Так как вопросы нечет - Вопрос, Чет - ответ, логично Выбирать вопросы из нечетной

строки, а ответы из четной. Пока i не примет нечетное значение идет выборка i

случайным образом}.Caption:=S.Strings[i]; //Вопрос выбран, отображаем его в Label1:=(S.Strings[i+1]); //Запоминаем ответ для в вопроса в глобальную переменную:=Zagadal; //Это тот же ответ, только в нем мы исключим пробелы.ColCount:=length(S.Strings[i+1]); //Отображаем в StringGrid2 столько ячеек сколько символов в ответе.Width:=length(S.Strings[i+1])*StringGrid2.DefaultColWidth+15; //Меняем ширину в зависимости от длины ответа

0thenDelete(ZagadalTemp,pos(,ZagadalTemp),1);">for i:=0 to StringGrid2.ColCount do StringGrid2.Cells[i,0]:=; //При нажатии на кнопку очищаем StringGrid2 от прошлого ответаj:=length(ZagadalTemp) downto 1 do //Удаляем пробелы из ZagadalTemppos( ,ZagadalTemp)>0 then Delete(ZagadalTemp,pos( ,ZagadalTemp),1);

end;

{Созданная нами процедура заполняет StringGrid1 ,буквами}

procedure TForm1.zapolnenie;i,j,k:Integer;

begin:=192; // 192 - это Числовой код Буквы А. Заполняем нашу таблицу буквами А..Я

for j:=0 to 3 do Begin //4 строкиi:=0 to 7 do StringGrid1.Cells[i,j]:= +chr(I+k); k:=k+8;i:=i+1; //8 колонок

end;

{===============}:=TStringList.Create; //Создаем контейнер для хранения строк.LoadFromFile(HMRusBase.txt); //Загружаем в него весь текстовый файл; //Запускаем генератор случайных значений;

=StringGrid.FixedRows)and(ACol>=StringGrid.FixedCols)Can.Brush.Color:=StringGrid.ColorCan.Brush.Color:=StringGrid2.Color;ActiveControl=Senderthen//""(gdSelectedinState)then.Font.Color:=0;.Brush.Color:=StringGrid1.Color;;.FillRect(Rect);.TextOut(Rect.Left+2,Rect.Top+2,StringGrid.Cells[ACol,ARow]);">{Процедура для StringGrid2 из вкладки Events. Убирает выделение с ячейки}TForm1.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;: TRect; State: TGridDrawState);: TStringGrid;: TCanvas;:= Sender as TStringGrid;:= StringGrid.Canvas;.Font := StringGrid.Font;(ARow >= StringGrid.FixedRows) and (ACol >= StringGrid.FixedCols)Can.Brush.Color := StringGrid.ColorCan.Brush.Color := StringGrid2.Color;ActiveControl = Sender then // Эта строка "выключает" выделение(gdSelected in State) then.Font.Color := 0;.Brush.Color := StringGrid1.Color;;.FillRect(Rect);.TextOut(Rect.Left+2,Rect.Top+2, StringGrid.Cells[ACol, ARow]);

end;

{Игнорируем нажатие стрелок на клавиатуре, для исключения переходов по таблице через них}

procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;: TShiftState);(Key=VK_Up) or (Key=VK_Down) or (Key=VK_Left) or (Key=VK_RIGHT) then Key:=VK_Shift;;TForm1.Button3Click(Sender: TObject);

beginMessageDlg(Выходим из программы ?,

mtConfirmation, [mbYes, mbNo], 0) = mrYesclose;;TForm1.Button2Click(Sender: TObject);();;.

 

Отладка

 

Отладка программы Игра в слова

0thendelete(tempS,pos(,tempS),1);end;iftempS=ZagadalTempthenBeginShowMessage();end;5StringGrid1.Cells[ACol,ARow]:=;">№Тип ошибкиПримерРешение1Логическая ошибкаНе отображается русский алфавит в таблицеЗаполняем нашу таблицу буквами А..Я begin k:=192; for j:=0 to 3 do Begin //4 строки for i:=0 to 7 do StringGrid1.Cells[i,j]:= +chr(I+k); k:=k+8;i:=i+1; //8 колонок end;2Логическая ошибкаПри нажатии на кнопку новая игра не очищались прошлые слова Были добавлены следующие строки, for i:=0 to StringGrid2.ColCount do StringGrid2.Cells[i,0]:=;3Логическая ошибкаПри загрузке слов из текстового файла выводилась ошибкаИсправлена ошибка неверного чтения из файла.4Логическая ошибкаКогда пользователь угадал слово программа сравнивала загаданное слово не с тем что выбирал пользователь.sTemps - переменная хранящая слово угадывающее пользователем for j:=length(tempS) downto 1 do Begin if pos( ,tempS)>0 then delete(tempS,pos( ,tempS),1); end; if tempS=ZagadalTemp then Begin ShowMessage(Победа); end;5Логическая ошибкаКогда пользователь выбирал букву она оставалась в таблицеБыло добавлено StringGrid1.Cells[ACol,ARow]:=;

Тестирование

 

№Название тестаНормальные условияКритические условияЭкстремальные условия1Загрузка слова из файла Производится загрузка слова из файла и сравнивается с буквами, которые вводит пользователь.Производится загрузка слова из некорректного файла - Вывод сообщения об ошибке.Загрузка слова из несуществующего файла - Вывод сообщения об ошибке.2Загрузка подсказки из файла.Производится загрузка подсказки из файла и сравнивается с буквами, которые вводит пользователь.Производится загрузка подсказки из некорректного файла - Вывод сообщения об ошибке.Загрузка подсказки из несуществующего файла - Вывод сообщения об ошибке.3Выбор буквы в таблицеБуква корректно выбирается и пропадает из таблицы.Выбор уже отсутсвующей буквы не возможен.Если пользователь выберет неправильную букву, то буква не пропадет

Руководство пользователя

программа развивающая игра слово

Запуск программы.

Запускаем файл igra_v_slova.exe. Вам откроется фоновый режим программы.

 

 

После запуска игры откроется следующая форма:

 

Необходимо нажат?/p>