diff --git a/Final game/App.config b/Final game/App.config
new file mode 100644
index 0000000..5754728
--- /dev/null
+++ b/Final game/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final game/Entity.cs b/Final game/Entity.cs
new file mode 100644
index 0000000..efde2c4
--- /dev/null
+++ b/Final game/Entity.cs
@@ -0,0 +1,244 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Drawing;
+
+namespace Final_game
+{
+ public class Entity
+ {
+ #region Fields
+ public int posX, posY, centreX, centreY;
+
+ public int sizeX, sizeY;
+
+ public int a;
+ public int speedX, speedY;
+
+ public int dx, dy;
+
+ public int idleFrames, runFrames, attackFrames, deathFrames, hurtFrames;
+ public int currentAnimation, currentFrame, frameLimit;
+
+ public bool goUp, goDown, goLeft, goRight;
+
+ public bool Attack, getDamage, isOnEarth;
+
+ public bool flip;
+
+ public int health, maxHealth;
+
+ private readonly Random r = new Random();
+
+ public Image spriteSheet;
+
+ #endregion
+ public Entity(int posX, int posY, int sizeX, int sizeY, int health, Image spriteSheet, int idleFrames = 1, int runFrames = 1, int attackFrames = 1, int deathFrames = 1, int hurtFrames = 4)
+ {
+ this.posX = posX;
+ this.posY = posY;
+ this.sizeX = sizeX;
+ this.sizeY = sizeY;
+ this.idleFrames = idleFrames;
+ this.runFrames = runFrames;
+ this.attackFrames = attackFrames;
+ this.deathFrames = deathFrames;
+ this.hurtFrames = hurtFrames;
+ this.health = health;
+ this.spriteSheet = spriteSheet;
+
+ maxHealth = health;
+ currentAnimation = 0;
+ currentFrame = 0;
+ frameLimit = idleFrames;
+ flip = true;
+ a = 1;
+ speedX = 3;
+ }
+
+ public void PlayAnimation(Graphics g)
+ {
+ currentFrame %= frameLimit;
+
+ g.DrawImage(spriteSheet, new Rectangle(new Point(posX, posY), new Size(sizeX, sizeY)),
+ sizeX * currentFrame, sizeY * currentAnimation, sizeX, sizeY, GraphicsUnit.Pixel);
+
+ currentFrame++;
+ }
+
+ public void SetAniConf(int curAni)
+ {
+ if (curAni == 0 || curAni == 6)
+ frameLimit = idleFrames;
+ if (curAni == 1 || curAni == 7)
+ frameLimit = runFrames;
+ if (curAni == 2 || curAni == 8)
+ frameLimit = attackFrames;
+ if (curAni == 3 || curAni == 9)
+ frameLimit = 1;
+ if (curAni == 4 || curAni == 10)
+ frameLimit = deathFrames;
+ if (curAni == 5 || curAni == 11)
+ frameLimit = hurtFrames;
+
+ currentAnimation = flip ? curAni % 6 : curAni % 6 + 6;
+ }
+
+ public void Stop()
+ {
+ dx = 0;
+ dy = 0;
+ goUp = false;
+ goDown = false;
+ goLeft = false;
+ goRight = false;
+ Attack = false;
+ speedX = 0;
+ speedY = 0;
+ }
+
+ public bool NearDoor(List doors)
+ {
+ foreach (var e in doors)
+ {
+ if (Math.Abs(posX + sizeX / 2 - e.posX - e.sizeX / 2) < 20 && Math.Abs(posY + sizeY / 2 - e.posY - e.sizeY / 2) < 10)
+ return true;
+ }
+ return false;
+ }
+
+ public bool ContactEnemy(Entity enemy)
+ {
+ return Math.Abs(posX + sizeX/2 - enemy.posX - enemy.sizeX/2) < 25 && Math.Abs(posY + sizeY/2 - enemy.posY - enemy.sizeY/2) < 10;
+ }
+
+ public void GoTo(Environment door)
+ {
+ posX = door.posX;
+ posY = door.posY;
+ }
+
+ public void Phisics(List Boundaries)
+ {
+ dy += a;
+ GoingDown(Boundaries);
+
+ if (goUp)
+ {
+ isOnEarth = false;
+ speedY += a;
+ GoingUp(Boundaries);
+ posY += speedY;
+ }
+
+ if (goRight)
+ {
+ dx = 4;
+ GoingRight(Boundaries);
+ posX += dx;
+ }
+
+ if (goLeft)
+ {
+ dx = -4;
+ GoingLeft(Boundaries);
+ posX += dx;
+ }
+
+ posY += dy;
+ }
+
+ public void Moving()
+ {
+ var jump = r.Next(0, 10);
+ goUp = jump > 7;
+ speedY = goUp ? -10 : 0;
+ }
+
+ public void GoingUp(List boundaries)
+ {
+ if (!isOnEarth)
+ {
+ foreach (var el in boundaries)
+ {
+ if (posY + 4 > el.posY + el.sizeY && posY + speedY + 4 <= el.posY + el.sizeY && posX + 4 * sizeX / 5 > el.posX && posX + 2 * sizeX / 5 < el.posX + el.sizeX)
+ {
+ speedY = el.posY + el.sizeY - (posY + 3);
+
+ }
+ }
+ }
+ if (speedY > 0) speedY = 0;
+ }
+
+ public void GoingDown(List boundaries)
+ {
+ dy += a;
+ foreach (var el in boundaries)
+ {
+ if (posY + sizeY < el.posY && posY + sizeY + dy >= el.posY && posX + 4 * sizeX / 5 > el.posX && posX + 2 * sizeX / 5 < el.posX + el.sizeX)
+ {
+ dy = el.posY - (posY + sizeY ) - 1;
+ isOnEarth = true;
+ }
+ }
+ if (dy > 21)
+ dy = 21;
+ }
+
+ public void GoingRight(List boundaries)
+ {
+ foreach (var el in boundaries)
+ {
+ if (posX + 4 * sizeX / 5 < el.posX && posX + 4 * sizeX / 5 + dx >= el.posX && posY + 5*sizeY/6 > el.posY && posY + 8 < el.posY + el.sizeY)
+ {
+ dx = el.posX - (posX + 4 * sizeX / 5) - 1;
+ }
+ }
+ }
+
+ public void GoingLeft(List boundaries)
+ {
+ foreach (var el in boundaries)
+ {
+ if (posX + 2 * sizeX / 5 > el.posX + el.sizeX && posX + 2 * sizeX / 5 + dx <= el.posX + el.sizeX && posY + sizeY - 3 > el.posY && posY + 8 < el.posY + el.sizeY)
+ {
+ dx = el.posX + el.sizeX - (posX + 2 * sizeX / 5) + 1;
+ }
+ }
+ }
+
+ public bool BotAttack()
+ {
+ var rnd = r.Next(0,10);
+ Attack = rnd > 8;
+ return Attack;
+ }
+
+ public void GetDamage(bool side, List boundaries, int damage)
+ {
+ health -= damage;
+ SetAniConf(5);
+ if (side)
+ {
+ dx = 17;
+ dy = -5;
+ GoingRight(boundaries);
+ GoingUp(boundaries);
+ posX += dx;
+ posY += dy;
+ }
+ else
+ {
+ dx = -17;
+ dy = -5;
+ GoingRight(boundaries);
+ GoingUp(boundaries);
+ posX += dx;
+ posY += dy;
+ }
+ }
+ }
+}
diff --git a/Final game/Environment.cs b/Final game/Environment.cs
new file mode 100644
index 0000000..33b3ba4
--- /dev/null
+++ b/Final game/Environment.cs
@@ -0,0 +1,58 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Final_game
+{
+ public class Environment
+ {
+ #region Fields
+ public int posX, posY;
+
+ public int sizeX, sizeY;
+
+ public int centreX, centreY;
+
+ public int currentFrames, currentAnimation, frameLimit;
+
+ public Image spriteSheet;
+ #endregion
+
+ public Environment(int posX, int posY, int sizeX, int sizeY, Image spriteSheet)
+ {
+ this.posX = posX;
+ this.posY = posY;
+ this.sizeX = sizeX;
+ this.sizeY = sizeY;
+ this.spriteSheet = spriteSheet;
+
+ centreX = posX + sizeX / 2;
+ centreY = posY + sizeY / 2;
+
+ }
+
+ public void PlayAnimation(Graphics g)
+ {
+ if (currentFrames == frameLimit)
+ currentFrames--;
+ g.DrawImage(spriteSheet, new Rectangle(new Point(posX, posY), new Size(sizeX, sizeY)),
+ sizeX*currentFrames, sizeY*currentAnimation, sizeX, sizeY, GraphicsUnit.Pixel);
+ currentFrames++;
+ }
+
+ public void SetAniConf(int curAni)
+ {
+ if (curAni == 0)
+ frameLimit = 1;
+ if (curAni == 1)
+ frameLimit = 5;
+ if (curAni == 2)
+ frameLimit = 3;
+
+ currentAnimation = curAni;
+ }
+ }
+}
diff --git a/Final game/Final game.csproj b/Final game/Final game.csproj
new file mode 100644
index 0000000..b859626
--- /dev/null
+++ b/Final game/Final game.csproj
@@ -0,0 +1,118 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {0723FDC2-A104-42FC-BB85-870846F3BBDB}
+ WinExe
+ Final_game
+ Final game
+ v4.7.2
+ 512
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ Form1.cs
+
+
+ True
+ True
+ Images.resx
+
+
+
+
+
+
+ Form1.cs
+
+
+ ResXFileCodeGenerator
+ Images.Designer.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final game/Final game.sln b/Final game/Final game.sln
new file mode 100644
index 0000000..64a1950
--- /dev/null
+++ b/Final game/Final game.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.30413.136
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Final game", "Final game.csproj", "{0723FDC2-A104-42FC-BB85-870846F3BBDB}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {0723FDC2-A104-42FC-BB85-870846F3BBDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0723FDC2-A104-42FC-BB85-870846F3BBDB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0723FDC2-A104-42FC-BB85-870846F3BBDB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0723FDC2-A104-42FC-BB85-870846F3BBDB}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {99C3F118-03D5-41D2-B19B-9584DB52B82E}
+ EndGlobalSection
+EndGlobal
diff --git a/Final game/Form1.Designer.cs b/Final game/Form1.Designer.cs
new file mode 100644
index 0000000..0dbc69d
--- /dev/null
+++ b/Final game/Form1.Designer.cs
@@ -0,0 +1,58 @@
+namespace Final_game
+{
+ partial class Form1
+ {
+ ///
+ /// Обязательная переменная конструктора.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Освободить все используемые ресурсы.
+ ///
+ /// истинно, если управляемый ресурс должен быть удален; иначе ложно.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Код, автоматически созданный конструктором форм Windows
+
+ ///
+ /// Требуемый метод для поддержки конструктора — не изменяйте
+ /// содержимое этого метода с помощью редактора кода.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.timer = new System.Windows.Forms.Timer(this.components);
+ this.SuspendLayout();
+ //
+ // timer
+ //
+ this.timer.Enabled = true;
+ this.timer.Interval = 60;
+ this.timer.Tick += new System.EventHandler(this.Timer_Tick);
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(800, 450);
+ this.DoubleBuffered = true;
+ this.Name = "Form1";
+ this.Text = "Form1";
+ this.ResumeLayout(false);
+ this.Paint += new System.Windows.Forms.PaintEventHandler(this.OnPaint);
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Timer timer;
+ }
+}
+
diff --git a/Final game/Form1.cs b/Final game/Form1.cs
new file mode 100644
index 0000000..35d4ede
--- /dev/null
+++ b/Final game/Form1.cs
@@ -0,0 +1,400 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace Final_game
+{
+ public partial class Form1 : Form
+ {
+ #region Fields
+ private readonly Image Hero = Images.hero,
+ Enemy = Images.скелет,
+ Lifebar = Images.lifebar;
+
+
+ private readonly Image Wall = Images.wall,
+ Heart = Images.Heart;
+
+ private Map map;
+
+ private Entity player, enemy1, enemy2, enemy3, enemy4, enemy5,
+ heart, heart2;
+
+ private Lifebar lifebar;
+
+ private List Boundaries_1, Boundaries_2, Boundaries_3, Boundaries_4,
+ Doors;
+
+ private List Enemies_1, Enemies_2, Enemies_3, Enemies_4;
+
+ private int currentRoom;
+
+ private bool openDoor;
+
+ private bool gamePaused;
+
+ private bool flag;
+ #endregion
+
+ public Form1()
+ {
+ currentRoom = 1;
+
+ InitializeComponent();
+
+ BackgroundImage = Images.background;
+
+ KeyUp += new KeyEventHandler(OnKeyUp);
+ KeyDown += new KeyEventHandler(OnKeyDown);
+
+ Init();
+ }
+
+ public void Init()
+ {
+ player = new Entity(20, 16, 50, 37, 500, Hero, 4, 6, 6, 7);
+ heart = new Entity(635, 280, 18, 14, 100, Heart, 8);
+ heart2 = new Entity(880, 40, 18, 14, 200, Heart, 8);
+
+ map = new Map();
+ Doors = map.Doors;
+ CreateBoundaries(map);
+ CreateEnemies();
+
+ timer.Start();
+ gamePaused = false;
+ }
+
+ public void CreateBoundaries(Map map)
+ {
+ Boundaries_1 = map.Boundaries_1;
+ Boundaries_2 = map.Boundaries_2;
+ Boundaries_3 = map.Boundaries_3;
+ Boundaries_4 = map.Boundaries_4;
+ }
+ public void CreateEnemies()
+ {
+ Enemies_1 = new List();
+ Enemies_2 = new List();
+ Enemies_3 = new List();
+ Enemies_4 = new List();
+
+ enemy1 = new Entity(130, 65, 50, 37, 20, Enemy);
+ enemy2 = new Entity(50, 125, 50, 37, 20, Enemy);
+ Enemies_1.Add(enemy1);
+ Enemies_1.Add(enemy2);
+
+ enemy1 = new Entity(110, 230, 50, 37, 40, Enemy);
+ enemy2 = new Entity(70, 180, 50, 37, 40, Enemy);
+ Enemies_2.Add(enemy1);
+ Enemies_2.Add(enemy2);
+
+ enemy1 = new Entity(410, 270, 50, 37, 80, Enemy);
+ enemy2 = new Entity(480, 250, 50, 37, 80, Enemy);
+ enemy3 = new Entity(530, 290, 50, 37, 80, Enemy);
+ Enemies_3.Add(enemy1);
+ Enemies_3.Add(enemy2);
+ Enemies_3.Add(enemy3);
+
+ enemy1 = new Entity(690, 190, 50, 37, 150, Enemy);
+ enemy2 = new Entity(900, 150, 50, 37, 150, Enemy);
+ enemy3 = new Entity(870, 17, 50, 37, 150, Enemy);
+ enemy4 = new Entity(785, 70, 50, 37, 150, Enemy);
+ enemy5 = new Entity(690, 140, 50, 37, 150, Enemy);
+ Enemies_4.Add(enemy1);
+ Enemies_4.Add(enemy2);
+ Enemies_4.Add(enemy3);
+ Enemies_4.Add(enemy4);
+ Enemies_4.Add(enemy5);
+ }
+
+ private void Timer_Tick(object sender, EventArgs e)
+ {
+ SetStyle(ControlStyles.OptimizedDoubleBuffer |
+ ControlStyles.AllPaintingInWmPaint |
+ ControlStyles.UserPaint, true);
+ UpdateStyles();
+
+ if (player.health < 0)
+ Restart();
+
+ if (currentRoom == 1)
+ {
+ Doors[0].SetAniConf(1);
+
+ openDoor = Enemies_1.Count == 0;
+ player.Phisics(Boundaries_1);
+
+ for (int i = 0; i < Enemies_1.Count; i++)
+ {
+ var enemy = Enemies_1[i];
+ enemy.Moving();
+ enemy.Phisics(Boundaries_1);
+
+ if (player.Attack && player.ContactEnemy(enemy))
+ enemy.health -= 1;
+ if (enemy.health < 1)
+ Enemies_1.RemoveAt(i);
+
+ if (enemy.BotAttack() && player.ContactEnemy(enemy))
+ {
+ bool side = player.posX + player.sizeX / 2 > enemy.posX + enemy.sizeX / 2;
+ player.GetDamage(side, Boundaries_1, 5);
+ }
+ }
+
+ if (openDoor && player.NearDoor(Doors))
+ {
+ Doors[1].SetAniConf(1);
+ }
+ }
+
+ if (currentRoom == 2)
+ {
+ Doors[2].SetAniConf(1);
+
+ openDoor = Enemies_2.Count == 0;
+ player.Phisics(Boundaries_2);
+
+ for (int i = 0; i < Enemies_2.Count; i++)
+ {
+ var enemy = Enemies_2[i];
+ enemy.Moving();
+ enemy.Phisics(Boundaries_2);
+
+ if (player.Attack && player.ContactEnemy(enemy))
+ enemy.health -= 1;
+ if (enemy.health < 1) Enemies_2.RemoveAt(i);
+
+ if (enemy.BotAttack() && player.ContactEnemy(enemy))
+ {
+ bool side = player.posX + player.sizeX / 2 > enemy.posX + enemy.sizeX / 2;
+ player.GetDamage(side, Boundaries_2, 8);
+ }
+ }
+
+ if (openDoor && player.NearDoor(Doors))
+ {
+ Doors[3].SetAniConf(1);
+ }
+ }
+
+ if (currentRoom == 3)
+ {
+ Doors[4].SetAniConf(1);
+ heart.SetAniConf(0);
+
+ openDoor = Enemies_3.Count == 0;
+ player.Phisics(Boundaries_3);
+
+ for (int i = 0; i < Enemies_3.Count; i++)
+ {
+ var enemy = Enemies_3[i];
+ enemy.Moving();
+ enemy.Phisics(Boundaries_3);
+
+ if (player.Attack && player.ContactEnemy(enemy))
+ enemy.health -= 1;
+ if (enemy.health < 1) Enemies_3.RemoveAt(i);
+
+ if (enemy.BotAttack() && player.ContactEnemy(enemy))
+ {
+ bool side = player.posX + player.sizeX / 2 > enemy.posX + enemy.sizeX / 2;
+ player.GetDamage(side, Boundaries_3, 13);
+ }
+ }
+
+ if (openDoor && !flag)
+ {
+ Boundaries_3.Add(new Environment(235, 280, 2, 55, Wall));
+ Boundaries_3.Add(new Environment(704, 327, 50, 1, Wall));
+ flag = true;
+ }
+
+ if (openDoor && player.NearDoor(Doors))
+ {
+ Doors[5].SetAniConf(1);
+ }
+
+ if (player.Attack && player.ContactEnemy(heart))
+ heart.health -= 5;
+
+ if (heart.health < 1)
+ {
+ player.health += 300;
+ heart.spriteSheet = Wall;
+ heart.health = 10;
+ }
+ }
+
+ if (currentRoom == 4)
+ {
+ Doors[6].SetAniConf(1);
+ heart2.SetAniConf(0);
+
+ openDoor = Enemies_4.Count == 0;
+ player.Phisics(Boundaries_4);
+
+ for (int i = 0; i < Enemies_4.Count; i++)
+ {
+ var enemy = Enemies_4[i];
+ enemy.Moving();
+ enemy.Phisics(Boundaries_4);
+
+ if (player.Attack && player.ContactEnemy(enemy))
+ enemy.health -= 1;
+ if (enemy.health < 1) Enemies_4.RemoveAt(i);
+
+ if (enemy.BotAttack() && player.ContactEnemy(enemy))
+ {
+ bool side = player.posX + player.sizeX / 2 > enemy.posX + enemy.sizeX / 2;
+ player.GetDamage(side, Boundaries_4, 17);
+ }
+ }
+
+ if (openDoor && player.NearDoor(Doors))
+ {
+ Doors[7].SetAniConf(1);
+ }
+
+ if (player.Attack && player.ContactEnemy(heart2))
+ heart2.health -= 1;
+
+ if (heart2.health < 1)
+ {
+ player.health += 300;
+ heart2.spriteSheet = Wall;
+ heart2.health = 30;
+ }
+ }
+
+ Invalidate();
+ }
+
+ public void OnKeyDown(object sender, KeyEventArgs e)
+ {
+
+ if (e.KeyCode == Keys.A || e.KeyCode == Keys.Left)
+ {
+ player.dx = -3;
+ player.goLeft = true;
+ player.flip = false;
+ player.SetAniConf(1);
+ }
+
+ if (e.KeyCode == Keys.D || e.KeyCode == Keys.Right)
+ {
+ player.dx = 3;
+ player.goRight = true;
+ player.flip = true;
+ player.SetAniConf(1);
+ }
+
+ if (e.KeyCode == Keys.W || e.KeyCode == Keys.Up)
+ {
+ if (player.isOnEarth)
+ {
+ player.goUp = true;
+ player.speedY = -17;
+ player.SetAniConf(3);
+ }
+ }
+
+ if (e.KeyCode == Keys.Space)
+ {
+ player.Attack = true;
+ player.SetAniConf(2);
+ }
+
+ if (e.KeyCode == Keys.R)
+ Restart();
+
+ if (e.KeyCode == Keys.P)
+ {
+ if (!gamePaused)
+ {
+ timer.Stop();
+ gamePaused = true;
+ }
+ else
+ {
+ timer.Start();
+ gamePaused = false;
+ }
+ }
+
+ if (e.KeyCode == Keys.N)
+ {
+ if (player.NearDoor(Doors) && openDoor)
+ {
+ switch (currentRoom)
+ {
+ case 1:
+ player.GoTo(Doors[2]);
+ currentRoom = 2;
+ break;
+ case 2:
+ player.GoTo(Doors[4]);
+
+ currentRoom = 3;
+ break;
+ case 3:
+ player.GoTo(Doors[6]);
+ currentRoom = 4;
+ break;
+ case 4:
+ Restart();
+ break;
+
+ }
+ }
+ }
+
+ }
+
+ public void OnKeyUp(object sender, KeyEventArgs e)
+ {
+ player.Stop();
+ player.SetAniConf(0);
+ }
+
+ public void OnPaint(object sender, PaintEventArgs e)
+ {
+ Graphics g = e.Graphics;
+
+ foreach (var door in Doors)
+ door.PlayAnimation(g);
+
+ if (currentRoom == 1)
+ foreach (var r in Enemies_1)
+ r.PlayAnimation(g);
+ if (currentRoom == 2)
+ foreach (var r in Enemies_2)
+ r.PlayAnimation(g);
+ if (currentRoom == 3)
+ {
+ foreach (var r in Enemies_3)
+ r.PlayAnimation(g);
+ heart.PlayAnimation(g);
+ }
+ if (currentRoom == 4)
+ {
+ heart2.PlayAnimation(g);
+ foreach (var r in Enemies_4)
+ r.PlayAnimation(g);
+ }
+
+ lifebar = new Lifebar(player);
+ lifebar.Draw(g);
+ player.PlayAnimation(g);
+
+ }
+
+ public void Restart()
+ {
+ currentRoom = 1;
+ Init();
+ }
+ }
+}
diff --git a/Final game/Form1.resx b/Final game/Form1.resx
new file mode 100644
index 0000000..b351ef9
--- /dev/null
+++ b/Final game/Form1.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/Final game/Images.Designer.cs b/Final game/Images.Designer.cs
new file mode 100644
index 0000000..e556230
--- /dev/null
+++ b/Final game/Images.Designer.cs
@@ -0,0 +1,133 @@
+//------------------------------------------------------------------------------
+//
+// Этот код создан программой.
+// Исполняемая версия:4.0.30319.42000
+//
+// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+// повторной генерации кода.
+//
+//------------------------------------------------------------------------------
+
+namespace Final_game {
+ using System;
+
+
+ ///
+ /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
+ ///
+ // Этот класс создан автоматически классом StronglyTypedResourceBuilder
+ // с помощью такого средства, как ResGen или Visual Studio.
+ // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
+ // с параметром /str или перестройте свой проект VS.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Images {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Images() {
+ }
+
+ ///
+ /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Final_game.Images", typeof(Images).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Перезаписывает свойство CurrentUICulture текущего потока для всех
+ /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap background {
+ get {
+ object obj = ResourceManager.GetObject("background", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap door {
+ get {
+ object obj = ResourceManager.GetObject("door", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap Heart {
+ get {
+ object obj = ResourceManager.GetObject("Heart", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap hero {
+ get {
+ object obj = ResourceManager.GetObject("hero", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap lifebar {
+ get {
+ object obj = ResourceManager.GetObject("lifebar", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap wall {
+ get {
+ object obj = ResourceManager.GetObject("wall", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap скелет {
+ get {
+ object obj = ResourceManager.GetObject("скелет", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+ }
+}
diff --git a/Final game/Images.resx b/Final game/Images.resx
new file mode 100644
index 0000000..e8f1950
--- /dev/null
+++ b/Final game/Images.resx
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ Resources\background.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ Resources\door .png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ Resources\Heart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ Resources\hero.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ Resources\lifebar.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ Resources\wall.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ Resources\скелет.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
\ No newline at end of file
diff --git a/Final game/Lifebar.cs b/Final game/Lifebar.cs
new file mode 100644
index 0000000..f83c7c6
--- /dev/null
+++ b/Final game/Lifebar.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Final_game
+{
+ class Lifebar
+ {
+
+ public int posX, posY;
+ public int sizeX, sizeY;
+ private Image image = Images.lifebar;
+ public Lifebar(Entity player)
+ {
+ posX = player.posX + 10;
+ posY = player.posY;
+ sizeY = 5;
+ sizeX = CalculateSize(player.maxHealth, player.health);
+ }
+
+ private int CalculateSize(int maxHealth, int health)
+ {
+ return health >= maxHealth ? 40 : (40 * health/maxHealth);
+ }
+
+ public void Draw(Graphics g)
+ {
+ g.DrawImage(image, new Rectangle(new Point(posX, posY), new Size(sizeX, sizeY)));
+ }
+ }
+}
diff --git a/Final game/Map.cs b/Final game/Map.cs
new file mode 100644
index 0000000..20144a5
--- /dev/null
+++ b/Final game/Map.cs
@@ -0,0 +1,130 @@
+using System.Collections.Generic;
+using System.Drawing;
+
+namespace Final_game
+{
+ public class Map
+ {
+ public List Boundaries_1,
+ Boundaries_2,
+ Boundaries_3,
+ Boundaries_4,
+ Doors;
+
+ private readonly Image Door = Images.door,
+ Wall = Images.wall;
+
+ public Map()
+ {
+ Boundaries_1 = new List();
+ Boundaries_2 = new List();
+ Boundaries_3 = new List();
+ Boundaries_4 = new List();
+ Doors = new List();
+ MakeMap();
+ }
+
+ private void MakeMap()
+ {
+ var door1_1 = new Environment(20, 17, 37, 45, Door);
+ var door1_2 = new Environment(128, 125, 37, 45, Door);
+ var door2_1 = new Environment(134, 181, 37, 45, Door);
+ var door2_2 = new Environment(136, 322, 37, 45, Door);
+ var door3_1 = new Environment(180, 280, 37, 45, Door);
+ var door3_2 = new Environment(596, 256, 37, 45, Door);
+ var door4_1 = new Environment(668, 190, 37, 45, Door);
+ var door4_2 = new Environment(913, 17, 37, 45, Door);
+
+ Doors.Add(door1_1);
+ Doors.Add(door1_2);
+ Doors.Add(door2_1);
+ Doors.Add(door2_2);
+ Doors.Add(door3_1);
+ Doors.Add(door3_2);
+ Doors.Add(door4_1);
+ Doors.Add(door4_2);
+
+
+ var wallN = new Environment(0, 0, 985, 15, Wall);
+ var wallW = new Environment(0, 0, 25, 425, Wall);
+ var wallE = new Environment(947, 0, 25, 425, Wall);
+ var wallS = new Environment(0, 368, 985, 15, Wall);
+ var wall1_1 = new Environment(196, 0, 10, 150, Wall);
+ var wall1_2 = new Environment(162, 130, 10, 50, Wall);
+ var wall2_1 = new Environment(171, 146, 15, 250, Wall);
+ var wall2_2 = new Environment(27, 335, 61, 70, Wall);
+ var wall2_3 = new Environment(112, 366, 85, 15, Wall);
+ var wall3_1 = new Environment(175, 235, 245, 41, Wall);
+ var wall3_2 = new Environment(310, 330, 32, 60, Wall);
+ var wall3_3 = new Environment(415, 235, 280, 13, Wall);
+ var wall3_4 = new Environment(530, 245, 69, 37, Wall);
+ var wall3_5 = new Environment(640, 250, 100, 13, Wall);
+ var wall3_6 = new Environment(730, 249, 15, 120, Wall);
+ var wall4_1 = new Environment(650, 234, 290, 7, Wall);
+ var wall4_2 = new Environment(660, 0, 12, 370, Wall);
+ var wall4_3 = new Environment(910, 203, 90, 50, Wall);
+ var wall4_4 = new Environment(803, 170, 28, 70, Wall);
+
+ var block1_1 = new Environment(25, 62, 96, 10, Wall);
+ var block1_2 = new Environment(72, 113, 136, 10, Wall);
+ var block1_3 = new Environment(20, 171, 159, 6, Wall);
+ var block2_1 = new Environment(86, 227, 100, 10, Wall);
+ var block2_2 = new Environment(113, 298, 70, 1, Wall);
+ var block3_1 = new Environment(180, 325, 62, 1, Wall);
+ var block3_2 = new Environment(385, 322, 76, 1, Wall);
+ var block3_3 = new Environment(482, 296, 116, 1, Wall);
+ var block3_4 = new Environment(590, 305, 80, 1, Wall);
+ var block3_5 = new Environment(706, 327, 50, 1, Wall);
+ var block4_1 = new Environment(670, 185, 75, 1, Wall);
+ var block4_2 = new Environment(860, 186, 25, 1, Wall);
+ var block4_3 = new Environment(670, 128, 32, 1, Wall);
+ var block4_4 = new Environment(743, 145, 29, 1, Wall);
+ var block4_5 = new Environment(800, 123, 29, 1, Wall);
+ var block4_6 = new Environment(812, 81, 25, 1, Wall);
+ var block4_7 = new Environment(857, 62, 100, 7, Wall);
+
+ Boundaries_1.Add(wallN);
+ Boundaries_1.Add(wallW);
+ Boundaries_1.Add(wall1_1);
+ Boundaries_1.Add(wall1_2);
+ Boundaries_2.Add(wallW);
+ Boundaries_2.Add(wallS);
+ Boundaries_2.Add(block1_3);
+ Boundaries_2.Add(wall2_1);
+ Boundaries_2.Add(wall2_2);
+ Boundaries_2.Add(wall2_3);
+ Boundaries_3.Add(wallS);
+ Boundaries_3.Add(wall2_1);
+ Boundaries_3.Add(wall3_1);
+ Boundaries_3.Add(wall3_2);
+ Boundaries_3.Add(wall3_3);
+ Boundaries_3.Add(wall3_4);
+ Boundaries_3.Add(wall3_5);
+ Boundaries_3.Add(wall3_6);
+ Boundaries_4.Add(wallN);
+ Boundaries_4.Add(wallE);
+ Boundaries_4.Add(wall4_1);
+ Boundaries_4.Add(wall4_2);
+ Boundaries_4.Add(wall4_3);
+ Boundaries_4.Add(wall4_4);
+
+ Boundaries_1.Add(block1_1);
+ Boundaries_1.Add(block1_2);
+ Boundaries_1.Add(block1_3);
+ Boundaries_2.Add(block2_1);
+ Boundaries_2.Add(block2_2);
+ Boundaries_3.Add(block3_1);
+ Boundaries_3.Add(block3_2);
+ Boundaries_3.Add(block3_3);
+ Boundaries_3.Add(block3_4);
+ Boundaries_3.Add(block3_5);
+ Boundaries_4.Add(block4_1);
+ Boundaries_4.Add(block4_2);
+ Boundaries_4.Add(block4_3);
+ Boundaries_4.Add(block4_4);
+ Boundaries_4.Add(block4_5);
+ Boundaries_4.Add(block4_6);
+ Boundaries_4.Add(block4_7);
+ }
+ }
+}
diff --git a/Final game/Program.cs b/Final game/Program.cs
new file mode 100644
index 0000000..b7f3eb9
--- /dev/null
+++ b/Final game/Program.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Final_game
+{
+ static class Program
+ {
+ ///
+ /// Главная точка входа для приложения.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Form Form1 = new Form1()
+ {
+ Width = 980,
+ Height = 425
+ };
+ Application.Run(Form1);
+ }
+ }
+}
diff --git a/Final game/Properties/AssemblyInfo.cs b/Final game/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..d829b98
--- /dev/null
+++ b/Final game/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Общие сведения об этой сборке предоставляются следующим набором
+// набора атрибутов. Измените значения этих атрибутов для изменения сведений,
+// связанных со сборкой.
+[assembly: AssemblyTitle("Final game")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("Final game")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2021")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми
+// для компонентов COM. Если необходимо обратиться к типу в этой сборке через
+// COM, следует установить атрибут ComVisible в TRUE для этого типа.
+[assembly: ComVisible(false)]
+
+// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
+[assembly: Guid("0723fdc2-a104-42fc-bb85-870846f3bbdb")]
+
+// Сведения о версии сборки состоят из указанных ниже четырех значений:
+//
+// Основной номер версии
+// Дополнительный номер версии
+// Номер сборки
+// Редакция
+//
+// Можно задать все значения или принять номера сборки и редакции по умолчанию
+// используя "*", как показано ниже:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Final game/Properties/Resources.Designer.cs b/Final game/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..6ed2484
--- /dev/null
+++ b/Final game/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// Этот код создан программным средством.
+// Версия среды выполнения: 4.0.30319.42000
+//
+// Изменения в этом файле могут привести к неправильному поведению и будут утрачены, если
+// код создан повторно.
+//
+//------------------------------------------------------------------------------
+
+namespace Final_game.Properties
+{
+
+
+ ///
+ /// Класс ресурсов со строгим типом для поиска локализованных строк и пр.
+ ///
+ // Этот класс был автоматически создан при помощи StronglyTypedResourceBuilder
+ // класс с помощью таких средств, как ResGen или Visual Studio.
+ // Для добавления или удаления члена измените файл .ResX, а затем перезапустите ResGen
+ // с параметром /str или заново постройте свой VS-проект.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Возврат кэшированного экземпляра ResourceManager, используемого этим классом.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Final_game.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Переопределяет свойство CurrentUICulture текущего потока для всех
+ /// подстановки ресурсов с помощью этого класса ресурсов со строгим типом.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/Final game/Properties/Resources.resx b/Final game/Properties/Resources.resx
new file mode 100644
index 0000000..ffecec8
--- /dev/null
+++ b/Final game/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Final game/Properties/Settings.Designer.cs b/Final game/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..01cad27
--- /dev/null
+++ b/Final game/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Final_game.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/Final game/Properties/Settings.settings b/Final game/Properties/Settings.settings
new file mode 100644
index 0000000..abf36c5
--- /dev/null
+++ b/Final game/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Final game/Resources/Heart.png b/Final game/Resources/Heart.png
new file mode 100644
index 0000000..233925c
Binary files /dev/null and b/Final game/Resources/Heart.png differ
diff --git a/Final game/Resources/background.png b/Final game/Resources/background.png
new file mode 100644
index 0000000..4a6d950
Binary files /dev/null and b/Final game/Resources/background.png differ
diff --git a/Final game/Resources/background.psd b/Final game/Resources/background.psd
new file mode 100644
index 0000000..fe84d4e
Binary files /dev/null and b/Final game/Resources/background.psd differ
diff --git a/Final game/Resources/door .png b/Final game/Resources/door .png
new file mode 100644
index 0000000..0fa843c
Binary files /dev/null and b/Final game/Resources/door .png differ
diff --git a/Final game/Resources/hero.png b/Final game/Resources/hero.png
new file mode 100644
index 0000000..2bf6833
Binary files /dev/null and b/Final game/Resources/hero.png differ
diff --git a/Final game/Resources/lifebar.png b/Final game/Resources/lifebar.png
new file mode 100644
index 0000000..8ca970a
Binary files /dev/null and b/Final game/Resources/lifebar.png differ
diff --git a/Final game/Resources/wall.png b/Final game/Resources/wall.png
new file mode 100644
index 0000000..396f4c7
Binary files /dev/null and b/Final game/Resources/wall.png differ
diff --git "a/Final game/Resources/\320\277\320\276\320\264\321\201\321\202\320\260\320\262\320\272\320\260.png" "b/Final game/Resources/\320\277\320\276\320\264\321\201\321\202\320\260\320\262\320\272\320\260.png"
new file mode 100644
index 0000000..63341ef
Binary files /dev/null and "b/Final game/Resources/\320\277\320\276\320\264\321\201\321\202\320\260\320\262\320\272\320\260.png" differ
diff --git "a/Final game/Resources/\321\201\320\272\320\265\320\273\320\265\321\202.png" "b/Final game/Resources/\321\201\320\272\320\265\320\273\320\265\321\202.png"
new file mode 100644
index 0000000..739b590
Binary files /dev/null and "b/Final game/Resources/\321\201\320\272\320\265\320\273\320\265\321\202.png" differ
diff --git a/Final game/bin/Debug/Final game.exe b/Final game/bin/Debug/Final game.exe
new file mode 100644
index 0000000..3e5136a
Binary files /dev/null and b/Final game/bin/Debug/Final game.exe differ
diff --git a/Final game/bin/Debug/Final game.exe.config b/Final game/bin/Debug/Final game.exe.config
new file mode 100644
index 0000000..5754728
--- /dev/null
+++ b/Final game/bin/Debug/Final game.exe.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final game/bin/Debug/Final game.pdb b/Final game/bin/Debug/Final game.pdb
new file mode 100644
index 0000000..c4e6047
Binary files /dev/null and b/Final game/bin/Debug/Final game.pdb differ
diff --git a/Final game/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/Final game/obj/Debug/DesignTimeResolveAssemblyReferences.cache
new file mode 100644
index 0000000..e0bd4cd
Binary files /dev/null and b/Final game/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ
diff --git a/Final game/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Final game/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..f9f8e20
Binary files /dev/null and b/Final game/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/Final game/obj/Debug/Final game.csproj.CoreCompileInputs.cache b/Final game/obj/Debug/Final game.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..f68d251
--- /dev/null
+++ b/Final game/obj/Debug/Final game.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+8ae4dbd74641607e96f49205f3bf785dbb2bf4d2
diff --git a/Final game/obj/Debug/Final game.csproj.FileListAbsolute.txt b/Final game/obj/Debug/Final game.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..c6345f0
--- /dev/null
+++ b/Final game/obj/Debug/Final game.csproj.FileListAbsolute.txt
@@ -0,0 +1,11 @@
+C:\Users\Максим\source\repos\Final game\bin\Debug\Final game.exe.config
+C:\Users\Максим\source\repos\Final game\bin\Debug\Final game.exe
+C:\Users\Максим\source\repos\Final game\bin\Debug\Final game.pdb
+C:\Users\Максим\source\repos\Final game\obj\Debug\Final game.csprojAssemblyReference.cache
+C:\Users\Максим\source\repos\Final game\obj\Debug\Final_game.Images.resources
+C:\Users\Максим\source\repos\Final game\obj\Debug\Final_game.Properties.Resources.resources
+C:\Users\Максим\source\repos\Final game\obj\Debug\Final game.csproj.GenerateResource.cache
+C:\Users\Максим\source\repos\Final game\obj\Debug\Final game.csproj.CoreCompileInputs.cache
+C:\Users\Максим\source\repos\Final game\obj\Debug\Final game.exe
+C:\Users\Максим\source\repos\Final game\obj\Debug\Final game.pdb
+C:\Users\Максим\source\repos\Final game\obj\Debug\Final_game.Form1.resources
diff --git a/Final game/obj/Debug/Final game.csproj.GenerateResource.cache b/Final game/obj/Debug/Final game.csproj.GenerateResource.cache
new file mode 100644
index 0000000..e3fcb26
Binary files /dev/null and b/Final game/obj/Debug/Final game.csproj.GenerateResource.cache differ
diff --git a/Final game/obj/Debug/Final game.csprojAssemblyReference.cache b/Final game/obj/Debug/Final game.csprojAssemblyReference.cache
new file mode 100644
index 0000000..fba7aa8
Binary files /dev/null and b/Final game/obj/Debug/Final game.csprojAssemblyReference.cache differ
diff --git a/Final game/obj/Debug/Final game.exe b/Final game/obj/Debug/Final game.exe
new file mode 100644
index 0000000..3e5136a
Binary files /dev/null and b/Final game/obj/Debug/Final game.exe differ
diff --git a/Final game/obj/Debug/Final game.pdb b/Final game/obj/Debug/Final game.pdb
new file mode 100644
index 0000000..c4e6047
Binary files /dev/null and b/Final game/obj/Debug/Final game.pdb differ
diff --git a/Final game/obj/Debug/Final_game.Form1.resources b/Final game/obj/Debug/Final_game.Form1.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/Final game/obj/Debug/Final_game.Form1.resources differ
diff --git a/Final game/obj/Debug/Final_game.Images.resources b/Final game/obj/Debug/Final_game.Images.resources
new file mode 100644
index 0000000..2dfddcc
Binary files /dev/null and b/Final game/obj/Debug/Final_game.Images.resources differ
diff --git a/Final game/obj/Debug/Final_game.Properties.Resources.resources b/Final game/obj/Debug/Final_game.Properties.Resources.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/Final game/obj/Debug/Final_game.Properties.Resources.resources differ
diff --git a/Final game/obj/Debug/TempPE/Images.Designer.cs.dll b/Final game/obj/Debug/TempPE/Images.Designer.cs.dll
new file mode 100644
index 0000000..b58c6de
Binary files /dev/null and b/Final game/obj/Debug/TempPE/Images.Designer.cs.dll differ
diff --git a/Final game/obj/Debug/TempPE/Resource1.Designer.cs.dll b/Final game/obj/Debug/TempPE/Resource1.Designer.cs.dll
new file mode 100644
index 0000000..048983c
Binary files /dev/null and b/Final game/obj/Debug/TempPE/Resource1.Designer.cs.dll differ
diff --git a/Final game/obj/Debug/TempPE/Sounds.Designer.cs.dll b/Final game/obj/Debug/TempPE/Sounds.Designer.cs.dll
new file mode 100644
index 0000000..89fbfdc
Binary files /dev/null and b/Final game/obj/Debug/TempPE/Sounds.Designer.cs.dll differ