Создание интерактивного Web-сайта (игра "Tetravex")

Контрольная работа - Компьютеры, программирование

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

° написана на языках VBScript и JavaScript.

Но т.к. VBScript не является полнофункциональным языком программирования и использования встроенных в него средств недостаточно. Используются специальные объекты и компоненты ActiveX. Эти объекты инициализируются и предоставляются ASP-скрипту автоматически при начале обработки, обеспечивают доступ к основным жизненно важным функциям:

Объект Session - позволяет сохранять данные, связанные с отдельным пользователем. В объекте Session(UID) хранится логин пользователя, в Session(Name) хранится имя пользователя, в объекте Session(PW) - его пароль.

Объект Request - предоставляет параметры CGI-запроса, отправленные методом POST или GET, используется когда необходимо получить, занести в базу данные, введенные пользователем.

Объект Response - предоставляет методы для добавления информации, а также для формирования заголовков страницы ответа Web-сервера.

Объект Server - содержит множество различных методов, одним из которых является метод CreateObject, позволяющий создавать экземпляры компонент ActiveX

Объект Location - обеспечивает доступ к URL-адресу текущей страницы, с помощью одного из методов объекта можно осуществлять перезагрузку текущей страницы.

Информация о пользователях хранится в базе данных с именем Users.mdb. База данных состоит из двух таблиц: Users - в которой хранится информация о пользователях (PW- пароль, Name - имя пользователя) и Stats - таблица рейтинга (GAMES_PLAYED общее число игр, GAMES_COMPLETED число успешно завершённых игр, LAST_TIME время последней игры). Обе таблицы содержат поле: UID - логин.

Добавление записи пользователя в базу данных

При регистрации пользователя происходит проверка, есть ли такой пользователь в базе, если нет, то данные записываются в базу[2].

 

Set Conn=Server.CreateObject("ADODB.Connection")dbpath = Server.MapPath("Users.mdb") .Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath=" INSERT into Users (UID,PW,Name) values (" =SQL & "" & Request("UID")& ","=SQL & "" & Request("PW") & ","=SQL & "" & Request("Name")& ")".Execute(SQL)

 

Аналогичный код используется и при добавлении пользователя в таблицу результатов. Только строка запроса будет иметь иной вид:

 

SQL="INSERT into Stats (UID, NAME,GAMES_PLAYED, GAMES_COMPLETED, LAST_TIME) values("=SQL & ""& Request("UID")&","=SQL & ""&Request("Name")&","=SQL & "0,"=SQL & "0,"=SQL & "0)"

 

Игра

 

Игра описывается в клиентском скрипте написанном на языке JavaScript.

Переменные completedgames, playedgames и gttextbox отвечают за количество успешных игр, общее количество игр и время последней игры.

Функция GeneratePlayingField генерирует игровое поле.

 

Function GeneratePlayingField()

{= document.createElement( table );.style.border = "1px solid #808080";= document.createElement( tbody );( y = 0; y < BoardY; ++y )

{ Row = document.createElement( tr );( x = 0; x < BoardX; ++x )

{//Создание ячейки= document.createElement( td );.setAttribute( id , "Cell_" + x + "x" + y );.appendChild( document.createTextNode( "\u00a0" ) );.style.border = "1px solid #808080";.style.padding = "0px";.style.margin = "0px";.style.width = CellSize + "px";.style.height = CellSize + "px";.appendChild( Cell );}.appendChild( Row );}.appendChild( Tbody );.appendChild( Table );.appendChild( Div );= document.createElement( table );.style.border = "1px solid #808080";= document.createElement( tbody );( y = 0; y < BoardY; ++y )

{Row = document.createElement( tr );( x = 0; x < BoardX; ++x )

{Cell = document.createElement( td );.setAttribute( id , "StartCell_" + x + "x" + y );.appendChild( document.createTextNode( "\u00a0" ) );.style.border = "1px solid #808080";.style.padding = "0px";.style.margin = "0px";.style.width = CellSize + "px";.style.height = CellSize + "px";.appendChild( Cell );}.appendChild( Row );}.appendChild( Tbody );.appendChild( Table );.appendChild( Div );.appendChild( PlayingField );}

 

Функция IsGameComplete отвечает за проверку успешного завершения игры.

 

{ for ( x = 0; x < BoardX; ++x )( y = 0; y < BoardY; ++y )

{ var CellID = "Cell_" + x + "x" + y;Cell = document.getElementById( CellID );( Cell.Occupier == null ) false; }

return true;}

 

Подсчет статистики игры

Количество успешных игр, общее количество игр и время последней игры передается через HTTP запрос со страницы игры и записывается в переменные.

 

gtnew=Request("gttextbox")=Request("completedgames")=Request("playedgames")

 

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

 

SQL= "Select * from Stats Where UID="&Session("UID")&"".Open SQL, Connnot RS.EOF then=RS.Fields("GAMES_PLAYED") =RS.Fields("GAMES_COMPLETED")=RS.Fields("LAST_TIME")

 

После того как мы получили необходимые данные, нужно пересчитать текущие значения рейтинга.

 

gtnew=gtnew+gtold=pgnew+pgold=cgnew+cgold

 

После того как мы все пересчитали, нужно обновить значения в базе данных:

SQL= "UPDATE Stats Set GAMES_PLAYED="& pgnew &", GAMES_COMPLETED="& cgnew &", LAST_TIME="& gtnew &" Where UID="&Session("UID")&""

 

А затем вывести на экран обновленный рейтинг, для этого выполняем запрос из базы данных.

 

SQL= "Select * from Stats order by GAMES_PLAYED Desc".Open SQL, Conn открываем Recordset

<%

Do While Not RS.EOF перебираем все записи

"& RS.Fields("