-
Notifications
You must be signed in to change notification settings - Fork 0
GameInfo
Marija Gjorgjieva edited this page Jul 3, 2022
·
1 revision
Во GameInfo класата се содржат сите променливи, објекти и методи кои се потребни за приказ и чување за време на игра:
-
Points
: број на поени кои играчот ги има за време на играта, еднаков на бројот на собрано суши по патеката -
gameInfo
: инстанца од класаLabel
, која ги прикажува деталите на играта на екран, се додава на контролите на GameScreen -
lives
: број на животи кои играчот ги има за време на играта -
livesImages
: листа од објекти од типPictureBox
, кои ги прикажуваат сликите од животи на игачот -
sound
: инстанца од класаSoundPlayer
, музика која се свири при средба со EvilBlob -
gameScreen
: инстанца од класаGameScreen
public int Points { set; get; } = 0;
private GameScreen gameScreen;
Label gameInfo;
public int lives { set; get; } = -1;
private List<PictureBox> livesImages;
private static SoundPlayer sound = new SoundPlayer(Properties.Resources.GhostEncounter);
public GameInfo(GameScreen gameScreen)
{
gameInfo = new Label();
this.gameScreen = gameScreen;
MakeLabel();
MakeLogo();
MakeLives();
}
Иницијализирање на livesImages
, креирање и поставување на сликите од срца на GameScreen
.
private void MakeLives()
{
livesImages = new List<PictureBox>();
livesImages.Add(new PictureBox());
livesImages.Add(new PictureBox());
livesImages.Add(new PictureBox());
int xPos = 800 - 30 * 3;
for (int i = 0; i < 3; i++)
{
livesImages[i].Image = Properties.Resources.FullHeart;
livesImages[i].Location = new Point(xPos, 2);
livesImages[i].Size = new Size(30, 30);
gameScreen.Controls.Add(livesImages[i]);
livesImages[i].SizeMode = PictureBoxSizeMode.StretchImage;
livesImages[i].BackgroundImage = Properties.Resources.BrickTile;
livesImages[i].BringToFront();
xPos += 30;
}
}
Поставување на сликата од лого на играта на центарот од лавиринтот.
private void MakeLogo()
{
PictureBox logo = new PictureBox();
logo.Image = Properties.Resources.Logo;
logo.Location = new Point(240, 360);
logo.Size = new Size(320, 80);
gameScreen.Controls.Add(logo);
logo.SizeMode = PictureBoxSizeMode.CenterImage;
logo.BackgroundImage = Properties.Resources.BrickTile;
logo.BringToFront();
}
Подесување и поставување на gameInfo
лабелата на gameScreen
.
private void MakeLabel()
{
gameInfo.Text = String.Format("Player:{0} Points:{1}", gameScreen.menu.player.playerName, Points);
gameInfo.Location = new Point(0, 2);
gameInfo.Font = new Font("Bahnschrift", 12, FontStyle.Bold);
gameInfo.TextAlign = ContentAlignment.MiddleCenter;
gameInfo.AutoSize = false;
gameInfo.Width = 40 * 6;
gameInfo.Height = 28;
gameScreen.Controls.Add(gameInfo);
gameInfo.BackColor = ColorTranslator.FromHtml("#F9B9BA");
gameInfo.ForeColor = Color.White;
gameInfo.BorderStyle = BorderStyle.Fixed3D;
gameInfo.BringToFront();
}
Ажурурање на gameInfo
лабелата.
public void UpdateLabel()
{
gameInfo.Text = String.Format("Player: {0} Points: {1}", gameScreen.menu.player.playerName, gameScreen.gameInfo.Points);
}
При повик се прави проверка за преостанати животи, доколку бројот на изгубени животи е на максимум, тогаш се прави повик на gameScreen.GameOver()
, а во спротива се свири само мелодија за средба со EvilBlob со повик на sound.Play()
. Се сменува сликата од полно во празно срце со livesImages[lives].Image = Properties.Resources.BlankHeart
.
public void LivesCheck()
{
if (lives == 2)
{
gameScreen.GameOver();
}
else
{
sound.Play();
}
livesImages[lives].Image = Properties.Resources.BlankHeart;
}