Dunkleosteus - Hra.cs
C# .NET
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Audio;
using System;
/*
*
* Autor: Jakub Raida, 2021
* Programováno pro ITNetwork.cz
* Prosím o nešíření kamkoliv jinam
*
*/
namespace Dunkleosteus
{
public class Hra : Game
{
private GraphicsDeviceManager _graphics;
private SpriteBatch _spriteBatch;
// Vstup
public KeyboardState Ovladani_Klavesnice { get; private set; }
public MouseState Ovladani_Mysi { get; private set; }
public enum MysM { Zakazana, Vertikalne, Povolena };
public MysM ModMysi { get; private set; }
public int PocitadloKurzoru { get; private set; }
public int ProtiPretizeniKlavesy { get; private set; }
// Rozměry okna
public int SirkaOkna { get; private set; }
public int VyskaOkna { get; private set; }
// Zvuky
public Song Hudba_Uvod { get; private set; }
public Song Hudba_Dark { get; private set; }
public SoundEffect Zvuk_Nedobry { get; private set; }
public SoundEffect Zvuk_Hryz { get; private set; }
public SoundEffect Zvuk_Event { get; private set; }
// Sprity
public Texture2D Akter_Uvod { get; private set; }
public Texture2D Akter_Fosilie { get; private set; }
public Texture2D[] Akter_Pozadi { get; private set; }
public Texture2D Akter_Dunkle { get; private set; }
public Texture2D Akter_Dunkle_Immortal { get; private set; }
public Texture2D Akter_Rasa { get; private set; }
public Texture2D Akter_Srdicko { get; private set; }
public Texture2D Akter_Rybka { get; private set; }
public Texture2D Akter_Rybka2 { get; private set; }
public Texture2D Akter_Kraken { get; private set; }
public Texture2D Akter_Mega { get; private set; }
public Texture2D Akter_Mega2 { get; private set; }
public Texture2D Akter_Turbo { get; private set; }
public Texture2D Akter_Kraken2 { get; private set; }
public Texture2D Akter_Sub { get; private set; }
public Texture2D Akter_Immortal { get; private set; }
public Texture2D Akter_Ichtyostega { get; private set; }
// Fonty
public SpriteFont Pismo_Normal { get; private set; }
public SpriteFont Pismo_More { get; private set; }
public SpriteFont Pismo_Hlaseni { get; private set; }
public SpriteFont Pismo_Listina { get; private set; }
// Náhoda
public Random Nahoda { get; private set; }
// Konfigurační proměnné
public int Konfig_DunkleZacatekX { get; private set; }
public int Konfig_DunkleZacatekY { get; private set; }
public int Konfig_PocetNavstevniku { get; private set; }
public int Konfig_UplneMaxZdravi { get; private set; }
public int Konfig_MaximalniDelkaNicknamu { get; private set; }
// Bindy
public Keys Klavesa_Nahoru { get; private set; }
public Keys Klavesa_Dolu { get; private set; }
public Keys Klavesa_Vlevo { get; private set; }
public Keys Klavesa_Vpravo { get; private set; }
public int KrokRebindu { get; private set; }
public Keys[] Klavesa_Z { get; private set; }
// Stavy hry
public enum StavH { HraJede, UvodniObrazovka, Smrt, ListinaVysledku, RebindKlaves };
public StavH StavHry { get; private set; }
public enum ZvukyS { Vse, JenEfekty, JenHudba, Nic };
public ZvukyS StavZvuku { get; private set; }
// Pozice a stavy
public int[] DunkleATeckyPoziceX { get; private set; }
public int[] DunkleATeckyPoziceY { get; private set; }
public int[] NavstevnikPoziceX { get; private set; }
public int[] NavstevnikPoziceY { get; private set; }
public int[] NavstevnikOdpocet { get; private set; }
public enum SmerN { Nahoru, Vlevo, Dolu, Vpravo };
public SmerN[] NavstevnikSmer { get; private set; }
public bool[] NavstevnikExistuje { get; private set; }
public enum TypN { Rasa, Kraken, Rybka, Rybka2, Mega, Mega2, Turbo, Kraken2, Sub, Immortal, Ichtyostega };
public TypN[] NavstevnikTyp { get; private set; }
public TypN Udalost { get; private set; }
public int PocitadloUdalosti { get; private set; }
// Další herní proměnné
public Color Barva { get; private set; }
public double DesetinnaRychlost { get; private set; }
public int Rychlost { get; private set; }
public bool PohybTecky { get; private set; }
public int Zdravi { get; private set; }
public int ZmenaZdravi { get; private set; }
public int Pocitadlo { get; private set; }
public double DesetinneSkore { get; private set; }
public int Skore { get; private set; }
public string Vypis { get; private set; }
public int RozmerA { get; private set; }
public int RozmerB { get; private set; }
public int RozmerC { get; private set; }
public int Boost { get; private set; }
public int Nezranitelnost { get; private set; }
public int Uroven { get; private set; }
public int MaxZdravi { get; private set; }
public int HustotaNavstev { get; private set; }
public int CisloPozadi { get; private set; }
public int LosTypu { get; private set; }
public int Zabitych { get; private set; }
public double UplavanyMetry { get; private set; }
public int UplavanyKilometry { get; private set; }
public bool ProbihaZapisJmena { get; private set; }
public string ZapisovaneJmeno { get; private set; }
public string ZapisovanePismeno { get; private set; }
// Třídy
public UlozeniVysledku UlozVysledek { get; private set; }
public Listina Vysledky { get; private set; }
public Hra()
{
_graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
IsMouseVisible = false;
// Rozměry okna
SirkaOkna = 1600;
VyskaOkna = 900;
// Náhoda
Nahoda = new Random();
// Třídy
UlozVysledek = new UlozeniVysledku();
Vysledky = new Listina();
}
protected override void Initialize()
{
// TODO: Add your initialization logic here
NastavBindyNaDefault();
NastavPromenneNaDefault();
// Velikost okna
_graphics.PreferredBackBufferWidth = SirkaOkna;
_graphics.PreferredBackBufferHeight = VyskaOkna;
_graphics.IsFullScreen = true;
_graphics.ApplyChanges();
base.Initialize();
}
protected override void LoadContent()
{
_spriteBatch = new SpriteBatch(GraphicsDevice);
// TODO: use this.Content to load your game content here
// Pole pro pozadí
Akter_Pozadi = new Texture2D[27];
// Sprity - pozadí
Pocitadlo = -1;
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_2");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_3");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_4");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_5");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_6");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_7");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_8");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_9");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_10");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_11");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_12");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_13");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_14");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_15");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_16");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_17");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_18");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_19");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_20");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_21");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_22");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_23");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_24");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_25");
Pocitadlo++; Akter_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Sprity\pozadi_ocean_26");
// Ostatní sprity
Akter_Uvod = Content.Load<Texture2D>(@"Sprity\uvodni");
Akter_Fosilie = Content.Load<Texture2D>(@"Sprity\fosilie");
Akter_Dunkle = Content.Load<Texture2D>(@"Sprity\akter_dunkleosteus");
Akter_Dunkle_Immortal = Content.Load<Texture2D>(@"Sprity\akter_dunkleosteus_iddqd");
Akter_Srdicko = Content.Load<Texture2D>(@"Sprity\pocitadle_zivot");
Akter_Rasa = Content.Load<Texture2D>(@"Sprity\akter_rasa");
Akter_Rybka = Content.Load<Texture2D>(@"Sprity\akter_rybka");
Akter_Rybka2 = Content.Load<Texture2D>(@"Sprity\akter_rybka_lepsi");
Akter_Kraken = Content.Load<Texture2D>(@"Sprity\akter_kraken");
Akter_Kraken2 = Content.Load<Texture2D>(@"Sprity\akter_nautiloid");
Akter_Mega = Content.Load<Texture2D>(@"Sprity\akter_megalodon");
Akter_Mega2 = Content.Load<Texture2D>(@"Sprity\akter_megalodon_vetsi");
Akter_Turbo = Content.Load<Texture2D>(@"Sprity\akter_ammonite");
Akter_Sub = Content.Load<Texture2D>(@"Sprity\akter_sub");
Akter_Immortal = Content.Load<Texture2D>(@"Sprity\akter_iddqd");
Akter_Ichtyostega = Content.Load<Texture2D>(@"Sprity\akter_ichtyostega");
// Fonty
Pismo_Normal = Content.Load<SpriteFont>(@"Fonty\font_normalni");
Pismo_More = Content.Load<SpriteFont>(@"Fonty\font_more");
Pismo_Hlaseni = Content.Load<SpriteFont>(@"Fonty\font_hlaseni");
Pismo_Listina = Content.Load<SpriteFont>(@"Fonty\font_listina");
// Hudba
Hudba_Uvod = Content.Load<Song>(@"Zvuky\hudba_uvod");
Hudba_Dark = Content.Load<Song>(@"Zvuky\hudba_dark");
Zvuk_Nedobry = Content.Load<SoundEffect>(@"Zvuky\zvuk_nedobry");
Zvuk_Hryz = Content.Load<SoundEffect>(@"Zvuky\zvuk_hryz");
Zvuk_Event = Content.Load<SoundEffect>(@"Zvuky\zvuk_event");
// Opakování hudby
MediaPlayer.IsRepeating = true;
PrepniHudbu(Hudba_Uvod);
}
protected override void Update(GameTime gameTime)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
Exit();
// TODO: Add your update logic here
SamotnaHra(gameTime);
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
// TODO: Add your drawing code here
_spriteBatch.Begin();
Kresli();
_spriteBatch.End();
base.Draw(gameTime);
}
/*
*
* INICIALIZAČNÍ METODY
*
*/
public void NastavBindyNaDefault()
{
Klavesa_Nahoru = Keys.Up;
Klavesa_Dolu = Keys.Down;
Klavesa_Vpravo = Keys.Right;
Klavesa_Vlevo = Keys.Left;
}
public void NastavPromenneNaDefault()
{
// Stav hry
StavHry = StavH.UvodniObrazovka;
KrokRebindu = 0;
Udalost = TypN.Rasa;
PocitadloUdalosti = 0;
ModMysi = MysM.Zakazana;
PocitadloKurzoru = 0;
ProtiPretizeniKlavesy = 0;
ProbihaZapisJmena = false;
StavZvuku = ZvukyS.Vse;
// Konfigurace hry
Konfig_DunkleZacatekX = 30;
Konfig_DunkleZacatekY = 360;
Konfig_PocetNavstevniku = 15;
Konfig_UplneMaxZdravi = 25;
Konfig_MaximalniDelkaNicknamu = 20;
// Různé proměnné
ZapisovaneJmeno = String.Empty;
ZapisovanePismeno = String.Empty;
DesetinnaRychlost = Rychlost = 8;
Zdravi = 12;
MaxZdravi = 12;
ZmenaZdravi = 0;
Pocitadlo = 0;
DesetinneSkore = Skore = 0;
RozmerA = RozmerB = RozmerC = 0;
Uroven = 1;
Boost = 0;
Nezranitelnost = 0;
HustotaNavstev = 20;
LosTypu = 1;
Zabitych = 0;
UplavanyKilometry = 0;
UplavanyMetry = 0;
PohybTecky = false;
Vypis = String.Empty;
Barva = Color.Teal;
// Pole pro různá pozadí
CisloPozadi = 0;
// Pole pro pozice a stavy dunkleostea a teček
DunkleATeckyPoziceX = new int[10];
DunkleATeckyPoziceY = new int[10];
// Pole pro pozice a stavy "návštěvníků"
NavstevnikPoziceX = new int[Konfig_PocetNavstevniku];
NavstevnikPoziceY = new int[Konfig_PocetNavstevniku];
NavstevnikOdpocet = new int[Konfig_PocetNavstevniku];
NavstevnikSmer = new SmerN[Konfig_PocetNavstevniku];
NavstevnikExistuje = new bool[Konfig_PocetNavstevniku];
NavstevnikTyp = new TypN[Konfig_PocetNavstevniku];
// POZICE AKTÉRŮ (VÝCHOZÍ)
// Dunkleosteus ([0])
DunkleATeckyPoziceX[0] = Konfig_DunkleZacatekX;
DunkleATeckyPoziceY[0] = Konfig_DunkleZacatekY;
// Mořské tečky ([1] až [9])
for (int i = 1; i < 10; i++)
{
DunkleATeckyPoziceX[i] = SirkaOkna;
DunkleATeckyPoziceY[i] = Nahoda.Next(25, VyskaOkna - 25);
}
// "Návštěvníci" ([0] až [?])
for (int i = 0; i < Konfig_PocetNavstevniku; i++)
{
NavstevnikPoziceX[i] = SirkaOkna;
NavstevnikPoziceY[i] = Nahoda.Next(25, VyskaOkna - 200);
NavstevnikTyp[i] = TypN.Rasa;
NavstevnikSmer[i] = SmerN.Vlevo;
EliminovatNavstevnika(i);
}
}
/*
*
* VYKRESLOVACÍ METODY
*
*/
public void Kresli()
{
switch (StavHry)
{
default:
case StavH.UvodniObrazovka:
VykresliUvodniObrazovku();
break;
case StavH.RebindKlaves:
VykresliRebind();
break;
case StavH.HraJede:
VykresliPozadi();
VykresliNavstevniky();
VykresliDunkleostea();
VykresliZivoty();
VykresliUdaje();
VykresliMorskeTecky();
break;
case StavH.Smrt:
VykresliZaverecneHodnoceni();
break;
case StavH.ListinaVysledku:
VykresliListinu();
VykresliMorskeTecky();
break;
}
}
public void PrepniHudbu(Song hudba)
{
if (MediaPlayer.Queue.ActiveSong != hudba) { MediaPlayer.Play(hudba); }
}
public void PustZvuk(SoundEffect efekt)
{
if (StavZvuku != ZvukyS.JenHudba && StavZvuku != ZvukyS.Nic)
{
efekt.Play();
}
}
public void VykresliListinu()
{
// Pozadí
_spriteBatch.Draw(Akter_Pozadi[0], new Vector2(0, 0), Color.White);
// Nadpis a upozornění
Vypis = String.Format("LIST OF 25 BEST FOSSILS");
_spriteBatch.DrawString(Pismo_Hlaseni, Vypis, new Vector2(200, 35), Color.Goldenrod);
Vypis = String.Format("(Click R for return to game.)");
_spriteBatch.DrawString(Pismo_Listina, Vypis, new Vector2(200, 90), Color.DimGray);
// Listina
_spriteBatch.DrawString(Pismo_Listina, Vysledky.UkazListinu(), new Vector2(200, 125), Color.LightGoldenrodYellow);
}
public void VykresliRebind()
{
_spriteBatch.Draw(Akter_Pozadi[0], new Vector2(0, 0), Color.White);
VykresliTextyProRebind(KrokRebindu + 1);
}
public void VykresliZaverecneHodnoceni()
{
_spriteBatch.Draw(Akter_Fosilie, new Vector2(0, 0), Color.White);
Vypis = String.Format("You have bravely fallen.");
_spriteBatch.DrawString(Pismo_Hlaseni, Vypis, new Vector2(50, 80), Color.LightGoldenrodYellow);
Vypis = String.Format("Your deeds will be remembered by paleontologists in future.");
_spriteBatch.DrawString(Pismo_Normal, Vypis, new Vector2(50, 140), Color.Goldenrod);
Vypis = String.Format("Reached level: {0}\nGained score: {1}\nKilled lifeforms: {2}\nSwam distance: {3} km {4} m", Uroven, Skore, Zabitych, UplavanyKilometry, (int)Math.Round(UplavanyMetry));
_spriteBatch.DrawString(Pismo_Normal, Vypis, new Vector2(50, 190), Color.GreenYellow);
if (Skore > 999)
{
ProbihaZapisJmena = true;
RozhraniProZapisJmena();
}
else
{
Vypis = String.Format("You must have score of at least 1000 points to be saved.\nPress R for restart of the game or ESC to close it.");
_spriteBatch.DrawString(Pismo_Normal, Vypis, new Vector2(50, 450), Color.Salmon);
}
}
public void RozhraniProZapisJmena()
{
Vypis = String.Format("Type your (nick)name, please, and submit it with ENTER:");
_spriteBatch.DrawString(Pismo_Normal, Vypis, new Vector2(50, 400), Color.OrangeRed);
_spriteBatch.DrawString(Pismo_Hlaseni, ZapisovaneJmeno, new Vector2(50, 450), Color.IndianRed);
}
public void VykresliTextyProRebind(int zvyrazneny)
{
Vypis = String.Format("1) Press your key for MOVING UP, please.");
if (zvyrazneny != 1) { Barva = Color.DarkSlateGray; } else { Barva = Color.YellowGreen; }
_spriteBatch.DrawString(Pismo_Normal, Vypis, new Vector2(100, 200), Barva);
Vypis = String.Format("2) Press your key for MOVING DOWN, please.");
if (zvyrazneny != 2) { Barva = Color.DarkSlateGray; } else { Barva = Color.YellowGreen; }
_spriteBatch.DrawString(Pismo_Normal, Vypis, new Vector2(100, 230), Barva);
Vypis = String.Format("3) Press your key for MOVING LEFT / SLOWING, please.");
if (zvyrazneny != 3) { Barva = Color.DarkSlateGray; } else { Barva = Color.YellowGreen; }
_spriteBatch.DrawString(Pismo_Normal, Vypis, new Vector2(100, 260), Barva);
Vypis = String.Format("4) Press your key for MOVING RIGHT / ACCELERATION, please.");
if (zvyrazneny != 4) { Barva = Color.DarkSlateGray; } else { Barva = Color.YellowGreen; }
_spriteBatch.DrawString(Pismo_Normal, Vypis, new Vector2(100, 290), Barva);
Vypis = String.Format("5) Now press SPACEBAR for game to begin.");
if (zvyrazneny != 5) { Barva = Color.DarkSlateGray; } else { Barva = Color.Gold; }
_spriteBatch.DrawString(Pismo_Normal, Vypis, new Vector2(100, 320), Barva);
}
public void VykresliUvodniObrazovku()
{
_spriteBatch.Draw(Akter_Uvod, new Vector2(0, 0), Color.White);
}
public void VykresliZivoty()
{
for (int i = 0; i < Zdravi; i++)
{
_spriteBatch.Draw(Akter_Srdicko, new Vector2(i * 50 + 10, 840), Color.White * 0.6f);
}
}
public void VykresliUdaje()
{
Vypis = String.Format("Velocity: {0} m/s | Depth: {1} m | Swam: {2} km {3} m", Rychlost, 10 + (int)Math.Round((double)DunkleATeckyPoziceY[0] / 20), UplavanyKilometry, (int)Math.Round(UplavanyMetry));
_spriteBatch.DrawString(Pismo_Normal, Vypis, new Vector2(15, 800), Color.ForestGreen * 0.6f);
Vypis = String.Format("Score: {0} | Kills: {1} | Level: {2}", Skore, Zabitych, Uroven);
_spriteBatch.DrawString(Pismo_Normal, Vypis, new Vector2(15, 770), Color.LawnGreen * 0.6f);
if (Udalost != TypN.Rasa)
{
OhlasProbihajiciUdalost();
}
Vypis = VypisModMysi();
_spriteBatch.DrawString(Pismo_Normal, Vypis, new Vector2(700, 800), Color.SlateGray * 0.6f);
Vypis = VypisModZvuku();
_spriteBatch.DrawString(Pismo_Normal, Vypis, new Vector2(950, 800), Color.SlateGray * 0.6f);
}
public string VypisModZvuku()
{
switch (StavZvuku)
{
default:
return String.Format("Sounds: UNKNOWN");
case ZvukyS.Vse:
return String.Format("Sounds: ALL");
case ZvukyS.JenEfekty:
return String.Format("Sounds: EFFECTS");
case ZvukyS.JenHudba:
return String.Format("Sounds: MUSIC");
case ZvukyS.Nic:
return String.Format("Sounds: OFF");
}
}
public string VypisModMysi()
{
switch (ModMysi)
{
default:
return String.Format("Mouse: UNKNOWN");
case MysM.Zakazana:
return String.Format("Mouse: OFF");
case MysM.Vertikalne:
return String.Format("Mouse: VERTICAL");
case MysM.Povolena:
return String.Format("Mouse: ON");
}
}
public void OhlasProbihajiciUdalost()
{
switch (Udalost)
{
default:
Vypis = String.Format("Unknown Event!");
break;
case TypN.Rybka:
Vypis = String.Format("Fish School Event!");
break;
case TypN.Rybka2:
Vypis = String.Format("Merry Fishing Event!");
break;
case TypN.Kraken:
Vypis = String.Format("Octo-attack Event!");
break;
case TypN.Kraken2:
Vypis = String.Format("Nautiloid Fleet Event!");
break;
case TypN.Mega:
Vypis = String.Format("Sharknado Event!");
break;
case TypN.Mega2:
Vypis = String.Format("Megalodon Hell Event!");
break;
case TypN.Ichtyostega:
Vypis = String.Format("Swim or Walk? Event!");
break;
}
_spriteBatch.DrawString(Pismo_Hlaseni, Vypis, new Vector2(400, 50), Color.LightGoldenrodYellow * 0.9f);
}
public void VykresliNavstevniky()
{
for (int i = 0; i < Konfig_PocetNavstevniku; i++)
{
// Vykreslíme existující návštěvníky
if (NavstevnikExistuje[i])
{
switch (NavstevnikTyp[i])
{
default:
case TypN.Rasa:
_spriteBatch.Draw(Akter_Rasa, new Vector2(NavstevnikPoziceX[i], NavstevnikPoziceY[i]), Color.White * 0.1f);
break;
case TypN.Rybka:
_spriteBatch.Draw(Akter_Rybka, new Vector2(NavstevnikPoziceX[i], NavstevnikPoziceY[i]), Color.White);
break;
case TypN.Rybka2:
_spriteBatch.Draw(Akter_Rybka2, new Vector2(NavstevnikPoziceX[i], NavstevnikPoziceY[i]), Color.White);
break;
case TypN.Kraken:
_spriteBatch.Draw(Akter_Kraken, new Vector2(NavstevnikPoziceX[i], NavstevnikPoziceY[i]), Color.White);
break;
case TypN.Kraken2:
_spriteBatch.Draw(Akter_Kraken2, new Vector2(NavstevnikPoziceX[i], NavstevnikPoziceY[i]), Color.White);
break;
case TypN.Mega:
_spriteBatch.Draw(Akter_Mega, new Vector2(NavstevnikPoziceX[i], NavstevnikPoziceY[i]), Color.White);
break;
case TypN.Mega2:
_spriteBatch.Draw(Akter_Mega2, new Vector2(NavstevnikPoziceX[i], NavstevnikPoziceY[i]), Color.White);
break;
case TypN.Turbo:
_spriteBatch.Draw(Akter_Turbo, new Vector2(NavstevnikPoziceX[i], NavstevnikPoziceY[i]), Color.White);
break;
case TypN.Sub:
_spriteBatch.Draw(Akter_Sub, new Vector2(NavstevnikPoziceX[i], NavstevnikPoziceY[i]), Color.White);
break;
case TypN.Immortal:
_spriteBatch.Draw(Akter_Immortal, new Vector2(NavstevnikPoziceX[i], NavstevnikPoziceY[i]), Color.White);
break;
case TypN.Ichtyostega:
_spriteBatch.Draw(Akter_Ichtyostega, new Vector2(NavstevnikPoziceX[i], NavstevnikPoziceY[i]), Color.White);
break;
}
}
}
}
public void VykresliDunkleostea()
{
if (Nezranitelnost > 0)
{
_spriteBatch.Draw(Akter_Dunkle_Immortal, new Vector2(DunkleATeckyPoziceX[0], DunkleATeckyPoziceY[0]), Color.White);
}
else
{
_spriteBatch.Draw(Akter_Dunkle, new Vector2(DunkleATeckyPoziceX[0], DunkleATeckyPoziceY[0]), Color.White);
}
}
public void VykresliPozadi()
{
CisloPozadi = Uroven - 1;
if (CisloPozadi > 25) { CisloPozadi = 25; }
if (CisloPozadi < 0) { CisloPozadi = 0; }
_spriteBatch.Draw(Akter_Pozadi[CisloPozadi], new Vector2(0, 0), Color.White);
}
public void VykresliMorskeTecky()
{
for (int i = 1; i < 10; i++)
{
_spriteBatch.DrawString(Pismo_More, ".", new Vector2(DunkleATeckyPoziceX[i], DunkleATeckyPoziceY[i]), BarvaMorskeTecky(i));
}
}
public Color BarvaMorskeTecky(int i)
{
switch (i)
{
case 1:
default:
return Color.Cyan;
case 2:
return Color.Aqua;
case 3:
return Color.Blue;
case 4:
return Color.AliceBlue;
case 5:
return Color.Teal;
case 6:
return Color.Green;
case 7:
return Color.DeepSkyBlue;
case 8:
return Color.SeaGreen;
case 9:
return Color.LightSeaGreen;
}
}
/*
*
* HERNÍ METODY
*
*/
public void SamotnaHra(GameTime casHry)
{
switch (StavHry)
{
default:
case StavH.UvodniObrazovka:
CekameNaMezernik();
break;
case StavH.RebindKlaves:
RebindujKlavesy();
break;
case StavH.HraJede:
HlavniHra();
break;
case StavH.Smrt:
ZapisovaniJmena();
KontrolaVynucenehoRestartu();
break;
case StavH.ListinaVysledku:
KontrolaVynucenehoRestartu();
PosunMorskychTecekVlevo();
break;
}
}
public void ZapisovaniJmena()
{
if (ProbihaZapisJmena)
{
if (ProtiPretizeniKlavesy < 1)
{
Ovladani_Klavesnice = Keyboard.GetState();
if (Ovladani_Klavesnice.GetPressedKeys().Length != 0)
{
Keys[] Klavesa_Z = Ovladani_Klavesnice.GetPressedKeys();
foreach (Keys klavesa in Klavesa_Z)
{
ProtiPretizeniKlavesy = 6;
switch (klavesa)
{
default:
if (ZapisovaneJmeno.Length <= Konfig_MaximalniDelkaNicknamu)
{
ZapisovanePismeno = klavesa.ToString();
if (ZapisovanePismeno.Length == 2) { ZapisovanePismeno = ZapisovanePismeno.Replace("D", ""); }
ZapisovanePismeno = ZapisovanePismeno.Replace("NumPad", "");
if (ZapisovanePismeno.Length == 1)
{
ZapisovaneJmeno += ZapisovanePismeno;
}
}
break;
case Keys.Back:
if (ZapisovaneJmeno.Length > 0) { ZapisovaneJmeno = ZapisovaneJmeno.Remove(ZapisovaneJmeno.Length - 1, 1); }
break;
case Keys.Enter:
if (ZapisovaneJmeno.Length > 0) { UlozJmeno(); }
break;
case Keys.Space:
ZapisovaneJmeno = ZapisovaneJmeno.Insert(ZapisovaneJmeno.Length, " ");
break;
}
}
}
}
else
{
ProtiPretizeniKlavesy--;
}
}
}
public void UlozJmeno()
{
UlozVysledek.Pridej(ZapisovaneJmeno, Skore, UplavanyKilometry, Uroven);
ProbihaZapisJmena = false;
StavHry = StavH.ListinaVysledku;
}
public void HlavniHra()
{
// Kontrola různých kláves
KontrolaVynucenehoRestartu();
// Události
ZmenaUdalosti();
// Módy myši a zvuku
PrepinaniModuMysi();
PrepinaniModuZvuku();
// Pohyb dunkleostea myší
if (ModMysi == MysM.Povolena || ModMysi == MysM.Vertikalne)
{
PohybDunkleosteaVertikalne_Mysi();
if (ModMysi == MysM.Povolena) { ZmenaRychlostiHryAPohybDunkleosteaHorizontalne_Mysi(); }
ResetujObcasKurzor();
}
// Pohyb dunkleostea klávesnicí
if (ModMysi == MysM.Zakazana || ModMysi == MysM.Vertikalne)
{
if (ModMysi != MysM.Vertikalne) { PohybDunkleosteaVertikalne_Klavesnici(); }
ZmenaRychlostiHryAPohybDunkleosteaHorizontalne_Klavesnici();
}
// Boost a nezranitelnost
PrekontrolujBoostANezranitelnost();
// Návštěvníci
GenerujNoveNavstevniky();
PohybNavstevniku();
// Změny zdraví a úrovně
PrepoctiZdravi();
PrepoctiUrovne();
PrepoctiVzdalenost();
// Pohyb mořských teček
PosunMorskychTecekVlevo();
}
public void PrepoctiVzdalenost()
{
UplavanyMetry += (DesetinnaRychlost / 60);
if (UplavanyMetry > 1000) { UplavanyMetry -= 1000; UplavanyKilometry++; PrictiSkore(75); }
}
public void PrepinaniModuZvuku()
{
if (ProtiPretizeniKlavesy < 1)
{
Ovladani_Klavesnice = Keyboard.GetState();
// Přepnutí módu
if (Ovladani_Klavesnice.IsKeyDown(Keys.Back))
{
switch (StavZvuku)
{
default:
break;
case ZvukyS.Vse:
MediaPlayer.Stop();
StavZvuku = ZvukyS.Nic;
ProtiPretizeniKlavesy = 20;
break;
case ZvukyS.Nic:
MediaPlayer.Stop();
StavZvuku = ZvukyS.JenEfekty;
ProtiPretizeniKlavesy = 20;
break;
case ZvukyS.JenEfekty:
MediaPlayer.Play(Hudba_Dark);
StavZvuku = ZvukyS.JenHudba;
ProtiPretizeniKlavesy = 20;
break;
case ZvukyS.JenHudba:
StavZvuku = ZvukyS.Vse;
ProtiPretizeniKlavesy = 20;
break;
}
}
}
else
{
ProtiPretizeniKlavesy--;
}
}
public void PrepinaniModuMysi()
{
if (ProtiPretizeniKlavesy < 1)
{
Ovladani_Klavesnice = Keyboard.GetState();
// Přepnutí módu
if (Ovladani_Klavesnice.IsKeyDown(Keys.M))
{
switch (ModMysi)
{
default:
break;
case MysM.Zakazana:
ModMysi = MysM.Vertikalne;
ProtiPretizeniKlavesy = 20;
break;
case MysM.Vertikalne:
ModMysi = MysM.Povolena;
ProtiPretizeniKlavesy = 20;
break;
case MysM.Povolena:
ModMysi = MysM.Zakazana;
ProtiPretizeniKlavesy = 20;
break;
}
}
}
else
{
ProtiPretizeniKlavesy--;
}
}
public void ResetujObcasKurzor()
{
if (PocitadloKurzoru < 1)
{
Mouse.SetPosition(DunkleATeckyPoziceX[0], DunkleATeckyPoziceY[0]);
PocitadloKurzoru = 6;
}
else
{
PocitadloKurzoru--;
}
}
public void ZmenaUdalosti()
{
if (Udalost != TypN.Rasa)
{
PocitadloUdalosti--;
if (PocitadloUdalosti < 1)
{
PocitadloUdalosti = 0;
Udalost = TypN.Rasa;
}
}
else
{
if (Nahoda.Next(1, 4000) == 7)
{
PocitadloUdalosti = 900;
PustZvuk(Zvuk_Event);
switch (Nahoda.Next(1, 5))
{
default:
case 1:
Udalost = TypN.Kraken;
break;
case 2:
Udalost = TypN.Kraken2;
break;
case 3:
if (Nahoda.Next(1, 20) == 5)
{
if (Nahoda.Next(1, 4) == 2)
{
Udalost = TypN.Ichtyostega;
}
else
{
Udalost = TypN.Rybka2;
}
}
else
{
Udalost = TypN.Rybka;
}
break;
case 4:
if (Nahoda.Next(1, 20) == 5)
{
Udalost = TypN.Mega2;
}
else
{
Udalost = TypN.Mega;
}
break;
}
}
}
}
public void RebindujKlavesy()
{
Ovladani_Klavesnice = Keyboard.GetState();
if (Ovladani_Klavesnice.GetPressedKeys().Length != 0)
{
Keys[] Klavesa_Z = Ovladani_Klavesnice.GetPressedKeys();
if (Klavesa_Z[0] != Keys.B
&& Klavesa_Z[0] != Keys.R
&& Klavesa_Z[0] != Keys.M
&& Klavesa_Z[0] != Keys.Back
&& Klavesa_Z[0] != Keys.Escape)
{
switch (KrokRebindu)
{
default:
case 0:
Klavesa_Nahoru = Klavesa_Z[0];
KrokRebindu++;
break;
case 1:
if (Klavesa_Z[0] != Klavesa_Nahoru)
{
Klavesa_Dolu = Klavesa_Z[0];
KrokRebindu++;
}
break;
case 2:
if (Klavesa_Z[0] != Klavesa_Nahoru
&& Klavesa_Z[0] != Klavesa_Dolu)
{
Klavesa_Vlevo = Klavesa_Z[0];
KrokRebindu++;
}
break;
case 3:
if (Klavesa_Z[0] != Klavesa_Nahoru
&& Klavesa_Z[0] != Klavesa_Dolu
&& Klavesa_Z[0] != Klavesa_Vlevo)
{
Klavesa_Vpravo = Klavesa_Z[0];
KrokRebindu++;
}
break;
case 4:
if (Klavesa_Z[0] == Keys.Space)
{
StavHry = StavH.HraJede;
}
break;
}
}
}
}
public void KontrolaVynucenehoRestartu()
{
if (!ProbihaZapisJmena)
{
Ovladani_Klavesnice = Keyboard.GetState();
// Zpět na úvodní obrazovku
if (Ovladani_Klavesnice.IsKeyDown(Keys.R))
{
NavratNaUvod();
}
}
}
public void NavratNaUvod()
{
NastavPromenneNaDefault();
StavHry = StavH.UvodniObrazovka;
if (StavZvuku != ZvukyS.JenEfekty && StavZvuku != ZvukyS.Nic)
{
PrepniHudbu(Hudba_Uvod);
}
}
public void CekameNaMezernik()
{
Ovladani_Klavesnice = Keyboard.GetState();
// Spuštění hry
if (Ovladani_Klavesnice.IsKeyDown(Keys.Space))
{
StavHry = StavH.HraJede;
if (StavZvuku != ZvukyS.JenEfekty && StavZvuku != ZvukyS.Nic)
{
PrepniHudbu(Hudba_Dark);
}
}
// Jiný binding kláves
if (Ovladani_Klavesnice.IsKeyDown(Keys.B))
{
KrokRebindu = 0;
StavHry = StavH.RebindKlaves;
}
}
public void PrepoctiUrovne()
{
Uroven = (int)Math.Round((double)Skore / 250);
if (Uroven < 1) { Uroven = 1; }
MaxZdravi = Uroven + 11;
if (MaxZdravi > Konfig_UplneMaxZdravi) { MaxZdravi = Konfig_UplneMaxZdravi; }
HustotaNavstev = 21 - (int)Math.Round((double)Uroven / 2);
if (HustotaNavstev < 14) { HustotaNavstev = 14; }
}
public void PrekontrolujBoostANezranitelnost()
{
if (Boost > 0)
{
Rychlost = (int)Math.Round(DesetinnaRychlost) + 6;
Boost--;
}
else
{
Rychlost = (int)Math.Round(DesetinnaRychlost);
}
}
public void GenerujNoveNavstevniky()
{
for (int i = 0; i < Konfig_PocetNavstevniku; i++)
{
// Ti, kteří neexistují a mají po odpočtu, budou nově vygenerováni
if (!NavstevnikExistuje[i])
{
if (NavstevnikOdpocet[i] < 1)
{
// Pozice a existence
NavstevnikPoziceX[i] = SirkaOkna;
NavstevnikPoziceY[i] = Nahoda.Next(25, VyskaOkna - 200);
NavstevnikSmer[i] = SmerN.Vlevo;
NavstevnikExistuje[i] = true;
if (Udalost != TypN.Rasa)
{
NavstevnikTyp[i] = Udalost;
}
else
{
// Losování typu
LosTypu = Nahoda.Next(1, 1000);
// Šance na jednotlivé typy
if (LosTypu < 15) { NavstevnikTyp[i] = TypN.Rybka2; }
else if (LosTypu < 25) { NavstevnikTyp[i] = TypN.Mega2; }
else if (LosTypu < 250) { NavstevnikTyp[i] = TypN.Rybka; }
else if (LosTypu < 250) { NavstevnikTyp[i] = TypN.Turbo; }
else if (LosTypu < 275) { NavstevnikTyp[i] = TypN.Ichtyostega; }
else if (LosTypu < 650) { NavstevnikTyp[i] = TypN.Kraken; }
else if (LosTypu < 800) { NavstevnikTyp[i] = TypN.Kraken2; }
else if (LosTypu < 950) { NavstevnikTyp[i] = TypN.Mega; }
else if (LosTypu < 953) { NavstevnikTyp[i] = TypN.Sub; }
else if (LosTypu < 958) { NavstevnikTyp[i] = TypN.Immortal; }
else { NavstevnikTyp[i] = TypN.Rasa; }
// Rostoucí obtížnost s přibývajícími levely
if (Uroven > Nahoda.Next(1, 20))
{
if (Nahoda.Next(1, 3) == 2)
{
if (NavstevnikTyp[i] == TypN.Kraken) { NavstevnikTyp[i] = TypN.Mega; }
if (NavstevnikTyp[i] == TypN.Mega) { NavstevnikTyp[i] = TypN.Mega2; }
}
}
}
}
else
{
NavstevnikOdpocet[i]--;
}
}
}
}
public void PohybNavstevniku()
{
for (int i = 0; i < Konfig_PocetNavstevniku; i++)
{
// Ti, kteří existují, se posunou
if (NavstevnikExistuje[i])
{
// Žraloci zrychlují při vyšším i nižším zdraví dunkleostea
if ((Zdravi > 12 || Zdravi < 4) && NavstevnikTyp[i] == TypN.Mega)
{
NavstevnikPoziceX[i] -= Rychlost * 2;
}
else
{
NavstevnikPoziceX[i] -= Rychlost;
}
// Nahodilé drobné zrychlení
if (Uroven > Nahoda.Next(1, 25))
{
NavstevnikPoziceX[i]--;
}
// Možná změna směru
if (Nahoda.Next(1, 20) == 5)
{
if (NavstevnikTyp[i] == TypN.Mega && Uroven > Nahoda.Next(1, 20))
{
if (DunkleATeckyPoziceY[0] < NavstevnikPoziceY[i]) { NavstevnikSmer[i] = SmerN.Nahoru; }
else if (DunkleATeckyPoziceY[0] > NavstevnikPoziceY[i]) { NavstevnikSmer[i] = SmerN.Dolu; }
else { NavstevnikSmer[i] = SmerN.Vlevo; }
}
else
{
switch (Nahoda.Next(1, 6))
{
default:
NavstevnikSmer[i] = SmerN.Vlevo;
break;
case 1:
NavstevnikSmer[i] = SmerN.Nahoru;
break;
case 3:
NavstevnikSmer[i] = SmerN.Dolu;
break;
}
}
}
// Příp. plutí ve speciálním směru
if (NavstevnikSmer[i] == SmerN.Nahoru) { NavstevnikPoziceY[i] -= (Rychlost - 6); }
if (NavstevnikSmer[i] == SmerN.Dolu) { NavstevnikPoziceY[i] += (Rychlost - 6); }
// Ošetříme vyplutí z hranic nahoře a dole
if (NavstevnikPoziceY[i] < 30) { NavstevnikPoziceY[i] = 30; }
if (NavstevnikPoziceY[i] > 670) { NavstevnikPoziceY[i] = 670; }
// Necháme zmizet do neexistence ty, kteří úplně odpluli
if (NavstevnikPoziceX[i] < -600) { EliminovatNavstevnika(i); }
// Kontrola kolize s dunkleosteem
KontrolaKolize(i);
}
}
}
public void KontrolaKolize(int ktery)
{
// Stanovení rozměrů
switch (NavstevnikTyp[ktery])
{
default:
RozmerA = 100;
RozmerB = 70;
RozmerC = 35;
break;
case TypN.Sub:
RozmerA = 160;
RozmerB = 450;
RozmerC = 220;
break;
case TypN.Mega:
RozmerA = 270;
RozmerB = 110;
RozmerC = 55;
break;
case TypN.Ichtyostega:
RozmerA = 200;
RozmerB = 81;
RozmerC = 40;
break;
case TypN.Mega2:
RozmerA = 540;
RozmerB = 220;
RozmerC = 110;
break;
}
// Zjištění kolize
if (((DunkleATeckyPoziceX[0] + 270) > NavstevnikPoziceX[ktery]
&& (DunkleATeckyPoziceX[0] + 270) < (NavstevnikPoziceX[ktery] + RozmerA)
&& (DunkleATeckyPoziceY[0] + 55) > NavstevnikPoziceY[ktery]
&& (DunkleATeckyPoziceY[0] + 55) < (NavstevnikPoziceY[ktery] + RozmerB))
|| (NavstevnikPoziceX[ktery] > DunkleATeckyPoziceX[0]
&& NavstevnikPoziceX[ktery] < (DunkleATeckyPoziceX[0] + 270)
&& (NavstevnikPoziceY[ktery] + RozmerC) > DunkleATeckyPoziceY[0]
&& (NavstevnikPoziceY[ktery] + RozmerC) < (DunkleATeckyPoziceY[0] + 105)))
{
VyhodnotitKolizi(ktery);
}
}
public void VyhodnotitKolizi(int sKym)
{
switch (NavstevnikTyp[sKym])
{
default:
break;
case TypN.Kraken:
case TypN.Kraken2:
Zabitych++;
EliminovatNavstevnika(sKym);
ZmenaZdravi -= Nahoda.Next(1, 3);
PustZvuk(Zvuk_Nedobry);
break;
case TypN.Mega:
Zabitych++;
EliminovatNavstevnika(sKym);
if (Udalost != TypN.Mega)
{
ZmenaZdravi -= (int)Math.Round((double)MaxZdravi / 4);
}
else
{
ZmenaZdravi -= (int)Math.Round((double)MaxZdravi / 6);
}
PustZvuk(Zvuk_Nedobry);
break;
case TypN.Mega2:
case TypN.Sub:
Zabitych++;
EliminovatNavstevnika(sKym);
if (Udalost != TypN.Mega2)
{
ZmenaZdravi -= (int)Math.Round((double)MaxZdravi / 3);
}
else
{
ZmenaZdravi -= (int)Math.Round((double)MaxZdravi / 5);
}
PustZvuk(Zvuk_Nedobry);
break;
case TypN.Rybka:
Zabitych++;
EliminovatNavstevnika(sKym);
ZmenaZdravi++;
PrictiSkore(25 + DesetinnaRychlost * 1.5);
PustZvuk(Zvuk_Hryz);
break;
case TypN.Rybka2:
case TypN.Ichtyostega:
Zabitych++;
EliminovatNavstevnika(sKym);
ZmenaZdravi += Nahoda.Next(1, 11);
PrictiSkore(85 + DesetinnaRychlost * 1.5);
PustZvuk(Zvuk_Hryz);
break;
case TypN.Turbo:
Zabitych++;
EliminovatNavstevnika(sKym);
ZmenaZdravi += 5;
Boost += 600;
PrictiSkore(15 + DesetinnaRychlost * 1.5);
PustZvuk(Zvuk_Hryz);
break;
case TypN.Immortal:
EliminovatNavstevnika(sKym);
Nezranitelnost += 900;
PrictiSkore(75 + DesetinnaRychlost * 1.5);
PustZvuk(Zvuk_Hryz);
break;
}
}
public void EliminovatNavstevnika(int ktereho)
{
NavstevnikExistuje[ktereho] = false;
NavstevnikOdpocet[ktereho] = Nahoda.Next(30, 600 - Rychlost * 10);
}
public void PrepoctiZdravi()
{
if (Nezranitelnost > 0)
{
Zdravi = MaxZdravi;
Nezranitelnost--;
if (Nezranitelnost < 1)
{
ZmenaZdravi = 20;
}
}
else
{
Pocitadlo++;
if (Pocitadlo > 4)
{
Pocitadlo = 0;
if (ZmenaZdravi > 0)
{
ZmenaZdravi--;
Zdravi++;
}
if (ZmenaZdravi < 0)
{
ZmenaZdravi++;
Zdravi--;
}
if (Zdravi <= 0) { StavHry = StavH.Smrt; }
if (Zdravi > MaxZdravi) { Zdravi = MaxZdravi; }
}
}
}
public void PosunMorskychTecekVlevo()
{
for (int i = 1; i < 10; i++)
{
PohybTecky = false;
if (DunkleATeckyPoziceX[i] == SirkaOkna)
{
if (Nahoda.Next(1, 30) == 5)
{
PohybTecky = true;
}
}
else
{
PohybTecky = true;
}
if (PohybTecky)
{
if (DunkleATeckyPoziceX[i] > 0)
{
DunkleATeckyPoziceX[i] -= Rychlost * 2;
}
else
{
DunkleATeckyPoziceX[i] = SirkaOkna;
DunkleATeckyPoziceY[i] = Nahoda.Next(25, VyskaOkna - 25);
}
}
}
}
public void PrictiSkore(double kolik)
{
DesetinneSkore += kolik;
Skore = (int)Math.Round(DesetinneSkore);
}
public void PohybDunkleosteaVertikalne_Klavesnici()
{
Ovladani_Klavesnice = Keyboard.GetState();
// Pohyb dunkle. nahoru
if(Ovladani_Klavesnice.IsKeyDown(Klavesa_Nahoru))
{
PosunDunkleostea(SmerN.Nahoru);
}
// Pohyb dunkle. dolů
if (Ovladani_Klavesnice.IsKeyDown(Klavesa_Dolu))
{
PosunDunkleostea(SmerN.Dolu);
}
}
public void ZmenaRychlostiHryAPohybDunkleosteaHorizontalne_Klavesnici()
{
Ovladani_Klavesnice = Keyboard.GetState();
// Pohyb dunkle. doprava + zrychlení
if (Ovladani_Klavesnice.IsKeyDown(Klavesa_Vpravo))
{
PosunDunkleostea(SmerN.Vpravo);
}
// Pohyb dunkle. doleva + zpomalení
if (Ovladani_Klavesnice.IsKeyDown(Klavesa_Vlevo))
{
PosunDunkleostea(SmerN.Vlevo);
}
}
public void PohybDunkleosteaVertikalne_Mysi()
{
Ovladani_Mysi = Mouse.GetState();
// Pohyb dunkle. nahoru
if (Ovladani_Mysi.Y < DunkleATeckyPoziceY[0])
{
PosunDunkleostea(SmerN.Nahoru);
}
// Pohyb dunkle. dolů
if (Ovladani_Mysi.Y > DunkleATeckyPoziceY[0])
{
PosunDunkleostea(SmerN.Dolu);
}
}
public void ZmenaRychlostiHryAPohybDunkleosteaHorizontalne_Mysi()
{
Ovladani_Mysi = Mouse.GetState();
// Pohyb dunkle. doprava + zrychlení
if (Ovladani_Mysi.X > DunkleATeckyPoziceX[0])
{
PosunDunkleostea(SmerN.Vpravo);
}
// Pohyb dunkle. doleva + zpomalení
if (Ovladani_Mysi.X < DunkleATeckyPoziceX[0])
{
PosunDunkleostea(SmerN.Vlevo);
}
}
public void PosunDunkleostea(SmerN kterymSmerem)
{
switch (kterymSmerem)
{
default:
break;
case SmerN.Vlevo:
if (DunkleATeckyPoziceX[0] > Konfig_DunkleZacatekX)
{
ZmenPozici(0, false, -1);
ZmenRychlost(-0.1);
}
break;
case SmerN.Vpravo:
if (DunkleATeckyPoziceX[0] < Konfig_DunkleZacatekX + 120)
{
ZmenPozici(0, false, 1);
ZmenRychlost(0.1);
}
break;
case SmerN.Dolu:
if (DunkleATeckyPoziceY[0] < 670)
{
ZmenPozici(0, true, Rychlost);
}
break;
case SmerN.Nahoru:
if (DunkleATeckyPoziceY[0] > 50)
{
ZmenPozici(0, true, Rychlost * -1);
}
break;
}
}
public void ZmenPozici(int koho, bool vertikalne, int jakMoc)
{
if (vertikalne)
{
DunkleATeckyPoziceY[koho] += jakMoc;
}
else
{
DunkleATeckyPoziceX[koho] += jakMoc;
}
}
public void ZmenRychlost(double jakMoc)
{
DesetinnaRychlost += jakMoc;
PrekontrolujBoostANezranitelnost();
}
}
}
Neformátovaný
Přidáno: 4.8.2021
Expirace: Neuvedeno