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