Projekt Układy Cyfrowe Dokumentacja wstępna

Transkrypt

Projekt Układy Cyfrowe Dokumentacja wstępna
S tr on a |1
Maciej Karaś gr. 4T1
album nr 208686
Warszawa, dn. 5.11.2009
Szymon Witkowski gr. 4T1
album nr 217864
Projekt
Układy Cyfrowe
Temat:
Gra Sudoku
Dokumentacja wstępna
I. Informacje ogólne
Celem niniejszego projektu jest stworzenie gry Sudoku (jap. 数独, sūdoku; od sūji wa
dokushin ni kagiru, czyli cyfry muszą być pojedyncze). Dzisiejsze sudoku pojawiło się po raz
pierwszy w Japonii w 1986 roku, jednak międzynarodową sławę zyskało dopiero w 2005 roku.
Nie ma ściśle określonych reguł mówiących o poziomie trudności określonej planszy
sudoku. Generalnie można jednak problem ten uprościć ustalając początkową liczbę
zapełnionych pól.
W 2005 matematycy Bertram Felgenhauer z Politechniki w Dreźnie oraz Frazer Jarvis
z Uniwersytetu w Sheffield udowodnili, że istnieje 6 670 903 752 021 072 936 960 różnych
poprawnych plansz sudoku. Po utożsamieniu wersji różniących się permutacją cyfr, wierszy,
lub kolumn, oraz powstałych przez odbicia i obroty, pozostaje 1 472 730 538 plansz.
Program ma za zadanie generowanie unikalnych plansz sudoku i umożliwienie
użytkownikowi rozwiązywanie ich. Dodatkową opcją jest wprowadzenie własnej planszy
sudoku, aby program znalazł poprawne rozwiązanie.
II. Reguły gry
Zasady przypominają trochę kwadrat łaciński, wymyślony i badany przez
średniowiecznych matematyków z terenów Arabii (XIII wiek). W Sudoku, w
przeciwieństwie do kwadratu łacińskiego, cyfry nie mogą się powtarzać nie tylko w żadnym
wierszu i kolumnie, ale także w małym kwadracie 3x3.
Istnieje wiele różnych technik wypełniania sudoku. Najprostszą z nich i najbardziej
intuicyjną jest wyszukiwanie takich pól w których może pojawić się tylko jedna liczba z
wynikających z ustawień planszy warunków. Gdy jednak ta metoda zawiedzie, pozostaje
wyszukiwanie par liczb które mogą występować tylko w dwóch polach w danej kolumnie,
wierszu bądź małym kwadracie. Pola takie redukują ilość wolnych i dzięki temu możemy
znaleźć kolejne liczby za pomocą pierwszej techniki.
S tr on a |2
Oczywiście można też stosować metodę „brute force”, czyli wypełnianie pól aż do
momentu napotkania sprzeczności. Nie jest to jednak metoda którą powinno się rozwiązywać
Sudoku, gdyż psuje całą przyjemność z gry.
III.Główne założenia projektowe
− grafika wyświetlana na monitorze VGA jak najbardziej uproszczona
− menu wyboru opcji gry ( prawdopodobnie znajdzie się możliwość wyboru poziomu
trudności gry od easy, medium po hard).
− obsługa gry za pomocą klawiatury, strzałek, oraz klawiatury numerycznej i enter.
Reszta klawiszy będzie zablokowana tzn. inne sygnały nie będą rozpatrywane
− program sam generuje losową unikalną planszę sudoku tak więc każda gra
będzie inna.
− gracz ma możliwość wprowadzania swojej własnej planszy sudoku o ile jest
unikalną planszą Sudoku tj. ma tylko jedno rozwiązanie.
− W razie gdy gracz nie może sobie sam poradzić, program podpowie graczowi na
którym polu powinien się skupić lub sam wpisze jedną liczbę.
IV. Schemat działania programu
1.
2.
3.
4.
5.
6.
7.
8.
Start systemu, reset ustawień
Oczekiwanie na wybór opcji gry ( własna plansza lub wygenerowana)
Wprowadzanie planszy przez gracza
Błąd we wprowadzonej planszy przez gracza
Generacja losowej planszy przez układ
Podanie wygenerowanej planszy na pamięć
Rozpoczęcie gry ( wysłanie danych na monitor VGA )
Zakończenie gry
S tr on a |3
V. Schemat układu
VI. Algorytm rozgrywki zapisany w pseudokodzie
// rozpoczęcie gry
while tablica_niepełna
if ruch == wprowadzenie liczby
wpisz liczbę do tablicy Sudoku;
ilość_zapełnionych_pól++;
if ruch == usunięcie liczby i liczba była wpisana przez użytkownika
usuń daną liczbę;
ilość_zapełnionych_pól--;
if ruch == gracz prosi o podpowiedź
dopisz jedną liczbę;
ilość_zapełnionych_pól++;
if ruch == wyjście z gry
koniec programu;
if tablica poprawnie wypełniona
wyślij komunikat na ekran;
wróć do menu;
else
wyślij zapytanie;
if gracz chce grac od nowa
zacznij od nowa;
else wyjdź z gry
koniec;
S tr on a |4
VII.
Zebrane informacje
Sterownik monitora VGA – „Układy FPGA w przykładach” Majewski, Zbysioski
Opis płytki testowej: http://www.zpt.tele.pw.edu.pl/~ptomasze/docs/univ.pdf
„Projektowanie układów cyfrowych w języku VHDL” Mark Zwolinski
sterownik klawiatury: http://users.senet.com.au/~dwsmith/vhdl.htm#Key
sterownik VGA:
http://www.ee.ualberta.ca/~elliott/ee552/studentAppNotes/1998_w/Altera_UP1_Board_Map/vga.ht
ml

Podobne dokumenty