Posiłkujesz się bardzo dużo komentarzami To jest pierwsza rzecz nad którą musisz popracować w pierwszej kolejności. Wydaje mi się że mógłbyć też bardziej dzielić kod na mniejsze funkcje co zwiekszy czytelność. np:
//losowanie pierwszego klocka
int n = rnd.Next(7);
Możesz zamienić na
int currentBlockId = rnd.Next(7);
Co już daje więcej informacji. Nie dość ze patrząc na kod jest on mniejszy to dodatkowo mówi nam od tym że :
- losuje liczbę
- a wylosowana liczba jest identyfikatorem a nie obiektem klocka
Można jeszcze pozbyć się magicznegu numerka 7 który nic nie mówi i jest bajka :)
const int NUMBER_OF_BLOCK_SHAPE = 7;
int currentBlockId = rnd.Next(NUMBER_OF_BLOCK_SHAPE);
Zapisuj nazwu zeminnych tak aby coś ci mówiły
const int M = 21; //wysokosc planczy
const int N = 10; //szerokosc planszy
float timer = 0f; //czas do spadania klocka
float timer2 = 0f; //czas do przesuwania klocka
float delay = 0.66f; //opoznenie do spadania klocka
float delay2 = 0.1f; //opoznienie do przesowana klocka
A przecież można nazwać to :
const int MAP_HEIGHT = 21;
const int MAP_WIDTH = 10;
...
Dzięki temu w każdym miejscu kodu będziesz wiedział co to za zmienna teraz gdy widziałem zmienną N w kodzie musiałem wracać na góre pliku zeby dowiedzieć się co ta zmienna robi. Na szczęście edytory potrafią w bardzo łatwy sposób zmieniać nazwy zmiennych dlatego nie powinieneś mieć problemów z naprawą tego :)
Warto też poznać obiektywność i zrobić osobne klasy aby kod był bardziej podzielony na mniejsze kawałki. Trzymanie wszystkiego w jednej klasie Game nie jest dobrym pomysłem ;)