private void Timer_Tick(object sender, EventArgs e) //vsetko co sa udeje pocas jedneho ticku timeru { int pacManX, pacManY; //premenne ktore hovoria na ktorom indexe na mape map pacman stoji pacManX = pacman.PM_X / 40; //preratavanie suradnice X pacManY = pacman.PM_Y / 40; //preratavanie suradnice Y if (TestCollision() == true) { goToMenu(); //ak nastala kolizia ukonci hru return; } //skontroluj ci nezjedol mincu a vymaz ju if (map[pacManX, pacManY] == 2) { map[pacManX, pacManY] = 0; zostavajuciPocetPenazi--; userScore++; } //posun pacmana if ((pacman.PM_direction == 0) && (map[pacManX, pacManY - 1] != 1)) { pacman.PM_Y = pacman.PM_Y - 40; } if ((pacman.PM_direction == 1) && (map[pacManX - 1, pacManY] != 1)) { pacman.PM_X = pacman.PM_X - 40; } if ((pacman.PM_direction == 2) && (map[pacManX, pacManY + 1] != 1)) { pacman.PM_Y = pacman.PM_Y + 40; } if ((pacman.PM_direction == 3) && (map[pacManX + 1, pacManY] != 1)) { pacman.PM_X = pacman.PM_X + 40; } //skontroluj koliziu ducha a pacmana if (TestCollision() == true) { goToMenu(); //ak nastala kolizia ukonci hru return; } //pohyb duchov, cerveny duch chodi dokola po krajoch, zlty a ruzovy sa pohybuju nahodne //funkcia OneStep() vrati true ak sa pohli Random rnd = new Random(); //pre zlteho a ruzoveho ducha //cerveny duch if (Red.OneStep() == false) //ak sa cerveny neposunul, otoci sa dolava a posunie sa { if (Red.direction == 0) { Red.direction = 1; } else if (Red.direction == 1) { Red.direction = 2; } else if (Red.direction == 2) { Red.direction = 3; } else if (Red.direction == 3) { Red.direction = 0; } Red.OneStep(); } //zlty duch if (Yellow.OneStep() == false) //ak sa zlty neposunul, otoci sa nahodne a pokracuje { while (Yellow.OneStep() == false) //kym sa nemoze posunut, toci sa { Yellow.direction = rnd.Next(0, 4); } } else //nahodne sa moze otocit aj ked nenarazi na stenu, je tu 30 percentna sanca, inak by sa po case jeho trasa zmenila na trasu cerveneho { int zmena = rnd.Next(0, 10); if (zmena < 3) { Yellow.direction = rnd.Next(0, 4); } } //ruzovy duch, robi to iste co zlty if (Pink.OneStep() == false) //ak sa ruzovy neposunul, otoci sa nahodne a pokracuje { while (Pink.OneStep() == false) //kym sa nemoze posunut, toci sa { Pink.direction = rnd.Next(0, 4); } } else //nahodne sa moze otocit aj ked nenarazi na stenu, je tu 30 percentna sanca, inak by sa po case jeho trasa zmenila na trasu cerveneho { int zmena = rnd.Next(0, 10); if (zmena < 3) { Pink.direction = rnd.Next(0, 4); } } //skontroluj ci hrac nepresiel level if (zostavajuciPocetPenazi == 0) { if (momentalnyLevel == 3) //vyhral hru { //vypyta si username a ulozi ho do tabulky (cize do textfile Score.txt v priecinku Debug) na prve miesto timer.Stop(); string username = Microsoft.VisualBasic.Interaction.InputBox("Zadaj svoje meno:", "Gratulujem! Vyhral si hru so skore 300!", "unknown", -1, -1); UpdateScore(300, username); //300 je high score (maximalne 50+100+150 penazi moze pozbierat) goToMenu(); //vrati sa do menu } else //nastavi ho o level vyssie { timer.Stop(); MessageBox.Show("Gratulujem! Postupujes do dalsieho levelu!"); timer.Start(); momentalnyLevel++; zostavajuciPocetPenazi = momentalnyLevel * 50; RozmiestniPeniaze(zostavajuciPocetPenazi); //rozmiestni mince nahodne timer.Interval = timer.Interval - 100; //nastavi hru rychlejsie } } Invalidate(); //updatnutie celej mapy }