Mängu kirjeldus
Antud projekt on konsoolimäng Madu, mis on kirjutatud C# keeles. Mängija juhib madu klaviatuuri abil. Mängu eesmärk on koguda toitu, mis ilmub juhuslikult mänguväljal. Iga kord kui madu sööb toitu, kasvab ta pikemaks. Mäng lõpeb, kui madu põrkab vastu seina või hammustab iseennast.



Mängu seaded
Klass ManguSeaded määrab mängu raskuse, mänguvälja suuruse ja kiiruse.
Raskusaste valitakse:
switch (tase)
Näiteks:
Tase 1:
Laius = 40;
Kõrgus = 20;
Kiirus = 200;
Tase 2:
Laius = 50;
Kõrgus = 25;
Kiirus = 120;
Tase 3:
Laius = 60;
Kõrgus = 30;
Kiirus = 70;

Mänguvälja loomine
Mänguvälja piirid luuakse klassis Kaart.
Piirid (takistused) salvestatakse listi:
public List<Punkt> Takistused
Ülemine ja alumine sein luuakse tsükliga:
for (int x = 0; x < laius; x++)
Selles lisatakse punktid:
Takistused.Add(new Punkt(x, 0, '#', Värvid.SeinaVärv));
Takistused.Add(new Punkt(x, kõrgus - 1, '#', Värvid.SeinaVärv));
Vasak ja parem sein luuakse tsükliga:
for (int y = 0; y < kõrgus; y++)
ja lisatakse:
Takistused.Add(new Punkt(0, y, '#', Värvid.SeinaVärv));
Takistused.Add(new Punkt(laius - 1, y, '#', Värvid.SeinaVärv));
Kõik seinad joonistatakse meetodiga:
public void Joonista()
{
foreach (var p in Takistused)
{
p.Joonista();
}
}
Punktide süsteem
Klass Punkt kirjeldab kõiki mängu objekte (madu, toit, seinad).
Olulised omadused:
public int X { get; set; }
public int Y { get; set; }
public char Sümbol { get; set; }
public ConsoleColor Värv { get; set; }
Objekti joonistamine:
public void Joonista()
{
Console.ForegroundColor = Värv;
Console.SetCursorPosition(X, Y);
Console.Write(Sümbol);
Console.ResetColor();
}
Objekti kustutamine:
public void Kustuta()
{
Console.SetCursorPosition(X, Y);
Console.Write(' ');
}
Toidu genereerimine
Klass Toit vastutab toidu loomise eest juhuslikus kohas.
Juhuslikud koordinaadid:
int x = rnd.Next(1, laius - 1);
int y = rnd.Next(1, kõrgus - 1);
Toidu loomine:
Asukoht = new Punkt(x, y, '@', Värvid.ToiduVärv);
Toidu kuvamine ekraanil:
Asukoht.Joonista();
Enese hammustamise kontroll
Kontrollitakse, kas madu on endaga kokku põrganud:
public bool HammustasEnnast()
{
return keha.Skip(1)
.Any(p => p.X == pea.X &&
p.Y == pea.Y);
}
Kui pea koordinaadid langevad kokku keha osaga, tagastatakse true ja mäng lõpeb.

Mängu kohandamine

Mao värv
Madu värv määratakse klassis Värvid ning seda kasutatakse klassis Uss, kui luuakse mao keha osad:
new Punkt(x, y, '●', Värvid.MaoVärv);
See võimaldab muuta kogu mao värvi ühes kohas, ilma et peaks muutma iga kehaosa eraldi.

Toidu värv
Toit luuakse klassis Toit, kus määratakse selle sümbol ja värv:
Asukoht = new Punkt(x, y, '@', Värvid.ToiduVärv);
See võimaldab muuta toidu välimust (näiteks õun punaseks, täheks või muuks sümboliks).

Mänguvälja (tausta) värv
Mänguvälja seinad joonistatakse klassis Kaart. Seinte värv määratakse samuti Värvid klassis:
new Punkt(x, 0, '#', Värvid.SeinaVärv);
Sellisel viisil saab muuta kogu mänguvälja välimust, näiteks muuta seinad siniseks, roheliseks või halliks.
Mul on ka eraldi värvi klass
public static class Värvid
{
public static ConsoleColor MaoVärv = ConsoleColor.White;
public static ConsoleColor ToiduVärv = ConsoleColor.Red;
public static ConsoleColor SeinaVärv = ConsoleColor.Yellow;
}
}