SQL C#. Klika pytań.

0

Cześć,

Napisałem program na zaliczenie SNAKE ale mam kilka problemów.

  1. jak do niego podpiać bazę danych MySQL ? Stworzyłem sobie baze SNAKE i tabele Snake_Zawo z kolumnami ( Imie i Wynik ) - bo tak naprawdę tylko to chcę przechowywać. Chciałbym aby po wpisaniu imienia w TextBox i kliknięciu ZAPISZ imię zapisało się do bazy a po ukończeniu gry doszedł też wynik z labelki lblScore.

  2. Chciałbym również aby z menu jak mamy Baza wyników - Statystyki - po kliknięciu w Statystki otwarło się nowe okno z wynikami.

  3. Ponadto jak zrobić żeby najpierw Gracz wpisał swoje imię, klik zapisz dzieki czemu TextBox stanie się nie aktywny i potem uruchomił grę i żeby gra działała, bo na chwilę obecną jest tak że TextBox i Zapisz button są aktywne cały czas.

  4. I ostatni problem to taki że jak uruchamiam grę po raz 1 to wąż porusza się z prawidłową prędkością, natomiast jak przegram i klikam nowa gra to wąż znacznie szybciej się porusza.

LINK DO KODU. Z góry dziękuje za pomoc

https://drive.google.com/file/d/0B8iQZNeysOGsallDbFdWWW8ySEE/view

1

Popatrzyłem na Twój kod i widzę, że już próbowałeś połączyć się z bazą danych MySQL za pomocą biblioteki MySqlConnection. Czy samo połączenie się udaje? Ewentualnie można spróbować na ODBC lub w ostateczności OleDB (jednak to ostatnie rozwiązanie jest przestarzałe i niezalecane), jednak w systemie musi być zainstalowany sterowanik ODBC lub OleDB. Jak już masz, to możesz po prostu musisz układać i wywoływać zapytania SQL. Można uzyć też LINQ to SQL lub dowolnego ORM, ale w Twoim przypadku to strzelanie z armaty do muchy.

Kiedyś na własne potrzeby utworzyłem uniwersalną klasę, która znacznie ułatwia obsługę dowolnej bazy danych z SQL, z MS SQL pracuje bardzo dobrze, ale na innych tez powinna pracować prawidłowo. Może Tobie ułatwi zadanie: http://pastebin.com/qrjNGBBC
W konstruktorze podajesz połączenie. Z tej klasy będą potrzebne Open, Close, GetData, ExecuteQuery, GetValueMap, GetValue, opisy w komentarzach. Ważną cechą jest wyświetlanie polecenia SQL w komunikacie wyjątku, bo w 99% przypadków przyczyną błędu jest źle ułożone polecenie SQL.

Przyda się https://www.connectionstrings.com/ do ustalenia postaci ConnectionString. Jeżeli nie możesz podłączyć się do bazy danych, to być może w nim coś pomieszałeś.

Otwarcie okna, to po prostu trzeba utworzyć nowy obiekt klasy Form2, czy jak sobie nazwiesz (dziedziczy po System.Windows.Forms) i na obiekcie wykonać metodę Show(). Każda kontrolka ma atrybut "Enabled", która określa, czy jest aktywna. Jeżeli chcesz, żeby kontrolka się uaktywniała lub wyłączała, to w procedurze przycisku wywołujesz na przykład TextBox1.Enabled = false, co powoduje wyłączenie aktywności kontrolki TextBox1.

Co do prędkości gry, to sprawdź dokładnie, czy przy pierwszej i każdej następnej grze jest ten sam interwał timera i czy jest dokładnie jeden raz podpięta procedura zdarzenia. Widzę, że przy każdym wywołaniu nowej gry ustawiasz interwał i podpinasz metodę UpdateScreen. Nie widzę w kodzie odpinania tej metody, więc myślę, że być może przy drugiej grze jest dwa razy uruchamiana procedura UpdateScreen przy każdym taktowaniu timera, a przy trzeciej grze będzie uruchamiana 3 razy. Procedurę zdarzenia podepnij jeden raz, a jak potrzeba podpinać na nowo, to sprawdzaj, czy jest podpięta i albo odpinaj po zakończeniu gry, albo nie podpinaj drugi raz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1