Список використаних джерел
Пункти меню повинні відображатися коректно, відповідати нормам й дизайну додатку. Перевірка здійснюється згідно вимог замовника або раніше розроблених тест кейсів. Тестування модуля аналізу й оцінки вікторини в одно-користувальницького режиму. Перевірити корект-ність і простоту відкриття існуючих вікон, пунктів меню, тощо. При переході на будь-яку форму, в її заголовку відображається відповідна… Читать ещё >
Список використаних джерел (реферат, курсовая, диплом, контрольная)
- 1. Эндрю Троелсен Язык программирования C# 5.0 и платформа .NET 4.5. / Эндрю Троелсен — Вильямс 2013 — 1312с.
- 2. Хассан Гома UML — проектування систем реального часу паралельних і розподілених систем / Г. Хассан — Microsoft Press — 2011 — 704 c.
- 3. Суботовський Д. Ю. Використання платформи MONO для розробки програм на платформах Android, IOS / Тези доповідей. Міжнародної науково-практичної конференції молодих вчених, аспірантів та студентів «Інформаційні технології в сучасному світі: дослідження молодих вчених». / Суботовський Д. Ю. — Харків: 12−13 березня 2015. — С. 62.
- 4. Пугачев В. В. Розробки додатків для Windows Phone 7 / В. В. Пугачев, С. Д. Павлов, В. Д. Сошников. -: Microsoft Press — 2012 — 376 c.
- 5. Джозеф Албахари C# 5.0. Справочник. Полное описание языка / Джозеф Албахари, Бен Албахари. — Вильямс. — 2013 — 1008с.
- 6. Джеффри Рихтер CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C# / Д. Рихтер. — Питер 2012 — 734с.
- 7. Robert Sedgewick Algorithms. Algorithms (4th Edition). Addison-Wesley Professional; 4th edition (March 19, 2011) / R. Sedgewick, K. Wayne’s. — 2011. — 992 p.
- 8. Mike PreuB Multimodal Optimization by Means of Evolutionary Algorithms (Natural Computing Series). Springer; 2015 edition (October 5, 2015) / Mike PreuB — 190 p. Програм н
- 9. Adnan Aziz Elements of Programming Interviews: The Insiders' Guide. CreateSpace Independent Publishing Platform; 1st edition (October 11, 2012) / A. Aziz. 2012. — 504 p.
ДОДАТОК
Рис. А.1. Зразок форми «Авторизація та реєстрація користувача»
.
Рис. А.2. Головне вікно програми. Вибір теми та режиму вікторини
Рис. А.3. Вікно одно-користувальницького режиму
Рис. А.4. Вікно багатокористувальницького режиму
Рис. А.5. Таблиця рекордів
Тестування модуля аналізу й оцінки вікторини в одно-користувальницького режиму
Таблиця Б.1 Базовий план тестування.
№. | Назва тесту. | Ціль тестування. | Очікуваний результат. | Результат. | |
Відповідність назви вікна. | Дивитися на відповідність назви вікна наповненню. | При переході на будь-яку форму, в її заголовку повинна відобразитися відповідна назва. | При переході на будь-яку форму, в її заголовку відображається відповідна назва. | ||
Перевірка відображення даних. | Перевірити відображення даних на формах. | Дані повинні відображатися коректно й у відпові-дних місцях. | Дані відображаються коректно й у відпові-дних місцях. | ||
Перевірка пунктів меню. | Перевіряти пункти меню. | Пункти меню повинні відображатися коректно, відповідати нормам й дизайну додатку. | Пункти меню відображаються коректно, відповідають нормам й дизайну додатку. | ||
Таблиця Б.2 Тестування валідації.
№. з/п. | Крок сценарію. | Очікуваний результат. | Отриманий результат. | Відмітка про проходження сценарію. | |
1. | Спроба авторизації при не введеному Login. | Виведення повідомлення про помилку. | Виведення повідомлення про помилку. Авторизація неможлива. | Так. | |
2. | Спроба авторизації при не введеному Password. | Виведення повідомлення про помилку. | Виведення повідомлення про помилку. Авторизація неможлива. | Так. | |
3. | Спроба авторизації при невірно введеному Login. | Виведення повідомлення про помилку. | Виведення повідомлення про помилку. Авторизація неможлива. | Так. | |
4. | Спроба авторизації при невірно введеному Password. | Виведення повідомлення про помилку. | Виведення повідомлення про помилку. Авторизація неможлива. | Так. | |
Таблиця Б.3 Юзабіліті тестування.
№. з/п. | Назва перевірки. | Примітка. | Відмітка про проходження сценарію. | |
Архітектура та навігація. | ||||
1. | Чи відповідає структура додатку цілям, для досягнення яких він призначений? | Структура програми відповідає цілям. | Так. | |
2. | Чи зрозуміла схема навігації? | Схема навігації інтуїтивно зрозуміла. | Так. | |
3. | Чи логічно відсортовані елементи навігаційних панелей? | Елементи відсортовані логічно. | Так. | |
Планування і дизайн. | ||||
1. | Оформлення вікон в одному стилі. | Оформлені в одному стилі. | Так. | |
2. | Дизайн «user-friendly» і естетичний. | Дотримано концепції «user-friendly» та естетичності програмного продукту. | Так. | |
Оформлення тексту. | ||||
Таблиця Б.4 Функціональне тестування.
№. | Назва тесту. | Вхідні параметри. | Очікуваний результат. | Резу-льтат. | |
Навігація. | Перевірити корект-ність і простоту відкриття існуючих вікон, пунктів меню, тощо. | Все відкривається коректно. | Так. | ||
Обробка помилок. | Помилки виконання, некоректного вводу. | Видаються відповідні повідомлення. | Так. | ||
Перевірка основних функцій системи. | Перевірка здійснюється згідно вимог замовника або раніше розроблених тест кейсів. | ||||
Лістинг основних класів програми
Клас TwoPlayer.xaml.cs.
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System. IO;
using System. Linq;
using System.Net.Http;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows. Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkID=390 556.
namespace Quiz.
{.
/// An empty page that can be used on its own or navigated to within a Frame.
public sealed partial class TwoPlayer: Page.
{.
List items;
int randNumb;
int countTrueUnsverP1 = 0;
int countTrueUnsverP2 = 0;
bool P1Unsverd;
bool P2Unsverd;
int touch = 0;
string category;
public TwoPlayer ().
{.
this.InitializeComponent ();
}.
/// Invoked when this page is about to be displayed in a Frame.
/// Event data that describes how this page was reached.
/// This parameter is typically used to configure the page.
protected override void OnNavigatedTo (NavigationEventArgs e).
{.
category = e.Parameter.ToString ();
}.
private void Gen_Quest ().
{.
Random rand = new Random ();
Продовження дод. В.
randNumb = rand. Next (0, items. Count);
txtQuestionP1.Text = items[randNumb]. question;
bttUnsver1P1Text.Text = items[randNumb]. unsver1;
bttUnsver2P1Text.Text = items[randNumb]. unsver2;
bttUnsver3P1Text.Text = items[randNumb]. unsver3;
bttUnsver4P1Text.Text = items[randNumb]. unsver4;
txtQuestionP2.Text = items[randNumb]. question;
bttUnsver1P2Text.Text = items[randNumb]. unsver1;
bttUnsver2P2Text.Text = items[randNumb]. unsver2;
bttUnsver3P2Text.Text = items[randNumb]. unsver3;
bttUnsver4P2Text.Text = items[randNumb]. unsver4;
}.
private void btnUnsverP1(object sender, RoutedEventArgs e).
{.
}.
private async void Page_Loaded (object sender, RoutedEventArgs e).
{.
using (HttpClient httpClient = new HttpClient ()).
{.
HttpRequestMessage request = new HttpRequestMessage ();
httpClient.BaseAddress = new Uri («https://api.parse.com/1/classes/» + category);
request.Method = new HttpMethod («GET»);
request.Headers.Add («X-Parse-Application-Id», «q8r9XYoXbEw1kXsWIXbyCNQm9ylcWfAS0fqlWWNx»);
request.Headers.Add («X-Parse-REST-API-Key», «2nke5LSbXQmTiA9FaVytlBihjOOz4fPcoxjEHlee»);
var response = await httpClient. SendAsync (request);
var text = await response.Content.ReadAsStringAsync ();
System.Diagnostics.Debug.WriteLine (text);
JObject results = JObject. Parse (text);
items = new List ();
foreach (var result in results["results"]).
{.
items.Add (new Classes. Items () { question = (string)result["Question"], unsver1 = (string)result["unsver1"], unsver2 = (string)result["unsver2"], unsver3 = (string)result["unsver3"], unsver4 = (string)result["unsver4"], trueUnsver = (string)result["trueUnsver"] });
//item.Add (new Item () { driveId = (string)result["parentReference"]["driveId"], id = (string)result["parentReference"]["id"], path = (string)result["parentReference"]["path"] });
}.
Gen_Quest ();
}.
}.
private async void NextQuest ().
{.
touch = 0;
Продовження дод. В.
if (P1Unsverd == false && P2Unsverd == false).
{.
MessageDialog md = new MessageDialog («Игра окончена! Никто не ответил верно! Правильный ответ: «+ items[randNumb]. trueUnsver + Environment. NewLine + «Результаты игры:» + Environment. NewLine + «Игрок 1: «+ countTrueUnsverP1 + Environment. NewLine + «Игрок 2: «+ countTrueUnsverP2);
await md. ShowAsync ();
Frame.GoBack ();
}.
P1Unsverd = false;
P2Unsverd = false;
bttUnsver1P1.IsEnabled = true;
bttUnsver2P1.IsEnabled = true;
bttUnsver3P1.IsEnabled = true;
bttUnsver4P1.IsEnabled = true;
bttUnsver1P2.IsEnabled = true;
bttUnsver2P2.IsEnabled = true;
bttUnsver3P2.IsEnabled = true;
bttUnsver4P2.IsEnabled = true;
txtScoreP1.Text = countTrueUnsverP1. ToString ();
txtScoreP2.Text = countTrueUnsverP2. ToString ();
Gen_Quest ();
}.
//}.
private void btnUnsverP2Text_Tapped (object sender, TappedRoutedEventArgs e).
{.
string unsver = (sender as TextBlock).Text.ToString ();
if (unsver == items[randNumb]. trueUnsver).
{.
countTrueUnsverP2++;
P2Unsverd = true;
}.
bttUnsver1P2.IsEnabled = false;
bttUnsver2P2.IsEnabled = false;
bttUnsver3P2.IsEnabled = false;
bttUnsver4P2.IsEnabled = false;
touch++;
if (touch == 2).
{.
NextQuest ();
}.
}.
//}.
private void btnUnsverP1Text_Tapped (object sender, TappedRoutedEventArgs e).
{.
Продовження дод. В.
string unsver = (sender as TextBlock).Text.ToString ();
if (unsver == items[randNumb]. trueUnsver).
{.
countTrueUnsverP1++;
P1Unsverd = true;
}.
bttUnsver1P1.IsEnabled = false;
bttUnsver2P1.IsEnabled = false;
bttUnsver3P1.IsEnabled = false;
bttUnsver4P1.IsEnabled = false;
touch++;
if (touch == 2).
{.
NextQuest ();
}.
}.
}.
}.
Клас Ragistration.xaml.cs.
using System;
using System.Collections.Generic;
using System. IO;
using System. Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Xml.Linq;
using Windows. Foundation;
using Windows.Foundation.Collections;
using Windows. Storage;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkID=390 556.
namespace Quiz.
{.
/// An empty page that can be used on its own or navigated to within a Frame.
public sealed partial class Registration: Page.
{.
public Registration ().
{.
this.InitializeComponent ();
}.
Продовження дод. В.
/// Invoked when this page is about to be displayed in a Frame.
/// Event data that describes how this page was reached.
/// This parameter is typically used to configure the page.
protected override void OnNavigatedTo (NavigationEventArgs e).
{.
}.
private async void btnRegist_Click (object sender, RoutedEventArgs e).
{.
Classes.User[] com;
Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile sampleFile = await storageFolder. GetFileAsync («Users.xml»);
string users_text = await Windows.Storage.FileIO.ReadTextAsync (sampleFile);
XDocument xDoc = XDocument. Parse (users_text);
com = xDoc.Root.Elements («user»).Select (p =>
{.
return new Classes. User ().
{.
login = p. Element («login»).Value,.
pass = p. Element («pass»).Value.
};
}).ToArray ();
foreach (var item in com).
{.
if (item.login == txtLogin. Text && item. pass ==txtPass.Password).
{.
MessageDialog md = new MessageDialog («Пользователья с таким именем уже существует!»);
await md. ShowAsync ();
}.
return;
}.
string text = await Windows.Storage.FileIO.ReadTextAsync (sampleFile);
string newText = text. Replace (««, ««.
+ ««.
+ txtLogin.Text.
+ ««.
+ ««.
+ txtPass.Password.
+ ««.
+ ««.
+ ««);
StorageFile sampleFile2 = await storageFolder. CreateFileAsync («Users.xml», CreationCollisionOption. OpenIfExists);
await Windows.Storage.FileIO.WriteTextAsync (sampleFile2, newText);
System.Diagnostics.Debug.WriteLine (newText);
Продовження дод. В.
MessageDialog md1 = new MessageDialog («Пользователь успешно добавлен!»);
await md1. ShowAsync ();
Frame.GoBack ();
}.
private void btnBack_Click (object sender, RoutedEventArgs e).
{.
Frame.GoBack ();
}.
}.
}.
Клас Records.xaml.cs.
using System;
using System.Collections.Generic;
using System. IO;
using System. Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Xml.Linq;
using Windows. Foundation;
using Windows.Foundation.Collections;
using Windows. Storage;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkID=390 556.
namespace Quiz.
{.
/// An empty page that can be used on its own or navigated to within a Frame.
public sealed partial class Registration: Page.
{.
public Registration ().
{.
this.InitializeComponent ();
}.
/// Invoked when this page is about to be displayed in a Frame.
/// Event data that describes how this page was reached.
/// This parameter is typically used to configure the page.
protected override void OnNavigatedTo (NavigationEventArgs e).
{.
}.
private async void btnRegist_Click (object sender, RoutedEventArgs e).
{.
Classes.User[] com;
Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile sampleFile = await storageFolder. GetFileAsync («Users.xml»);
string users_text = await Windows.Storage.FileIO.ReadTextAsync (sampleFile);
XDocument xDoc = XDocument. Parse (users_text);
com = xDoc.Root.Elements («user»).Select (p =>
{.
return new Classes. User ().
{.
login = p. Element («login»).Value,.
pass = p. Element («pass»).Value.
};
}).ToArray ();
foreach (var item in com).
{.
if (item.login == txtLogin. Text && item. pass ==txtPass.Password).
{.
MessageDialog md = new MessageDialog («Пользователья с таким именем уже существует!»);
await md. ShowAsync ();
}.
return;
}.
string text = await Windows.Storage.FileIO.ReadTextAsync (sampleFile);
string newText = text. Replace (««, ««.
+ ««.
+ txtLogin.Text.
+ ««.
+ ««.
+ txtPass.Password.
+ ««.
+ ««.
+ ««);
StorageFile sampleFile2 = await storageFolder. CreateFileAsync («Users.xml», CreationCollisionOption. OpenIfExists);
await Windows.Storage.FileIO.WriteTextAsync (sampleFile2, newText);
System.Diagnostics.Debug.WriteLine (newText);
MessageDialog md1 = new MessageDialog («Пользователь успешно добавлен!»);
await md1. ShowAsync ();
Frame.GoBack ();
}.
private void btnBack_Click (object sender, RoutedEventArgs e).
{.
Frame.GoBack ();
}.
}.
}.
Продовження дод. В Клас OnePlayer2.xaml.cs.
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System. IO;
using System. Linq;
using System.Net.Http;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows. Foundation;
using Windows.Foundation.Collections;
using Windows. Storage;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkID=390 556.
namespace Quiz.
{.
/// An empty page that can be used on its own or navigated to within a Frame.
public sealed partial class OnePlayer2: Page.
{.
List items;
int randNumb;
int countTrueUnsver = 0;
string category;
public OnePlayer2().
{.
this.InitializeComponent ();
}.
/// Invoked when this page is about to be displayed in a Frame.
/// Event data that describes how this page was reached.
/// This parameter is typically used to configure the page.
protected override void OnNavigatedTo (NavigationEventArgs e).
{.
category = e.Parameter.ToString ();
}.
private void Gen_Quest ().
{.
Random rand = new Random ();
randNumb = rand. Next (0, items. Count);
txtQuestion.Text = items[randNumb]. question;
}.
Продовження дод. В.
private async void Page_Loaded (object sender, RoutedEventArgs e).
{.
using (HttpClient httpClient = new HttpClient ()).
{.
HttpRequestMessage request = new HttpRequestMessage ();
httpClient.BaseAddress = new Uri («https://api.parse.com/1/classes/» + category);
request.Method = new HttpMethod («GET»);
request.Headers.Add («X-Parse-Application-Id», «q8r9XYoXbEw1kXsWIXbyCNQm9ylcWfAS0fqlWWNx»);
request.Headers.Add («X-Parse-REST-API-Key», «2nke5LSbXQmTiA9FaVytlBihjOOz4fPcoxjEHlee»);
var response = await httpClient. SendAsync (request);
var text = await response.Content.ReadAsStringAsync ();
System.Diagnostics.Debug.WriteLine (text);
JObject results = JObject. Parse (text);
items = new List ();
foreach (var result in results["results"]).
{.
items.Add (new Classes. Items () { question = (string)result["Question"], trueUnsver = (string)result["trueUnsver"] });
}.
Gen_Quest ();
}.
}.
private async void Button_Click (object sender, RoutedEventArgs e).
{.
if (string.Equals (txtBox.Text, items[randNumb]. trueUnsver, StringComparison. CurrentCultureIgnoreCase)).
{.
MessageDialog md1 = new MessageDialog («Это был правильный ответ!»);
await md1. ShowAsync ();
txtBox.Text = ««;
countTrueUnsver++;
txtScore.Text = countTrueUnsver. ToString ();
Gen_Quest ();
}.
else.
{.
MessageDialog md1 = new MessageDialog («Вы отетили не верно! Правильный ответ: «+ items[randNumb]. trueUnsver);
await md1. ShowAsync ();
MessageDialog md = new MessageDialog («Игра окночена! Сохранить результат в рекордах?»);
UICommand cancelBtn = new UICommand («Нет»);
cancelBtn.Invoked = cancelBtn_CLick;
UICommand yesBtn = new UICommand («Да»);
yesBtn.Invoked = yesBtn_CLick;
md.Commands.Add (cancelBtn);
md.Commands.Add (yesBtn);
await md. ShowAsync ();
}.
}.
private async void yesBtn_CLick (IUICommand command).
{.
HttpClient httpClient = new HttpClient ();
HttpRequestMessage request = new HttpRequestMessage ();
httpClient.BaseAddress = new Uri («https://api.parse.com/1/classes/Record»);
httpClient.DefaultRequestHeaders.Accept.Add (new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue («application/json»));
string data = «{"Name»: «» + ApplicationData.Current.LocalSettings.Values["UserName"]. ToString () + ««,"Score»: «+ countTrueUnsver + «,"Mode»: «MyUnsver"}»;
request.Headers.Add («X-Parse-Application-Id», «q8r9XYoXbEw1kXsWIXbyCNQm9ylcWfAS0fqlWWNx»);
request.Headers.Add («X-Parse-REST-API-Key», «2nke5LSbXQmTiA9FaVytlBihjOOz4fPcoxjEHlee»);
request.Method = new HttpMethod («POST»);
// var response = await httpClient. PostAsync (request, new StringContent (data, System.Text.Encoding.UTF8, «application/json»));
request.Content = new StringContent (data, System.Text.Encoding.UTF8, «application/json»);
await httpClient. SendAsync (request);
//Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
//Windows.Storage.StorageFile sampleFile = await storageFolder. GetFileAsync («Records.xml»);
//string text = await Windows.Storage.FileIO.ReadTextAsync (sampleFile);
//string newText = text. Replace (««, ««.
// + ««.
// + ApplicationData.Current.LocalSettings.Values["UserName"]. ToString ().
// + ««.
// + ««.
// + countTrueUnsver.
// + ««.
// + ««.
// + ««);
//StorageFile sampleFile2 = await storageFolder. CreateFileAsync («Records.xml», CreationCollisionOption. OpenIfExists);
//await Windows.Storage.FileIO.WriteTextAsync (sampleFile2, newText);
//System.Diagnostics.Debug.WriteLine (newText);
MessageDialog md = new MessageDialog («Рекорд успешно сохранен!»);
await md. ShowAsync ();
Frame.GoBack ();
}.
private void cancelBtn_CLick (IUICommand command).
{.
Продовження дод. В.
Frame.GoBack ();
}.
}.
}.
Клас OnePlayer.xaml.cs.
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System. IO;
using System. Linq;
using System.Net.Http;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows. Foundation;
using Windows.Foundation.Collections;
using Windows. Storage;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkID=390 556.
namespace Quiz.
{.
/// An empty page that can be used on its own or navigated to within a Frame.
public sealed partial class OnePlayer: Page.
{.
List items;
int randNumb;
int countTrueUnsver = 0;
string category;
public OnePlayer ().
{.
this.InitializeComponent ();
}.
Продовження дод. В.
/// Invoked when this page is about to be displayed in a Frame.
/// Event data that describes how this page was reached.
/// This parameter is typically used to configure the page.
protected override void OnNavigatedTo (NavigationEventArgs e).
{.
category = e.Parameter.ToString ();
}.
private void Gen_Quest ().
Продовження дод. В.
{.
Random rand = new Random ();
randNumb = rand. Next (0, items. Count);
txtQuestion.Text = items[randNumb]. question;
btnUnsver1Text.Text = items[randNumb]. unsver1;
btnUnsver2Text.Text = items[randNumb]. unsver2;
btnUnsver3Text.Text = items[randNumb]. unsver3;
btnUnsver4Text.Text = items[randNumb]. unsver4;
}.
private async void Page_Loaded (object sender, RoutedEventArgs e).
{.
using (HttpClient httpClient = new HttpClient ()).
{.
HttpRequestMessage request = new HttpRequestMessage ();
httpClient.BaseAddress = new Uri («https://api.parse.com/1/classes/» + category);
request.Method = new HttpMethod («GET»);
request.Headers.Add («X-Parse-Application-Id», «q8r9XYoXbEw1kXsWIXbyCNQm9ylcWfAS0fqlWWNx»);
request.Headers.Add («X-Parse-REST-API-Key», «2nke5LSbXQmTiA9FaVytlBihjOOz4fPcoxjEHlee»);
var response = await httpClient. SendAsync (request);
var text = await response.Content.ReadAsStringAsync ();
System.Diagnostics.Debug.WriteLine (text);
JObject results = JObject. Parse (text);
items = new List ();
foreach (var result in results["results"]).
{.
items.Add (new Classes. Items () { question = (string)result["Question"], unsver1 = (string)result["unsver1"], unsver2 = (string)result["unsver2"], unsver3 = (string)result["unsver3"], unsver4 = (string)result["unsver4"], trueUnsver = (string)result["trueUnsver"] });
//item.Add (new Item () { driveId = (string)result["parentReference"]["driveId"], id = (string)result["parentReference"]["id"], path = (string)result["parentReference"]["path"] });
}.
Gen_Quest ();
}.
}.
private async void btnUnsverText_Tapped (object sender, TappedRoutedEventArgs e).
{.
string unsver = (sender as TextBlock).Text.ToString ();
if (unsver == items[randNumb]. trueUnsver).
{.
MessageDialog md1 = new MessageDialog («Это был правильный ответ!»);
await md1. ShowAsync ();
countTrueUnsver++;
txtScore.Text = countTrueUnsver. ToString ();
Продовження дод. В.
Gen_Quest ();
}.
else.
{.
MessageDialog md1 = new MessageDialog («Вы отетили не верно! Правильный ответ: «+ items[randNumb]. trueUnsver);
await md1. ShowAsync ();
MessageDialog md = new MessageDialog («Игра окночена! Сохранить результат в рекордах?»);
UICommand cancelBtn = new UICommand («Нет»);
cancelBtn.Invoked = cancelBtn_CLick;
UICommand yesBtn = new UICommand («Да»);
yesBtn.Invoked = yesBtn_CLick;
md.Commands.Add (cancelBtn);
md.Commands.Add (yesBtn);
await md. ShowAsync ();
}.
}.
private async void yesBtn_CLick (IUICommand command).
{.
HttpClient httpClient = new HttpClient ();
HttpRequestMessage request = new HttpRequestMessage ();
httpClient.BaseAddress = new Uri («https://api.parse.com/1/classes/Record»);
httpClient.DefaultRequestHeaders.Accept.Add (new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue («application/json»));
string data = «{"Name»: «» + ApplicationData.Current.LocalSettings.Values["UserName"]. ToString () + ««,"Score»: «+ countTrueUnsver + «,"Mode»: «4btn"}»;
request.Headers.Add («X-Parse-Application-Id», «q8r9XYoXbEw1kXsWIXbyCNQm9ylcWfAS0fqlWWNx»);
request.Headers.Add («X-Parse-REST-API-Key», «2nke5LSbXQmTiA9FaVytlBihjOOz4fPcoxjEHlee»);
request.Method = new HttpMethod («POST»);
// var response = await httpClient. PostAsync (request, new StringContent (data, System.Text.Encoding.UTF8, «application/json»));
request.Content = new StringContent (data, System.Text.Encoding.UTF8, «application/json»);
await httpClient. SendAsync (request);
//var text = await response.Content.ReadAsStringAsync ();
//Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
//Windows.Storage.StorageFile sampleFile = await storageFolder. GetFileAsync («Records.xml»);
//string text = await Windows.Storage.FileIO.ReadTextAsync (sampleFile);
//string newText = text. Replace (««, ««.
// + ««.
// + ««.
// + countTrueUnsver.
// + ««.
// + ««.
// + ««);
//StorageFile sampleFile2 = await storageFolder. CreateFileAsync («Records.xml», CreationCollisionOption. OpenIfExists);
//await Windows.Storage.FileIO.WriteTextAsync (sampleFile2, newText);
//System.Diagnostics.Debug.WriteLine (newText);
MessageDialog md = new MessageDialog («Рекорд успешно сохранен!»);
await md. ShowAsync ();
Frame.GoBack ();
}.
private void cancelBtn_CLick (IUICommand command).
{.
Frame.GoBack ();
}.
}.
}.
Клас Menu.xaml.cs.
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System. IO;
using System. Linq;
using System.Net.Http;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows. Foundation;
using Windows.Foundation.Collections;
using Windows. Storage;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
// The Blank Page item template is documented at.
namespace Quiz.
{.
/// An empty page that can be used on its own or navigated to within a Frame.
public sealed partial class Menu: Page.
{.
List items;
Продовження дод. В.
bool playerAdverPanelStatus = false;
string category = null;
public Menu ().
{.
this.InitializeComponent ();
}.
/// Invoked when this page is about to be displayed in a Frame.
/// Event data that describes how this page was reached.
/// This parameter is typically used to configure the page.
protected override void OnNavigatedTo (NavigationEventArgs e).
{.
}.
private void goBack_click (object sender, TappedRoutedEventArgs e).
{.
Frame.GoBack ();
}.
private void Page_Loaded (object sender, RoutedEventArgs e).
{.
txtPlayerName.Text = ApplicationData.Current.LocalSettings.Values["UserName"]. ToString ();
comboBox.SelectedItem = «sda»;
}.
private void btnOnePlayer_Click (object sender, TappedRoutedEventArgs e).
{.
if (playerAdverPanelStatus == false).
{.
advencedPanelForOnePlayer.Visibility = Windows.UI.Xaml.Visibility.Visible;
playerAdverPanelStatus = true;
}.
else.
{.
advencedPanelForOnePlayer.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
playerAdverPanelStatus = false;
}.
}.
private async void btnChooseUnsver_Click (object sender, TappedRoutedEventArgs e).
{.
try.
{.
if (!string.IsNullOrEmpty (comboBox.SelectedItem.ToString ())).
{.
Frame.Navigate (typeof (OnePlayer), category);
}.
}.
catch.
{.
MessageDialog md = new MessageDialog («Пожалуйста, выберите категорию!»);
md.ShowAsync ();
Продовження дод. В.
}.
}.
private void btnRecord_Click (object sender, TappedRoutedEventArgs e).
{.
Frame.Navigate (typeof (Records));
}.
private async void btnYourUnsver_Click (object sender, TappedRoutedEventArgs e).
{.
try.
{.
if (!string.IsNullOrEmpty (comboBox.SelectedItem.ToString ())).
{.
Frame.Navigate (typeof (OnePlayer2), category);
}.
}.
catch.
{.
MessageDialog md = new MessageDialog («Пожалуйста, выберите категорию!»);
md.ShowAsync ();
}.
}.
private async void btnTwoPlayer_Click (object sender, TappedRoutedEventArgs e).
{.
try.
{.
if (!string.IsNullOrEmpty (comboBox.SelectedItem.ToString ())).
{.
Frame.Navigate (typeof (TwoPlayer), category);
}.
}.
catch.
{.
MessageDialog md = new MessageDialog («Пожалуйста, выберите категорию!»);
md.ShowAsync ();
}.
}.
private void cmbBoxTime_SelectionChanged (object sender, SelectionChangedEventArgs e).
{.
switch (((ComboBoxItem)comboBox.SelectedItem).Content.ToString ()).
{.
case «Спорт»: category = «Sport»; break;
case «Животные»: category = «Animals»; break;
}.
}.
}.
}.
Клас MainPage.xaml.cs.
using System;
using System.Collections.Generic;
using System. IO;
using System. Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Xml.Linq;
Продовження дод. В.
using Windows. Foundation;
using Windows.Foundation.Collections;
using Windows.Phone.UI.Input;
using Windows. Storage;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=391 641.
namespace Quiz.
{.
/// An empty page that can be used on its own or navigated to within a Frame.
public sealed partial class MainPage: Page.
{.
Classes.User[] com;
public MainPage ().
{.
this.InitializeComponent ();
this.NavigationCacheMode = NavigationCacheMode. Required;
HardwareButtons.BackPressed += HardwareButtons_BackPressed;
hideStatusBar ();
}.
async void hideStatusBar ().
{.
await Windows.UI.ViewManagement.StatusBar.GetForCurrentView ().HideAsync ();
}.
void HardwareButtons_BackPressed (object sender, BackPressedEventArgs e).
{.
if (Frame.CanGoBack).
{.
e.Handled = true;
Frame.GoBack ();
}.
else.
Application.Current.Exit ();
}.
/// Invoked when this page is about to be displayed in a Frame.
/// Event data that describes how this page was reached.
/// This parameter is typically used to configure the page.
protected override void OnNavigatedTo (NavigationEventArgs e).
{.
// TODO: Prepare page for display here.
// TODO: If your application contains multiple pages, ensure that you are.
Продовження дод. В.
// handling the hardware Back button by registering for the.
// Windows.Phone.UI.Input.HardwareButtons.BackPressed event.
// If you are using the NavigationHelper provided by some templates,.
// this event is handled for you.
}.
private async void Page_Loaded (object sender, RoutedEventArgs e).
{.
try.
{.
StorageFolder folder = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile sampleFile2 = await folder. CreateFileAsync («Users.xml», CreationCollisionOption. FailIfExists);
string text = ««.
+ ««.
+ ««;
await Windows.Storage.FileIO.WriteTextAsync (sampleFile2, text. ToString ());
}.
catch.
{.
}.
Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile sampleFile = await storageFolder. GetFileAsync («Users.xml»);
string users_text = await Windows.Storage.FileIO.ReadTextAsync (sampleFile);
XDocument xDoc = XDocument. Parse (users_text);
com = xDoc.Root.Elements («user»).Select (p =>
{.
return new Classes. User ().
{.
login = p. Element («login»).Value,.
pass = p. Element («pass»).Value.
};
}).ToArray ();
}.
private void btnRegist_Click (object sender, RoutedEventArgs e).
{.
Frame.Navigate (typeof (Registration));
}.
private async void btnAouth_Click (object sender, RoutedEventArgs e).
{.
MessageDialog md;
if (string.IsNullOrWhiteSpace (txtLogin.Text) || string. IsNullOrWhiteSpace (txtPass.Password)).
{.
Продовження дод. В.
md = new MessageDialog («Пожалуйста заполните все поля!»);
await md. ShowAsync ();
return;
}.
for (int i = 0; i < com. Length; i++).
{.
if (string.Equals (txtLogin.Text, com[i]. login, StringComparison. CurrentCultureIgnoreCase) && string. Equals (txtPass.Password, com[i]. pass, StringComparison. CurrentCultureIgnoreCase)).
{.
ApplicationData.Current.LocalSettings.Values["UserName"] = com[i]. login;
Frame.Navigate (typeof (Menu));
return;
}.
}.
md = new MessageDialog («Неправильный логин или пароль!»);
await md. ShowAsync ();
}.
}.
}.
Клас Items.cs.
using System;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace Quiz.Classes.
{.
public class Items.
{.
public string question { get; set; }.
public string unsver1 { get; set; }.
public string unsver2 { get; set; }.
public string unsver3 { get; set; }.
public string unsver4 { get; set; }.
public string trueUnsver { get; set; }.
}.
}.
Клас Record.cs.
using System;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace Quiz.Classes.
{.
public class Record.
{.
Закінчення дод. В.
public string name { get; set; }.
public string score { get; set; }.
public string mode { get; set; }.
}.
}.
Клас User.cs.
using System;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace Quiz.Classes.
{.
public class User.
{.
public string login { get; set; }.
public string pass { get; set; }.
}.
}.