Skip to content
Marija Gjorgjieva edited this page Jul 3, 2022 · 1 revision

Во Sushi класата се содржат сите променливи, објекти и методи кои се потребни за приказ и колектирање на суши од лавиринтот:

  • gameScreen: инстанца од класа GameScreen
  • sushi: матрица од објекти од класата PictureBox, слики кои се поставуваат и додаваат на контролата на gameScreen за нивен приказ
  • Player: инстанца од класа SoundPlayer, музика која се свири при колектирање на суши
  • CollectedSushi: integer променлива која го означува бројот на суши колектирано од играчот за време на една игра
  • CollectedSushi: integer променлива која го означува максималниот број на суши кое е расфрлано низ лавиринтот
        private GameScreen gameScreen;
        private PictureBox[,] sushi = new PictureBox[20, 20];
        private static SoundPlayer Player = new SoundPlayer(Properties.Resources.Coin);
        private int CollectedSushi = 0;
        private int maxSushiCounter = 0;

        public Sushi(GameScreen gameScreen)
        {
            Player.Load();
            this.gameScreen = gameScreen;
        }

Методи

CreateSushi

Креирање на сликите на суши, и нивно поставување и додавање на контролите на gameScreen.

        public void CreateSushi()
        {
            int startX = 0;
            int startY = 0;
            for (int i = 0; i < 20; i++)
            {
                for (int j = 0; j < 20; j++)
                {
                    if (gameScreen.maze.Matrix[i, j] == 0)
                    {
                       sushi[i,j]=new PictureBox();
                       sushi[i,j].Image = Properties.Resources.Sushi;
                       sushi[i, j].Size = new Size(40, 40);
                       sushi[i, j].SizeMode = PictureBoxSizeMode.CenterImage;
                       sushi[i, j].Location = new Point(startX, startY);
                       sushi[i, j].BackColor = Color.Transparent;
                       gameScreen.Controls.Add(sushi[i, j]);
                       sushi[i, j].BringToFront();
                       maxSushiCounter++;
                    }
                    startX += 40;
                }
                startX = 0;
                startY += 40;
            }
        }

EatFood

Со повикувањето на овој метод се проверува дали на соодветните координати x и y се наоѓа суши кое не е колектирано ( вредноста во gameScreen.maze.Matrix за тие координати е 0). Доколку тоа е случајот, (1) се свири мелодија за колектирано суши со Player.Play, (2) се бриши сликата од матрицата sushi, (3) во gameScreen.maze.Matrix вредноста за тие координати се поставува на три, (4) бројот на CollectedSushi се зголемува за еден, (5) бројот на поени gameScreen.gameInfo.Points се поставува на вредноста на CollectedSushi. Доколку бројот на колектирано суши CollectedSushi е еднаков со максималниот број на суши во играта maxSushiCounter, се повикува методот WinGame од gameScreen.

        public void EatFood(int x, int y)
        {
            if (gameScreen.maze.Matrix[y, x] == 0)
            { 
                    Player.Play(); // (1)
                    sushi[y, x].Visible = false;
                    sushi[y, x] = null; // (2)
                    gameScreen.maze.Matrix[y, x] = 3; // (3)
                    CollectedSushi += 1; // (4)
                    gameScreen.gameInfo.Points = CollectedSushi; // (5)
            }
         
            if(CollectedSushi==maxSushiCounter)
            {
                gameScreen.WinGame();
            }

            GC.Collect();
            GC.WaitForPendingFinalizers();
        }      
    
Clone this wiki locally