-
Notifications
You must be signed in to change notification settings - Fork 0
Sushi
Во 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;
}
Креирање на сликите на суши, и нивно поставување и додавање на контролите на 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;
}
}
Со повикувањето на овој метод се проверува дали на соодветните координати 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();
}