Гра "п`ятнашки", написана мовою C# - Программирование, компьютеры и кибернетика курсовая работа

Гра "п`ятнашки", написана мовою C# - Программирование, компьютеры и кибернетика курсовая работа



































Опис актуальності, цілей, завдань розроблюваного ПЗ, його призначення та галузь застосування. Огляд програмних продуктів, що мають аналогічні цілі й призначення. Розробка інтерфейсу ПО й короткий опис основних елементів керування грою у п`ятнашки.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

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


Даний програмний продукт є розвиваючою грою п'ятнашки, написаною мовою C# за усіма правилами та стандартами нового Windows Metro інтерфейсу. Мета гри -- переміщаючи пластинки по коробці добитися впорядковування їх по номерах, бажано зробивши якомога менше переміщень. Ця задача реалізується за допомогою зручного, інтуїтивно зрозумілого користувачеві інтерфейсу. Користування даним програмним продуктом не потребує якихось спеціальних знань у користуванні ПК і рекомендується усім користувачам, незалежно від їх рівня знання ПК.
1 . О пис актуальності, цілей завдань розроблюваного ПЗ , його призначення й галузь застосування
Даний курсовий проект реалізує можливість складання головоломки п'ятнашки. Программа автоматично розповсюджує числа від 1 до 15 між шістнадцятьма квадратами. Якщо користувач бажає змінити розклад чисел, він завжди може це зробити, натиснувши кнопку «Нова гра».
Ця гра є актуальною вже 134 роки. Багато дітей шкільного віку збирають цю головоломку тисячі разів. Зважаючи на сучасні тенденції, коли майже кожний має дома комп'ютер або ноутбук, розробка цієї головоломки повністю виправдовує себе.
Метою розробки цієї гри є бажання створити нескладну, необтяжену зайвими функціями програму для зручного складання головоломки. Призначена для користування на домашніх ПК користувачами з будь-яким рівнем знання комп'ютера та будь-якого віку.
2 . О гляд програмних продуктів, що мають аналогічні цілі й призначення
Аналогів даного програмного продукту у світі існує велика кількість. Адже вже видумано багато розвиваючих головоломок та ігор. Основні вимоги: простота у використанні та зручний дизайн. Можна роздивитися найбільш популярні з них.
Судоку - заснована на логіці японська головоломка з числами. В перекладі з японської мови «су» позначає слово «число», «доку» має безліч різних перекладів, але в цілому означає щось одне, одиничне, цілісне. Мета головоломки - необхідно заповнити вільні клітинки цифрами від 1 до 9 так, щоб в кожному рядку, в кожному стовпці і в кожному малому квадраті 3Ч3, кожна цифра зустрічалася лише один раз. Правильна головоломка має лише одне рішення.
Короткі відомості про функціонал програми:
- має можливість самому розробити головоломку;
Я вважаю, що недоліків у програми немає. Програма регулярно обновлюється, що свідчить про те, що ймовірних недоліків стає ще менше.
Кубик Рубіка - механічна головоломка, яку винайшов у 1974 році угорський скульптор та винахідник Ерньо Рубік. Метою головоломки є складення граней кубика відповідно до кольорів.
- можливість змінювати фоновий малюнок;
- можливість програвання на фоні своєї музики;
- можливість змінювати текстури кубика;
- можливість змінювати розмір кубика.
Не зважаючи на можливість зміни кольорової гамми програмного забезпечення, до недоліків я б віднесла замалий розмір деяких кнопок та рекламу.
3 . Р озробка інтерфейсу по й короткий опис основних елементів керування
На основі п.2 і п.3 було визначено, що розробка п'ятнашок буде перспективним явищем. На даному етапі програмний продукт доволі простий і не обтяжений зайвими функціями, а лише основними, які дають можливість зібрати головоломку. Але є можливість розвивати даний проект, розроблювати нові функції та поповнювати список можливостей. Це зумовить поповнення аудиторії, що буде користуватися даним програмним продуктом. Розглянемо функціональні можливості даної програми.
3 .1 Опис призначення основних вікон додатка, елементів керування, розташовани х на них елементів угрупування
При завантаженні програми відкривається головне вікно, у якому містяться всі важливі елементи керування, а саме:
-скрита кнопка «Поділитися», яка стає доступною після правильного складання головоломки.
Малюнок 3.1. Головне вікно програми.
3 .2 Опис функціонал ьності ПО й способів взаємодії користувача з ним
Даний програмний продукт є прикладом реалізації багатовіконного інтерфейсу, так як складається з головного вікна та двох дочірніх вікон - відправки результатів своєї гри по e-mail та інформації.
Малюнок 3.3. Вікно відправки результатів.
Розглянемо детальніше елементи керування, представлені у головному вікні програми та функції, які вони виконують.
Для того, щоб до розпочати нову гру, треба натиснути кнопку «Нова гра».
Коли головоломку буде успішно складено, з'явиться кнопка «Поділитися», яка дозволить відправити результати вашої гри по e-mail.
Для того, аби ознайомитись з інформацією про розробника та проглянути довідку необхідно натиснути на кнопку «Допомога»
Функціонально програму можна представити у вигляді блок-схеми.
3 .3 Опис принципів композиції та організації елементів керування та візуалізації
Вдалий вибір візуальних атрибутів, відображених на екрані, має важливіше значення, ніж просто гарний зовнішній вигляд програми. Якість візуального проектування в значній мірі впливає на психофізіологічний стан користувача та на ефективність його роботи в цілому. Як наслідок, навіть потужний по своїм можливостям програмний продукт може виявитися недостатньо функціональним, якщо візуальне відображення його інтерфейсу задовольняє необхідним вимогам. У грі п'ятнашки були прийняті до уваги особливості сприйняття кольорів людиною.
Основним кольором програми є білий, а для меню програми був обраний чорний колір. При натисканні елемент керування змінює колір на сірий.
Чорний колір - може стати причиною головних болів, але знижує кількість помилок. Так як у даній програмі він використаний з метою привернути увагу до елементів керування в першу чергу, то негативного впливу на користувача оказувати не буде.
Білий цвіт володіє особливістю збільшувати простір, тож ця головоломка буде здаватися нерозв'язною, що спонукатиме користувача до активних дій.
4 . Р озробка алгоритмів і блок-схем, що описують функціональність ПЗ
Розглянемо детальніше деякі функції ПЗ.
Блок-схема для функції Scrambles(), що виконується при натисненні кнопки «Нова гра».
Малюнок 4.1. Функція що розпочинає нову гру
При натисненні на будь-який квадрат відбуваються наступні операції:
5 . Р озробка прикладного програмного забезпечення
Програма складається з одного класу - BlankPage. У даному класі реалізовані всі необхідні функції для роботи з головоломкою: почати нову гру, переміщати числа на полі та проглянути довідку.
Розглянемо детальніше структуру цього класу:
void _timer_Tick(object sender, object e)- функція таймеру
public void NewGame()- функція, що розпочинає нову гру
Border FindStackPanelByTagId(int tag)- пошук квадрата за позицією
int FindEmptyItemPosition() - пошук квадрата без числа
int FindItemValueByPosition(int position)- функція що повертає положення числа на полі
void Scrambles() - функція заповнення поля числами
void CheckBoard()- функція перевірки вірності збору головоломки
bool CheckIfSolvable()- функція, що перевіряє чи можливо розв'язати головоломку
Border CanMove(UIElement itemToMove)- перевірка на можливість руху для числа
private void UserControl_Loaded(object sender, RoutedEventArgs e)- загрузка вікна.
private void UserControl_PointerPressed(object sender, Windows.UI.Xaml.Input.PointerEventArgs e)- переміщення чисел на полі
private void CreateFadeOutAnimation(UIElement btn) - створення анімації.
private void btnnewGame_Click(object sender, RoutedEventArgs e) - опис дій, після натискання користувачем кнопки «Нова гра»
void DisplayToastWithImage() - нотифікація о перемозі
void _dataTransferManager_DataRequested(DataTransferManager sender, DataRequestedEventArgs args) - функція, що дозволяє переслати результати своєї гри по e-mail.
private void btnHelp_Click_1(object sender, RoutedEventArgs e) - функція, що зображує вікно з інформацією
private void Page_Tapped_1(object sender, TappedRoutedEventArgs e) - функція, що скриває вікно з інформацією
private readonly int[] _bordersNums = { 0, 4, 8, 12, 3, 7, 11, 15 };
private readonly DispatcherTimer _timer;
Дане програмне забезпечення було створено з метою надання користувачам програми, яка дозволяє зібрати п'ятнашки.
Для цього користувачеві надане просте у використанні програмне забезпечення. Це зумовлено тим, що його інтерфейс аналогічний до багатьох інших ігор, а тому інтуїтивно зрозумілий для багатьох користувачів.
1. С. Байдачний, Windows 8 для С# розробників. - К., 2012. - 277с, ил.
2. М. Мак-Дональд, Windows Presentation Foundation у .NET 4 - СПб.: Вильямс, 2011. - 1019с.: ил.
3. Веб-ресурс: https://www.google.com/
Тексти (лістинги) розробленого програмного забезпечення
Цель игры -- перемещая костяшки покоробке добиться упорядочивания их по номерам, желательно сделав как можно меньше перемещений.Пятнашки. Александр Демченко © 2012
using Windows.ApplicationModel.DataTransfer;
using Windows.Foundation.Collections;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Media.Animation;
{ public sealed partial class BlankPage : Page { private readonly int[] _bordersNums = { 0, 4, 8, 12, 3, 7, 11, 15 }; private readonly Random _rnd; private readonly DispatcherTimer _timer; private int _moves; private DateTime _startTime; BlankPage rootPage = null; public BlankPage() { InitializeComponent(); _rnd = new Random(); _timer = new DispatcherTimer(); _timer.Tick +=_timer_Tick; _timer.Interval = new TimeSpan(0, 0, 0, 1); _dataTransferManager = DataTransferManager.GetForCurrentView(); _dataTransferManager.DataRequested += new TypedEventHandler(_dataTransferManager_DataRequested); } void _timer_Tick(object sender, object e) { var time = DateTime.Now - _startTime; txtTime.Text = string.Format("{0:00}:{1:00}:{2:00}",time.Hours, time.Minutes, time.Seconds); } public void NewGame() { _moves = 0; txtMoves.Text = "0"; txtTime.Text = "00:00:00"; Scrambles(); while (!CheckIfSolvable()) { Scrambles(); } _startTime = DateTime.Now; _timer.Start(); } // поиск и возврат квадрата по позиции Border FindStackPanelByTagId(int tag) { if (tag == 16) { return (from stackPanel in ContentPanel.Children.OfType() where stackPanel.Child == null select stackPanel).First(); } else { foreach (Border b in ContentPanel.Children) { if (b.Child != null && Convert.ToInt32(((TextBlock)b.Child).Text) == tag) return b; } } return null; } // поиск элемента без числа int FindEmptyItemPosition() { int index = 15; for (int i = 0; i < 15; i++) { if (((Border)ContentPanel.Children[i]).Child != null) return index; index--; } return 0; } // возвращает число по позиции элемента, если числа нет - возвращает 16 int FindItemValueByPosition(int position) { return ((Border)ContentPanel.Children[position]).Child != null ? Convert.ToInt32(((TextBlock)((Border)ContentPanel.Children[position]).Child).Tag) : 16; } // алгоритм подбора элементов для хранения void Scrambles() { var count = 0; while (count < 25) { var a = _rnd.Next(1, 17); var b = _rnd.Next(1, 17); if (a == b) continue; var stack1 = FindStackPanelByTagId(a); var stack2 = FindStackPanelByTagId(b); if (a == 16) { var image2 = stack2.Child; stack2.Child = null; stack1.Child = image2; } else if (b == 16) { var image1 = stack1.Child; stack1.Child = null; stack2.Child = image1; } else { var image1 = stack1.Child; var image2 = stack2.Child; stack1.Child = null; stack2.Child = null; stack1.Child = image2; stack2.Child = image1; } count++; } } // проверка правильности void CheckBoard() { var index = 1; for (var i = 15; i > 0; i--) { if (FindItemValueByPosition(i) != index) return; index++; } _timer.Stop(); DisplayToastWithImage(); btnShare.Visibility = Windows.UI.Xaml.Visibility.Visible; } // проверка на возможность решения bool CheckIfSolvable() { var n = 0; for (var i = 15; i > 0; i--) { if (!(ContentPanel.Children[i] is StackPanel)) continue; var num1 = FindItemValueByPosition(i); var num2 = FindItemValueByPosition(i - 1); if (num1 > num2) { n++; } } var emptyPos = FindEmptyItemPosition(); return n % 2 == (emptyPos + emptyPos / 4) % 2 ? true : false; } /// /// Move Item From One SpackPanel to Another. /// /// Gets the Image item you want to move /// Destination StackPanel void MoveItem(TextBlock item, Border targetPanel) { foreach (var stackPanel in ContentPanel.Children.OfType().Where(stackPanel => stackPanel.Child != null && ((TextBlock)stackPanel.Child).Text == ((TextBlock)item).Text)) { stackPanel.Child = null; } targetPanel.Child = item; } // возвращает позиции элементов, если они находятся по краям bool IsBorderSwich(int a, int b) { return _bordersNums.Contains(a) && _bordersNums.Contains(b); } // проверка на возможность передвижения Border CanMove(UIElement itemToMove) { var val = ((TextBlock)itemToMove).Text; var count = ContentPanel.Children.Count; for (var i = 0; i < count; i++) { if (!(ContentPanel.Children[i] is Border)) continue; var stakePanel = (Border)ContentPanel.Children[i]; if (stakePanel.Child != null && ((TextBlock)stakePanel.Child).Text != val) continue; if (!IsBorderSwich(i, i + 1) && i + 1 <= 15 && ContentPanel.Children[i + 1] != null && ((Border)ContentPanel.Children[i + 1]).Child == null) return ((Border)ContentPanel.Children[i + 1]); if (!IsBorderSwich(i, i - 1) && i - 1 > -1 && ContentPanel.Children[i - 1] != null && ((Border)ContentPanel.Children[i - 1]).Child == null) return ((Border)ContentPanel.Children[i - 1]); if (i + 4 <= 15 && ContentPanel.Children[i + 4] != null && ((Border)ContentPanel.Children[i + 4]).Child == null) return ((Border)ContentPanel.Children[i + 4]); if (i - 4 > -1 && ContentPanel.Children[i - 4] != null && ((Border)ContentPanel.Children[i - 4]).Child == null) return ((Border)ContentPanel.Children[i - 4]); } return null; } // при загрузке приложения private void UserControl_Loaded(object sender, RoutedEventArgs e) { NewGame(); } private void UserControl_PointerPressed(object sender, Windows.UI.Xaml.Input.PointerEventArgs e) { var item = (UIElement)e.OriginalSource; TextBlock work = null; Border border = null; if (item is Border) { border = item as Border; if (border.Child != null) { work = border.Child as TextBlock; } else return; } else if (item is TextBlock) { work = item as TextBlock; border = work.Parent as Border; } else return; var to = CanMove(work); if (to != null) { _moves++; txtMoves.Text = _moves.ToString(); CreateFadeOutAnimation(work); MoveItem(work, to); CreateFadeInAnimation(work); CheckBoard(); } } private void CreateFadeOutAnimation(UIElement btn) { Duration dur = new Duration(TimeSpan.FromSeconds(2)); var da = new DoubleAnimation(); da.From = 1; da.To = 0; var sb = new Storyboard(); sb.Duration = dur; sb.Children.Add(da); Storyboard.SetTarget(da, btn); Storyboard.SetTargetProperty(da, "(Opacity)"); sb.Begin(); } private void CreateFadeInAnimation(UIElement btn) { Duration dur = new Duration(TimeSpan.FromSeconds(2)); var da = new DoubleAnimation(); da.From = 0; da.To = 1; var sb = new Storyboard(); sb.Duration = dur; sb.Children.Add(da); Storyboard.SetTarget(da, btn); Storyboard.SetTargetProperty(da, "(Opacity)"); sb.Begin(); } private void btnnewGame_Click(object sender, RoutedEventArgs e) { NewGame(); } void DisplayToastWithImage() { XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01); XmlNodeList textElements = toastXml.GetElementsByTagName("text"); foreach (IXmlNode toastTextAttr in textElements) { toastTextAttr.InnerText = "Поздравляем, Вы выиграли!"; } ToastNotification toast = new ToastNotification(toastXml); ToastNotificationManager.CreateToastNotifier().Show(toast); } private DataTransferManager _dataTransferManager; void _dataTransferManager_DataRequested(DataTransferManager sender, DataRequestedEventArgs args) { args.Request.Data.Properties.Title = "Metro Puzzle"; args.Request.Data.Properties.Description = "Делюсь победой.."; args.Request.Data.SetText(string.Format("Только что прошел пятнашки за {0} ходов и {1}, думаешь сможешь лучше?", txtMoves.Text, txtTime.Text)); } private void btnGame_Click(object sender, RoutedEventArgs e) { NewGame(); btnShare.Visibility = Windows.UI.Xaml.Visibility.Collapsed; } private void btnShare_Click(object sender, RoutedEventArgs e) { DataTransferManager.ShowShareUI(); btnShare.Visibility = Windows.UI.Xaml.Visibility.Collapsed; } private void btnHelp_Click_1(object sender, RoutedEventArgs e) { Duration dur = new Duration(TimeSpan.FromSeconds(2)); var da = new DoubleAnimation(); da.From = 0; da.To = 1; var sb = new Storyboard(); sb.Duration = dur; sb.Children.Add(da); Storyboard.SetTarget(da, Info); Storyboard.SetTargetProperty(da, "(Opacity)"); if (Info.Opacity == 0) { sb.Begin(); } } private void Page_Tapped_1(object sender, TappedRoutedEventArgs e) { Duration dur = new Duration(TimeSpan.FromSeconds(2)); var da = new DoubleAnimation(); da.From = 1; da.To = 0; var sb = new Storyboard(); sb.Duration = dur; sb.Children.Add(da); Storyboard.SetTarget(da, Info); Storyboard.SetTargetProperty(da, "(Opacity)"); if (Info.Opacity == 1) { sb.Begin(); } } }
Загальний опис гри "Тетріс", огляд основних об’єктів та клавіш управління грою. Розробка інтерфейсу користувача та основних модулів. Алгоритм ігрового поля, блок-схема алгоритму перевірки можливості зміни розташування фігури та переміщення фігури вниз. курсовая работа [1,9 M], добавлен 18.02.2013
П'ятнашки як популярна головоломка, що являє собою набір однакових квадратних кісточок з нанесеними числами, ув'язнених у квадратну коробку. Розробка функціональної схеми, розробка алгоритмів. Порядок написання, апробації програми. Інструкція програміста. курсовая работа [216,6 K], добавлен 12.12.2010
Опис предметної області по темі "Перевантаження методів". Методика розробки тестових завдань. Проектування та розробка програми. Опис елементів управління, які використовуються в проекті. Опис текстів процедур та опрацювання подій. Отримані результати. курсовая работа [620,9 K], добавлен 06.08.2013
Цілі і завдання розробки, її предмет і актуальність. Опис предметної області, цілі і завдання програми. Вибір методу рішення, опис процесу програмування і вибір інструментальних засобів для реалізації проекту, опис вхідних та вихідних даних, інтерфейсу. курсовая работа [327,1 K], добавлен 01.09.2014
Розробка структурної схеми. Опис основних елементів мікропроцесора. Вибір підходящої структури процесорного елемента та його опис. Реалізація пристрою управління. Розробка мікропрограми та загальний алгоритм виконання процесором команди SBR Rm, B. контрольная работа [83,6 K], добавлен 04.06.2009
Призначення та вимоги до функціональних характеристик при розробці мультимедійного посібника. Алгоритм побудови учбового курсу, установка загальних параметрів курсу, розробка практичних завдань та тестування, глосарія та довідки, опис інтерфейсу. курсовая работа [2,8 M], добавлен 23.11.2010
Призначення менеджеру пристроїв. Обґрунтування вибору мови програмування. Розробка структурної схеми і опис діалогового інтерфейсу програми. Блок-схема програмного додатку, основні функції і алгоритм його роботи. Методики і інструкція його тестування. курсовая работа [3,4 M], добавлен 17.11.2014
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Гра "п`ятнашки", написана мовою C# курсовая работа. Программирование, компьютеры и кибернетика.
Реферат: Дефокусировка. Сферическая аберрация 3 порядка. Кома и неизопланатизм. Скачать бесплатно и без регистрации
Реферат На Тему Проблемы Энергосбережения
Дипломная работа: Бизнес-план фабрики обувной. Скачать бесплатно и без регистрации
Сочинение На Тему Встреча С Ветераном
Сочинение Про Карту России
Реферат по теме Средства индивидуальной защиты
Курсовая работа: Культурологическое развитие дошкольников посредством пейзажной живописи. Скачать бесплатно и без регистрации
Лекция по теме Военная медицина
Реферат: Episode Of Hands Essay Research Paper Hart
Реферат: Группы тренинга умений
Дипломная работа по теме Проектирование интернет-приложения для сокращения времени поиска транспортных средств для туристов, путешествующих автостопом
Содержание Правоотношений Курсовая Работа
Дипломная Работа На Тему Использование Дидактических Игр Для Развития Познавательного Интереса На Уроках Математики В 5 Классе
Реферат: Различия государственного регулирования страховой деятельности за рубежом и в Российской Федерац
Контрольная работа по теме Основы формирования здорового образа жизни
Дипломная работа по теме П’єзодатчик тиску
Международный туризм. История, состояние и перспективы развития
Реферат Психологические Причины Ошибок В Производственной Деятельности
Скачать Русский Язык Контрольная Работа
Логистика Практическая Работа
Становление политико-правовых взглядов Томаса Джефферсона - История и исторические личности курсовая работа
Аналіз проблеми самовиховання учнів 1-4 класів - Педагогика курсовая работа
Анализ маркетинговой среды предприятия - Маркетинг, реклама и торговля контрольная работа


Report Page