Skip to content

mPopovska/Sudoku-master

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Sudoku-master

Објаснување на проблемот

Судоку  е логичка игра (сложувалка, задача). Целта на оваа канонична сложувалка е да се внесе број од 1 до 9 во секое поле од 9×9 матрицата, која пак е составена од 3×3 подматрици (наречени „региони“), почнувајќи со разни броеви кои се дадени во некои полиња. Секоја редица, колона и регион мора да содржи една и само една инстанца од секој од броевите од 1 до 9. За да се реши задачата потребно е трпение и логички способности. И покрај тоа што прв пат се појавува во американско енигматско списание во 1970, „Судоку“ добива на популарност и во Јапонија во 1986 г, за во 2005 г. да се здобие со меѓународна популарност. Првото светско првенство во судоку е одржано во Лука, Италија, од 10 до 12 март 2006 г.

Имплементација на решение

Нашата апликација содржи:
•	Почнување на нова игра
•	Избирање на одредени опции
•	Прикажување на најдобри резултати
•	Излегување од играта

Имплементацијата на решението ја започнавме со развивање на формата Form1 (која што го претставува почетниот изглед на играта Судоку). Почетниот изглед нуди повеќе опции:
•	Play 
•	Options 
•	Stats
•	Exit 

Со избор на опцијата Play се отвара нова форма (форма Difficulties) која што нуди 4 тежини (во зависност од избраната тежина соодветно се генерира сложувалка). Откако ќе се одбере тежина, се отвара нова форма (форма Game), каде што соодветно свири музика во позадина (доколку е одбрана една од мелодиите кои што се поставени како опции од формата Options). Исто така, на формата има поставено textbox за внесување на името на играчот (соодветно има поставено валидација која што го обврзува играчот да го внесе името) и лабела во која што се прикажува времето од започнување на играта. Дополнително се поставеи три копчиња и при нивно кликнување се извршуваат соодветни актиности:
•	Hint - се прикажува понуда за помош (доколку е избрана соодветната опција за помош од формата Options). При клик на копчето Hint на првoто поле кое што ќе биде слободно најдено, ќе се впише соодветната вредност која што треба да биде поставена на тоа поле. 
•	End - формата Game се затвора, а се појавува формата со тежини (формата Difficulties). 
•	Check – функцијата на ова копче соодветно е опишана подоле во документот.

Со избор на опцијата Options се отвара нова форма (форма Options) каде што играчот 
може да направи избор:
•	Дали да свири некоја од музиките кои што се поставени во позади додека ја решава сложувалката (соодветно има поставено опција None со која се спречува свирењето на музиката) 
•	Дали да биде покажано копчето за помош (hint) на формата  Game.

Со избор на опцијата Stats се отвара нова форма (форма Stats) каде во listbox се прикажувааат имињата на играчите со соодветното време за коешто ја решиле сложувалката подредени во опаѓачки редослед. Исто така, класите се серијабилни така што при затворање на формата податочите остануваат зачувани.

Со избор на опцијата Exit се затвора формата и со тоа се затвора и апликацијата.

На главната форма Form1 поставени се:
•	AcceptButton кое што ја има улогата на Play
•	CancelButton кое што ја има улогата на  Exit.

На секоја од формите соодветно се поставени акции при избор на копчето Back и при затворање на формата со што од моменталната форма се враќа играчот на претходната форма.

Опишување на функции од кодот

Во класата Game користиме конструктор со аргументи public Game(Difficulties d, Form1 f, Options o) кој прима инстанци од формите
Difficulties, Form1 и Options. Инстанцата од Options ни е потребна за да знаеме кое ниво на тежина е одбрано и според тоа да 
прикажеме матрица со соодветна тежина. Во зависност од тежината имаме различни услови за тоа колку полиња ќе останат празни за
пополнување. За секоја од тежините имаме по 4 матрици од кои се избира една на случаен начин. Откако ќе се
избере една матрица, се генерира 81 TextBox кои соодветно се пополнуваат со вредности. Секако дел од нив ги оставаме празни за пополнување,
останатите на својството Enabled имаат вредност false.

Функцијата checkSudoku() се повикува со клик на копчето Check во формата Game. Со оваа функција проверуваме дали 
има непополнети полиња или погрешно внесени вредности, притоа се испишува соодветна порака. Доколку има погрешно внесени вредности
истите ги бришеме.

Функцијата btnHint_Click() се повикува со клик на копчето Hint во формата Game. Со оваа функција овозможуваме помош. Во една игра има вкупно 5 Hints. Откако ќе се искористат сите на секој нареден клик се испишува порака дека немате повеќе Hints. Доколку сите полиња во формата се пополнети оваа функција не прави ништо. Исто така бројот на Hints останува непромент. Во оваа функција користиме помошна функција која се вика getHint(). Функцијата проверува дали има непополнети полиња во формата и доколку има враќа true, во спротивно враќа false.

Упатство за играње на играта

Откако ќе се стартува почетната форма Form1 од понудените опции треба да се избере Play (доколку играчот сака да смени одредени опции, тоа може да го направи со избророт од опцијата Options). Потоа играчот треба да избере соодветна тежина со која што ќе биде генерирана сложувалката.Откако ќе се избере соодветната тежина, се прикажува генерираната сложувалка и играчот може да започне со нејзино решавање. Секој играч има соодветно овозможени 5 можности за помош (5 hints). Откако ќе се пополнат сите полиња на сложувалката, се проверува дали вредностите кои што се внесени се валидни. Доколку внесените вредности се валидни, се испишува соодветна порака и играчот (неговото име и времето за кое што ја решил сложувалката) се додава во листата во формата Stats. Со тоа играта завршува. Доколку има внесените вредности се невалидни или пак има останато некое празно поле, соодветно се испишува порака и играчот е вратен на формата Game се додека не се поправат сите неправилности.

Screen Shots
Изгледот на главната форма

![sudoku](cdc9627a-f753-11e4-8f0c-bba5ba56b84f.png)

Изгледот на формата Difficulties

![difficulties](https://cloud.githubusercontent.com/assets/12382501/7555696/cdc2de78-f753-11e4-9f9b-d020f28bf557.png)

Изгледот на формата Options

![options](https://cloud.githubusercontent.com/assets/12382501/7555697/cdc5bc24-f753-11e4-92b6-8d7ac959c250.png)

Изгледот на формата Game
 
![sudokugame](https://cloud.githubusercontent.com/assets/12382501/7555699/cdcabbca-f753-11e4-8f78-0a506b02bfbb.png)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages