Как создать рейтинг игроков?
Когда у Вас функциональная часть игры уже готова, то часто возникает необходимость создать рейтинг игроков. Это делается для того, чтобы пользователи проходили игру много раз стараясь побить чей-то рекорд. Таким образом, игра станет более востребованной. А поскольку дольше будут играть в Вашу игру, то и привыкать к ней будут тоже больше. Так, что для Вас – разработчиков, это идет только на пользу.
Перед тем, как создавать сам рейтинг необходимо собрать нужную информацию о игроке. Например, это может быть: имя игрока, количество набранных очков, дата игры, сложность игры, затраченное время на игру и много другое. Для этого нужно создать переменные, которые будут постоянно хранить в себе эту информацию о игроке. Например:
Var
Score, Level,Vremya:Integer;
Nick:String;
Data:TDateTime;
Далее в эти переменные заносятся сами данные. Мы на этом особо зацикливаться не будем. Там нет ничего сложного – просто присваиваем значения типа:
Nick:=Edit1.text;
В данном случае мы взяли имя игрока из компонента эдит и присвоили это имяв переменную. Итак, будем считать что игра закончена и вся информация собрана и присвоена. Далее наступает время создать окно с нашим рейтингом.
Для этого просто добавьте новую форму в проект и расположите на форме один из компонентов Stringgrid, ListBox, Memo. В каждом из этих компонентов можно отображать информацию по строкам. Но компонент Stringgrid позволяет еще и представить информацию в виде таблицы. Поэтому, я предлагаю, остановиться именно на нем.
Допустим, компонент уже находится на новой форме. В свойстве формы Caption напишите ее заголовок типа «Рейтинг игроков». Далее в событии таблицы fixedCols напишите 0. Таким образом у нас будет выделена только первая строка. В ней будут храниться заголовки столбцов. Теперь определитесь сколько информации будет хранится и отображаться в рейтинге. Например, мы решили так: Имя игрока, количество набранных очков, время затраченное на игру, сложность и дата. Таким образом получается 5 столбцов. Значит в событии таблицы ColCount напишите 5.
Теперь нам нужно определить где мы будем хранить наши данные о всех игроках. Лучше всего это хранить в файле. Например, в текстовом файле или базе данных. Мы рассмотрим первый вариант. Создайте пустой текстовый документ и назовите его “reyting.txt”и положите в папку с игрой. После завершения игры вы должны загрузить этот рейтинг например в мемо. При этом не забыайте его очищать перед загрузкой. И обязательно поставте прокрутку, иначе ваши строки будут обрезаться. Поставьте свойство ScrollBars в значение ssBoth. После того, как загрузили в него данные из файла допишите далее данные о новом игроке и только после этого пересохраните этот файл. В итоге у Вас получится примерно следующий код:
Memo1.lines.clear;
Memo1.lines.loadfromfile(‘reyting.txt’);
Memo1.lines.add(Nick);
Memo1.lines.add(inttostr(Score));
Memo1.lines.add(inttostr(Vremya));
Memo1.lines.add(inttostr(Level));
Memo1.lines.add(Datetostr(Data));
Memo1.lines.saveFromfile(‘reyting.txt’);
Далее при открытии формы с нашим рейтингом все данные должны загрузиться и отобразиться в таблицу. Для этого при клике кнопки «Рейтинг» прописываем следующее:
Form2.Memo1.lines.clear;
Form2.memo1.lines.loadfromfile(‘reyting.txt’);
Так мы загрузили данные. Теперь давайте получим столько строк с игроками у нас должно быть. Для этого кол-во строк в мемо нужно разделить на 5 (количество столбцов). И иногда нужно еще добавить единицу (если в файле в конце пустая строка появляется).
Stroki:=form2.memo1.lines.count div 5;
Form2.stringgrid1.RowCount:=Stroki;
После всего выше сказанного, начинаем расставлять данные в таблице следующим образом
For j:=0 to Stroki-1 do
Begin
Form2.Stringgrid1.cells[0,j+1]:=form2.memo1.lines.strings[j*5];
Form2.Stringgrid1.cells[1,j+1]:=form2.memo1.lines.strings[j*5+1];
Form2.Stringgrid1.cells[2,j+1]:=form2.memo1.lines.strings[j*5+2];
Form2.Stringgrid1.cells[3,j+1]:=form2.memo1.lines.strings[j*5+3];
Form2.Stringgrid1.cells[4,j+1]:=form2.memo1.lines.strings[j*5+4];
End;
Теперь все данные расставлены в таблице, но еще есть необходимость написать заголовки столбцов делаем это следующим образом:
Form2.Stringgrid1.cells[0,0]:=’Имя’;
Form2.Stringgrid1.cells[1,0]:=’Кол-во Очков’;
Form2.Stringgrid1.cells[2,0]:=’Время’;
Form2.Stringgrid1.cells[3,0]:=’Сложность’;
Form2.Stringgrid1.cells[4,0]:=’Дата’;
Ну и в общем все. Ваш рейтинг готов. Единственній недостаток – это отсутсвие сортировки по количеству набранных очков. Но мы с Вами испраим этот недостаток в следующей статье. А я на этом прощаюсь с Вами. До новых встречь и удачи в Ваших начинаниях по созданию игр!
Автор: Виталий Соколов
Источник: delgame.at.ua
|