Map. One ghost. Menu, HUD

This commit is contained in:
Mootfrost777 2022-07-02 23:43:11 +03:00
parent fa1b5c8b61
commit 391e5e25ff
102 changed files with 1964 additions and 72 deletions

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Pacman.Classes
{
public enum DirectionsEnum
{
Up, Right, Down, Left, Stop
}
}

106
Pacman/Classes/Food.cs Normal file
View file

@ -0,0 +1,106 @@
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
namespace Pacman.Classes
{
public class Food
{
public string FoodType { get; set; }
public Rectangle FoodRectangle { get; set; }
public Rectangle sourceRectangle { get; set; }
public float Scale { get; set; }
public Vector2 Position { get; set; }
public int Prize { get; set; }
public bool isAlive { get; set; }
public Food(string foodType, Vector2 coordinate)
{
FoodType = foodType;
Position = coordinate;
}
public void LoadContent()
{
if (FoodType == "Point")
{
sourceRectangle = new Rectangle(new Point(230, 2), new Point(8, 8));
Prize = 10;
isAlive = true;
}
else if (FoodType == "Energyzer")
{
sourceRectangle = new Rectangle(new Point(252, 0), new Point(12, 12));
Prize = 50;
isAlive = true;
}
else if (FoodType == "Fruit")
{
sourceRectangle = new Rectangle(new Point(26, 122), new Point(20, 20));
Prize = 100;
isAlive = false;
}
FoodRectangle = new Rectangle((int)Position.X, (int)Position.Y, 12, 12);
}
int counter = 0;
public void Update()
{
if (isAlive || FoodType == "Fruit")
{
if (FoodType == "Fruit" && Game1.pacman.PointsEaten == 70 || Game1.pacman.PointsEaten == 170)
{
isAlive = true;
}
if (FoodRectangle.Intersects(Game1.pacman.PacmanRectangle) && isAlive)
{
if (FoodType == "Energyzer")
{
Game1.pacman.PointsEaten++;
MediaPlayer.Play(Game1.intermissionSong);
Game1.pacman.EnergyzerTime = 360;
for (int i = 0; i < Game1.Ghosts.Count; i++)
{
Game1.Ghosts[i].AfraidTime = 360;
}
}
else if (FoodType != "Fruit")
{
Game1.pacman.PointsEaten++;
if (!Game1.pacman.IsEnergyzerEffectOn)
{
Game1.chompSound.Play();
}
}
else if (FoodType == "Fruit")
{
Game1.fruitEatenSound.Play();
}
isAlive = false;
Game1.pacman.Score += Prize;
}
}
}
public void Draw(SpriteBatch spriteBatch)
{
if (isAlive)
{
Scale = 12 / sourceRectangle.Width;
if (FoodType == "Fruit")
{
Scale = 2;
}
spriteBatch.Draw(Game1.spriteSheet, Position, sourceRectangle, Color.White, 0, new Vector2(12, 12), (float)Scale, SpriteEffects.None, 0);
}
}
}
}

284
Pacman/Classes/Ghost.cs Normal file
View file

@ -0,0 +1,284 @@
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using System.IO;
using System.Linq;
using System.Diagnostics;
namespace Pacman.Classes
{
public class Ghost
{
public int CurrentDirectionTexturesNumber { get; set; }
public int CurrentTextureNumber { get; set; }
public float Speed = 1.5f;
public Vector2 Position { get; set; }
public bool IsAfraidEffectOn { get; set; }
public int AfraidTime { get; set; }
public int AnimationCooldawn { get; set; }
public bool IsAlive { get; set; }
public string Obstackles { get; set; }
public Rectangle GhostRectangle = new Rectangle();
public List<List<Rectangle>> CommonTextureSourceRectangles { get; set; }
public List<Rectangle> AfraidTextureSourceRectangles { get; set; } = new List<Rectangle>();
public List<List<Rectangle>> DeathTextureSourceRectangles { get; set; } = new List<List<Rectangle>>();
public double Scale { get; set; }
public string GhostName { get; set; }
public Vector2 StartPosition { get; set; }
public Vector2 AfraidFinishPosition { get; set; }
public List<DirectionsEnum> Directions { get; set; }
public DirectionsEnum CurrentDirection { get; set; }
public PathFinder Finder { get; set; }
string[] file = File.ReadAllText("map.txt").Replace("\r", "").Split('\n');
public Ghost(string GhostName)
{
Finder = new PathFinder();
this.GhostName = GhostName;
Point size = new Point(22, 22);
Point StartTexturePosition = new Point();
CurrentDirectionTexturesNumber = 0;
CurrentTextureNumber = 0;
IsAfraidEffectOn = false;
AfraidTime = 0;
IsAlive = true;
Obstackles = "┃━┏┓┗┛";
Directions = new List<DirectionsEnum>();
if (GhostName == "Blinky")
{
StartTexturePosition = new Point(0, 144);
StartPosition = new Vector2(324, 324);
AfraidFinishPosition = new Vector2(624, 696);
}
else if (GhostName == "Pinky")
{
StartTexturePosition = new Point(0, 192);
StartPosition = new Vector2(276, 348);
AfraidFinishPosition = new Vector2(48, 696);
}
else if (GhostName == "Inky")
{
StartTexturePosition = new Point(192, 192);
StartPosition = new Vector2(372, 348);
AfraidFinishPosition = new Vector2(624, 48);
}
else if (GhostName == "Clyde")
{
StartTexturePosition = new Point(0, 216);
StartPosition = new Vector2(324, 348);
AfraidFinishPosition = new Vector2(48, 48);
}
AfraidTextureSourceRectangles.Add(new Rectangle(new Point(192, 96), size));
AfraidTextureSourceRectangles.Add(new Rectangle(new Point(216, 96), size));
Position = StartPosition;
GhostRectangle = new Rectangle(0, 0, 24, 24);
CommonTextureSourceRectangles = new List<List<Rectangle>>();
for (int i = 0; i < 4; i++)
{
CommonTextureSourceRectangles.Add(new List<Rectangle>());
for (int j = 0; j < 2; j++)
{
CommonTextureSourceRectangles[i].Add(new Rectangle(new Point(StartTexturePosition.X + 24 * (i * 2 + j), StartTexturePosition.Y), size));
}
}
StartTexturePosition = new Point(192, 216);
for (int i = 0; i < 4; i++)
{
DeathTextureSourceRectangles.Add(new List<Rectangle>());
for (int j = 0; j < 2; j++)
{
DeathTextureSourceRectangles[i].Add(new Rectangle(new Point(StartTexturePosition.X + 24 * (i * 2 + j), StartTexturePosition.Y), size));
}
}
}
public void Update()
{
if ((Directions.Count == 0 || CurrentDirection == DirectionsEnum.Stop))
{
if (IsAlive && !IsAfraidEffectOn && GhostName == "Blinky")
{
Vector2 PersonalPosition = GetPersonalTargetPosition();
Directions = Finder.FindWave((int)Position.X / 24, (int)Position.Y / 24, (int)PersonalPosition.X / 24, (int)PersonalPosition.Y / 24);
}
else if (!IsAlive)
{
Directions = Finder.FindWave((int)Position.X / 24, (int)Position.Y / 24, (int)StartPosition.X / 24, (int)StartPosition.Y / 24);
}
else if (IsAfraidEffectOn)
{
Directions = Finder.FindWave((int)Position.X/24, (int)Position.Y/24, (int)AfraidFinishPosition.X/24, (int)AfraidFinishPosition.Y/24);
}
}
if ((Position.Y - 12) % 24 == 0 && (Position.X - 12) % 24 == 0 && Directions.Count != 0)
{
if (Directions[0] == DirectionsEnum.Up && !Obstackles.Contains(file[(int)(Position.Y / 24 - 1)][(int)Position.X / 24]))
{
CurrentDirection = DirectionsEnum.Up;
CurrentDirectionTexturesNumber = 3;
Directions.Remove(Directions[0]);
}
else if (Directions[0] == DirectionsEnum.Right && !Obstackles.Contains(file[(int)Position.Y / 24][(int)(Position.X / 24 + 1)]))
{
CurrentDirection = DirectionsEnum.Right;
CurrentDirectionTexturesNumber = 0;
Directions.Remove(Directions[0]);
}
else if (Directions[0] == DirectionsEnum.Down && !Obstackles.Contains(file[(int)(Position.Y / 24 + 1)][(int)Position.X / 24]))
{
CurrentDirection = DirectionsEnum.Down;
CurrentDirectionTexturesNumber = 1;
Directions.Remove(Directions[0]);
}
else if (Directions[0] == DirectionsEnum.Left && !Obstackles.Contains(file[(int)Position.Y / 24][(int)(Position.X / 24 - 1)]))
{
CurrentDirection = DirectionsEnum.Left;
CurrentDirectionTexturesNumber = 2;
Directions.Remove(Directions[0]);
}
else if (Directions[0] == DirectionsEnum.Stop)
{
CurrentDirection = DirectionsEnum.Stop;
Directions.Remove(Directions[0]);
}
}
if (CurrentDirection == DirectionsEnum.Up && !Obstackles.Contains(file[(int)(Position.Y / 24 - 0.5)][(int)Position.X / 24]))
{
Position = new Vector2(Position.X, Position.Y - Speed);
}
else if (CurrentDirection == DirectionsEnum.Right && !Obstackles.Contains(file[(int)Position.Y / 24][(int)(Position.X / 24 + 0.5)]))
{
Position = new Vector2(Position.X + Speed, Position.Y);
}
else if (CurrentDirection == DirectionsEnum.Down && !Obstackles.Contains(file[(int)(Position.Y / 24 + 0.5)][(int)Position.X / 24]))
{
Position = new Vector2(Position.X, Position.Y + Speed);
}
else if (CurrentDirection == DirectionsEnum.Left && !Obstackles.Contains(file[(int)Position.Y / 24][(int)(Position.X / 24 - 0.5)]))
{
Position = new Vector2(Position.X - Speed, Position.Y);
}
if (CurrentDirection == DirectionsEnum.Up && Obstackles.Contains(file[(int)(Position.Y / 24 - 0.5)][(int)Position.X / 24]))
{
Position = new Vector2(Position.X, ((int)(Position.Y / 24)) * 24 + 12);
CurrentDirection = DirectionsEnum.Stop;
}
else if (CurrentDirection == DirectionsEnum.Right && Obstackles.Contains(file[(int)Position.Y / 24][(int)(Position.X / 24 + 0.5)]))
{
Position = new Vector2(((int)(Position.X / 24)) * 24 + 12, Position.Y);
CurrentDirection = DirectionsEnum.Stop;
}
else if (CurrentDirection == DirectionsEnum.Down && Obstackles.Contains(file[(int)(Position.Y / 24 + 0.5)][(int)Position.X / 24]))
{
Position = new Vector2(Position.X, ((int)(Position.Y / 24)) * 24 + 12);
CurrentDirection = DirectionsEnum.Stop;
}
else if (CurrentDirection == DirectionsEnum.Left && Obstackles.Contains(file[(int)Position.Y / 24][(int)(Position.X / 24 - 0.5)]))
{
Position = new Vector2(((int)(Position.X / 24)) * 24 + 12, Position.Y);
CurrentDirection = DirectionsEnum.Stop;
}
if (CurrentDirection == DirectionsEnum.Left && file[(int)Position.Y / 24][(int)Position.X / 24] == '1')
{
Position = new Vector2(648, 348);
}
else if (CurrentDirection == DirectionsEnum.Right && file[(int)Position.Y / 24][(int)Position.X / 24] == '2')
{
Position = new Vector2(24, 348);
}
GhostRectangle.X = (int)Position.X;
GhostRectangle.Y = (int)Position.Y;
if (Position.X/24 == StartPosition.X/24 && Position.Y/24 == StartPosition.Y/24 && !IsAlive)
{
IsAlive = true;
Speed /= 4;
}
if (AfraidTime == 0 && IsAfraidEffectOn)
{
IsAfraidEffectOn = false;
Directions.Clear();
}
else if (AfraidTime != 0 && !IsAfraidEffectOn)
{
IsAfraidEffectOn = true;
Directions.Clear();
}
if (AfraidTime != 0)
{
AfraidTime--;
}
if (AnimationCooldawn == 6)
{
CurrentTextureNumber++;
AnimationCooldawn = 0;
}
AnimationCooldawn++;
if (CurrentTextureNumber > 1)
{
CurrentTextureNumber = 0;
}
if (GhostRectangle.Intersects(Game1.pacman.PacmanRectangle) && !IsAfraidEffectOn && IsAlive)
{
// Pacman died
if (Game1.pacman.ExtraLives > 0)
{
Game1.deathSong.Play();
Game1.RestartGame(false);
}
else
{
Game1.UpdateHighScore(Game1.pacman.highScore);
Game1.gameState = GameState.GameOver;
Game1.deathSong.Play();
}
}
else if (GhostRectangle.Intersects(Game1.pacman.PacmanRectangle) && IsAfraidEffectOn && IsAlive)
{
Speed *= 4;
Debug.WriteLine(200 * Game1.pacman.ghostsEaten);
Game1.pacman.highScore += 200 * Game1.pacman.ghostsEaten;
Game1.pacman.ghostsEaten++;
Game1.ghostDiedSound.Play();
Directions.Clear();
IsAlive = false;
}
}
public void Draw(SpriteBatch spriteBatch)
{
Scale = 24 / 22;
Rectangle CurrentSourceRectangle = new Rectangle();
if (!IsAfraidEffectOn && IsAlive)
{
CurrentSourceRectangle = CommonTextureSourceRectangles[CurrentDirectionTexturesNumber][CurrentTextureNumber];
}
else if (!IsAlive)
{
CurrentSourceRectangle = DeathTextureSourceRectangles[CurrentDirectionTexturesNumber][CurrentTextureNumber];
}
else if (IsAfraidEffectOn)
{
CurrentSourceRectangle = AfraidTextureSourceRectangles[CurrentTextureNumber];
}
spriteBatch.Draw(Game1.spriteSheet, Position, CurrentSourceRectangle, Color.White, 0, new Vector2(11, 11), (float)Scale, SpriteEffects.None, 0);
}
public Vector2 GetPersonalTargetPosition()
{
if (GhostName == "Blinky")
{
return Game1.pacman.Position;
}
else if (GhostName == "Pinky")
{
}
return new Vector2();
}
}
}

View file

@ -9,46 +9,11 @@ using System.Linq;
namespace Pacman.Classes
{
public class Map
public static class Map
{
private static Texture2D texture;
public static string[,] map;
private string[,] map;
private int[,] dirs = { { -1, 0 }, { 0, -1 }, { 1, 0 }, { 0, 1 } };
private void ScanMap()
{
Queue<int[]> toVisit = new Queue<int[]>();
List<int[]> visited = new List<int[]>();
}
/*private Tuple<string, int[,]> GetCellType(int[] cords)
{
bool[] walls = new bool[4];
for (int i = 0; i < dirs.GetLength(0); i++)
{
if (map[cords[0] + dirs[i, 0],
cords[1] + dirs[i, 1]]
== "#")
{
walls[i] = true;
}
}
if (walls[0] == walls[2] && walls[0] == true)
{
}
}*/
public static void LoadContent(ContentManager Content)
{
texture = Content.Load<Texture2D>("sprites");
}
public void LoadMap()
public static void LoadMap()
{
string file = File.ReadAllText("map.txt").Replace("\r", "");
string[] rows = file.Split('\n');
@ -59,11 +24,23 @@ namespace Pacman.Classes
for (int j = 0; j < rows[i].Length; j++)
{
map[i, j] = rows[i][j].ToString();
if (map[i,j] == ".")
{
Game1.Foods.Add(new Food("Point", new Vector2(24 * j + 12, 24 * i + 12)));
}
else if(map[i, j] == "O")
{
Game1.Foods.Add(new Food("Energyzer", new Vector2(24 * j + 12, 24 * i + 12)));
}
else if (map[i, j] == "C")
{
Game1.Foods.Add(new Food("Fruit", new Vector2(24 * j + 12, 24 * i + 12)));
}
}
}
}
public void Draw(SpriteBatch spriteBatch)
public static void Draw(SpriteBatch spriteBatch)
{
for (int i = 0; i < map.GetLength(0); i++)
{
@ -74,6 +51,7 @@ namespace Pacman.Classes
switch (map[i, j])
{
case "┃":
pos = new Point(36, 96);
size = new Point(12, 24);
@ -98,10 +76,6 @@ namespace Pacman.Classes
pos = new Point(84, 113);
size = new Point(16, 7);
break;
case "C":
pos = new Point(84, 113);
size = new Point(16, 7);
break;
default:
pos = new Point(0, 0);
size = new Point(0, 0);
@ -111,13 +85,10 @@ namespace Pacman.Classes
// Это костыль pro max для нормальной карты, не использовать!!!!!!!
Rectangle sourceRect = new Rectangle(pos, size);
Rectangle destinationRect = new Rectangle(new Point(j * 24, i * 24), size);
spriteBatch.Draw(texture,
spriteBatch.Draw(Game1.spriteSheet,
destinationRect,
sourceRect,
Color.White);
// Это ректэнгл объекта для колизии
Rectangle boundingBox = new Rectangle(new Point(j * 24, i * 24), new Point(24, 24));
}
}

204
Pacman/Classes/Pacman.cs Normal file
View file

@ -0,0 +1,204 @@
using System;
using System.Collections.Generic;
using System.Reflection.Metadata;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using System.IO;
using System.Linq;
using Microsoft.Xna.Framework.Media;
namespace Pacman
{
public class Pacman
{
public Rectangle PacmanRectangle = new Rectangle();
public int CurrentTextureNumber;
public int PointsEaten;
public int Score;
public float Rotation;
public string Direction;
public float Speed;
public Vector2 Position;
public bool IsEnergyzerEffectOn;
public int EnergyzerTime;
public int ExtraLives;
public int AnimationCooldawn;
public string Obstackles;
public Rectangle sourceRectangle;
public Keys PressedKey;
public double Scale;
public int Level = 0;
public int highScore;
public int ghostsEaten = 1;
string[] file = File.ReadAllText("map.txt").Replace("\r", "").Split('\n');
public Pacman()
{
PointsEaten = 0;
Score = 0;
Speed = 1.5f;
Rotation = 0;
ExtraLives = 4;
Position = new Vector2(324, 564);
CurrentTextureNumber = 0;
EnergyzerTime = 0;
Obstackles = "┃━┏┓┗┛";
IsEnergyzerEffectOn = false;
PacmanRectangle = new Rectangle(0, 0, (int)(24), (int)(24));
}
public void Update()
{
KeyboardState state = Keyboard.GetState();
if ((PressedKey == Keys.None || Direction == null) && state.GetPressedKeyCount() != 0)
{
PressedKey = state.GetPressedKeys()[0];
}
if ((Position.Y - 12) % 24 == 0 && (Position.X - 12) % 24 == 0)
{
if (PressedKey == Keys.W && !Obstackles.Contains(file[(int)(Position.Y / 24 - 1)][(int)Position.X / 24]))
{
Rotation = 0;
PressedKey = Keys.None;
if (Direction != "Up")
{
Direction = "Up";
}
}
else if (PressedKey == Keys.D && !Obstackles.Contains(file[(int)Position.Y / 24][(int)(Position.X / 24 + 1)]))
{
Rotation = (float)(0.5 * Math.PI);
PressedKey = Keys.None;
if (Direction != "Right")
{
Direction = "Right";
}
}
else if (PressedKey == Keys.S && !Obstackles.Contains(file[(int)(Position.Y / 24 + 1)][(int)Position.X / 24]))
{
Rotation = (float)(Math.PI);
PressedKey = Keys.None;
if (Direction != "Down")
{
Direction = "Down";
}
}
else if (PressedKey == Keys.A && !Obstackles.Contains(file[(int)Position.Y / 24][(int)(Position.X / 24 - 1)]))
{
Rotation = (float)(1.5 * Math.PI);
PressedKey = Keys.None;
if (Direction != "Left")
{
Direction = "Left";
}
}
}
if (Direction == "Up" && !Obstackles.Contains(file[(int)(Position.Y / 24 - 0.5)][(int)Position.X / 24]))
{
Position = new Vector2(Position.X, Position.Y - Speed);
}
else if (Direction == "Right" && !Obstackles.Contains(file[(int)Position.Y / 24][(int)(Position.X / 24 + 0.5)]))
{
Position = new Vector2(Position.X + Speed, Position.Y);
}
else if (Direction == "Down" && !Obstackles.Contains(file[(int)(Position.Y / 24 + 0.5)][(int)Position.X / 24]))
{
Position = new Vector2(Position.X, Position.Y + Speed);
}
else if (Direction == "Left" && !Obstackles.Contains(file[(int)Position.Y / 24][(int)(Position.X / 24 - 0.5)]))
{
Position = new Vector2(Position.X - Speed, Position.Y);
}
if (Direction == "Up" && Obstackles.Contains(file[(int)(Position.Y / 24 - 0.5)][(int)Position.X / 24]))
{
Position = new Vector2(Position.X, ((int)(Position.Y / 24)) * 24 + 12);
Direction = null;
}
else if (Direction == "Right" && Obstackles.Contains(file[(int)Position.Y / 24][(int)(Position.X / 24 + 0.5)]))
{
Position = new Vector2(((int)(Position.X / 24)) * 24 + 12, Position.Y);
Direction = null;
}
else if (Direction == "Down" && Obstackles.Contains(file[(int)(Position.Y / 24 + 0.5)][(int)Position.X / 24]))
{
Position = new Vector2(Position.X, ((int)(Position.Y / 24)) * 24 + 12);
Direction = null;
}
else if (Direction == "Left" && Obstackles.Contains(file[(int)Position.Y / 24][(int)(Position.X / 24 - 0.5)]))
{
Position = new Vector2(((int)(Position.X / 24)) * 24 + 12, Position.Y);
Direction = null;
}
if (Direction == "Left" && file[(int)Position.Y / 24][(int)Position.X / 24] == '1')
{
Position = new Vector2(648, 348);
}
else if (Direction == "Right" && file[(int)Position.Y / 24][(int)Position.X / 24] == '2')
{
Position = new Vector2(24, 348);
}
PacmanRectangle.X = (int)Position.X;
PacmanRectangle.Y = (int)Position.Y;
AnimationCooldawn++;
if (AnimationCooldawn == 4)
{
CurrentTextureNumber++;
AnimationCooldawn = 0;
}
if (CurrentTextureNumber > 2)
{
CurrentTextureNumber = 0;
}
if (EnergyzerTime == 0 && IsEnergyzerEffectOn)
{
ghostsEaten = default;
IsEnergyzerEffectOn = false;
MediaPlayer.Stop();
Speed /= 2;
}
else if (EnergyzerTime != 0 && !IsEnergyzerEffectOn)
{
IsEnergyzerEffectOn = true;
Speed *= 2;
}
if (EnergyzerTime != 0)
{
EnergyzerTime--;
}
// Pacman completed the level
if (PointsEaten >= Game1.Foods.Count - 1)
{
Game1.RestartGame(true);
}
if (Score > highScore)
{
highScore = Score;
}
}
public void Draw(SpriteBatch spriteBatch)
{
if (CurrentTextureNumber == 0)
{
sourceRectangle = new Rectangle(new Point(2, 168), new Point(22, 22));
}
else if (CurrentTextureNumber == 1)
{
sourceRectangle = new Rectangle(new Point(74, 72), new Point(22, 22));
}
else if(CurrentTextureNumber == 2)
{
sourceRectangle = new Rectangle(new Point(26, 72), new Point(22, 22));
}
Scale = 24 / sourceRectangle.Width;
spriteBatch.Draw(Game1.spriteSheet, Position, sourceRectangle, Color.White, Rotation, new Vector2(12, 12), (float)Scale, SpriteEffects.None, 0);
}
}
}

View file

@ -0,0 +1,113 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace Pacman.Classes
{
public class PathFinder
{
private static int[,] Map { get; set; }
private static List<string> walls = new List<string>()
{
"┃", "━", "┏", "┓", "┗", "┛"
};
private static int mapWidth;
private static int mapHeight;
public PathFinder()
{
mapHeight = Map.GetLength(0);
mapWidth = Map.GetLength(1);
}
public static void ConvertMap(string[,] map)
{
int[,] res = new int[map.GetLength(0), map.GetLength(1)];
for (int i = 0; i < map.GetLength(0); i++)
{
for (int j = 0; j < map.GetLength(1); j++)
{
if (!walls.Contains(map[i, j]))
{
res[i, j] = 0;
}
else
{
res[i, j] = 1;
}
}
}
Map = res;
}
public List<DirectionsEnum> FindWave(int startX, int startY, int targetX, int targetY)
{
bool add = true;
int[,] cMap = new int[mapHeight, mapWidth];
int x, y, step = 0;
for (y = 0; y < mapHeight; y++)
for (x = 0; x < mapWidth; x++)
{
if (Map[y, x] == 1)
cMap[y, x] = -2;
else
cMap[y, x] = -1;
}
cMap[targetY, targetX] = 0;
while (add == true)
{
add = false;
for (y = 0; y < mapWidth - 1; y++)
for (x = 0; x < mapHeight; x++)
{
if (cMap[x, y] == step)
{
if (x - 1 >= 0 && cMap[x - 1, y] != -2 && cMap[x - 1, y] == -1)
cMap[x - 1, y] = step + 1;
if (y - 1 >= 0 && cMap[x, y - 1] != -2 && cMap[x, y - 1] == -1)
cMap[x, y - 1] = step + 1;
if (x + 1 < mapHeight && cMap[x + 1, y] != -2 && cMap[x + 1, y] == -1)
cMap[x + 1, y] = step + 1;
if (y + 1 < mapHeight && cMap[x, y + 1] != -2 && cMap[x, y + 1] == -1)
cMap[x, y + 1] = step + 1;
}
}
step++;
add = true;
if (cMap[startY, startX] != -1)
add = false;
if (step > mapWidth * mapHeight)
add = false;
}
// Convert cma p to list of directions
List<DirectionsEnum> directions = new List<DirectionsEnum>();
int curX = startX;
int curY = startY;
while (cMap[curY, curX] != 0)
{
if (curX - 1 >= 0 && cMap[curY, curX - 1] == cMap[curY, curX] - 1)
{
directions.Add(DirectionsEnum.Left);
curX--;
}
else if (curY - 1 >= 0 && cMap[curY - 1, curX] == cMap[curY, curX] - 1)
{
directions.Add(DirectionsEnum.Up);
curY--;
}
else if (curX + 1 < mapWidth && cMap[curY, curX + 1] == cMap[curY, curX] - 1)
{
directions.Add(DirectionsEnum.Right);
curX++;
}
else if (curY + 1 < mapHeight && cMap[curY + 1, curX] == cMap[curY, curX] - 1)
{
directions.Add(DirectionsEnum.Down);
curY++;
}
}
return directions;
}
}
}

View file

@ -0,0 +1,25 @@
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using System.Collections.Generic;
using System.Linq;
namespace Pacman.Classes.UI
{
public class Character
{
public string description;
public Point pos;
public Point size;
public Color color;
public Character(string description, Point pos, Point size, Color color)
{
this.description = description;
this.pos = pos;
this.size = size;
this.color = color;
}
}
}

View file

@ -0,0 +1,88 @@
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Pacman.Classes.UI
{
public class GameOver
{
int counter = 0;
private KeyboardState keyboardState;
private KeyboardState prevKeyboardState;
private int selectedItem = 0;
private string[] menuElements
= { "play again", "main menu", "quit" };
public void Update()
{
keyboardState = Keyboard.GetState();
// Move in the menu
if (keyboardState.IsKeyDown(Keys.W) && selectedItem > 0 && keyboardState != prevKeyboardState)
{
selectedItem--;
}
if (keyboardState.IsKeyDown(Keys.S) && selectedItem < menuElements.Length - 1 && keyboardState != prevKeyboardState)
{
selectedItem++;
}
// Select menu item
if (keyboardState.IsKeyDown(Keys.Enter) && keyboardState != prevKeyboardState)
{
if (selectedItem == 0)
{
Game1.RestartGame(true);
Game1.gameState = GameState.Game;
Game1.pacman.Score = 0;
Game1.pacman.ExtraLives = 4;
}
else if (selectedItem == 1)
{
Game1.gameState = GameState.Menu;
}
else if (selectedItem == 2)
{
Environment.Exit(0);
}
}
prevKeyboardState = keyboardState;
}
public void Draw(SpriteBatch spriteBatch)
{
if (counter <= 30)
{
Label label = new Label("GAME OVER", new Vector2(0, 150), Color.Red);
label.HorizontalCenterGameOver((int)Game1.screenSize.X);
label.DrawGameOver(spriteBatch);
}
else if (counter >= 60)
{
counter = 0;
}
counter++;
for (int i = 0; i < menuElements.Length; i++)
{
string element = menuElements[i];
if (selectedItem == i)
{
element = "> " + element + " <";
}
Label label = new Label(element,
new Vector2(0, 500 + i * 35),
Color.White);
label.HorizontalCenter((int)Game1.screenSize.X);
label.Draw(spriteBatch);
}
}
}
}

40
Pacman/Classes/UI/HUD.cs Normal file
View file

@ -0,0 +1,40 @@
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace Pacman.Classes.UI
{
public class HUD
{
private Vector2 position;
public HUD(Vector2 position)
{
this.position = position;
}
public void Draw(SpriteBatch spriteBatch, int score, int lives)
{
Label label = new Label($"Score:{score}", position, Color.DarkRed);
label.Draw(spriteBatch);
label = new Label($"Hi-score:{Game1.pacman.highScore}", position, Color.DarkRed);
label.HorizontalRight((int)Game1.screenSize.X);
label.Draw(spriteBatch);
label = new Label($"Level:{Game1.pacman.Level + 1}", position + new Vector2(0, 40), Color.White);
label.HorizontalRight((int)Game1.screenSize.X);
label.Draw(spriteBatch);
for (int i = 0; i < lives; i++)
{
Rectangle sourceRect = new Rectangle(new Point(288, 72), new Point(44, 46));
Rectangle destinationRect = new Rectangle(new Point(i * 49, (int)position.Y + 50),
new Point(48, 48));
spriteBatch.Draw(Game1.spriteSheet,
destinationRect,
sourceRect,
Color.White);
}
}
}
}

View file

@ -0,0 +1,73 @@
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
namespace Pacman.Classes.UI
{
class Label
{
public static SpriteFont spriteFont;
public static SpriteFont gameOverFont;
private Color color_default;
public Vector2 Position { get; set; }
public string Text { get; set; }
public Color Color { get; set; }
public static string fontName = "gameFont";
public string FontName { set { fontName = value; } }
public Label()
{
Position = new Vector2(100, 100);
Text = "Label";
Color = Color.White;
color_default = Color;
}
public Label(string Text, Vector2 Position, Color Color)
{
this.Text = Text;
this.Position = Position;
this.Color = Color;
color_default = Color;
}
public void HorizontalCenter(int screenWidth)
{
Position = new Vector2(screenWidth / 2 - spriteFont.MeasureString(Text).X / 2, Position.Y);
}
public void HorizontalCenterGameOver(int screenWidth)
{
Position = new Vector2(screenWidth / 2 - gameOverFont.MeasureString(Text).X / 2, Position.Y);
}
public void HorizontalRight(int screenWidth)
{
Position = new Vector2(screenWidth - spriteFont.MeasureString(Text).X, Position.Y);
}
public void ResetColor()
{
Color = color_default;
}
public static void LoadContent(ContentManager Content)
{
spriteFont = Content.Load<SpriteFont>(fontName);
gameOverFont = Content.Load<SpriteFont>("gameOverFont");
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.DrawString(spriteFont, Text, Position, Color);
}
public void DrawGameOver(SpriteBatch spriteBatch)
{
spriteBatch.DrawString(gameOverFont, Text, Position, Color);
}
}
}

120
Pacman/Classes/UI/Menu.cs Normal file
View file

@ -0,0 +1,120 @@
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using System.Collections.Generic;
using System.Linq;
using System.Diagnostics;
using System;
using Microsoft.Xna.Framework.Media;
namespace Pacman.Classes.UI
{
public class Menu
{
private Texture2D logo;
private KeyboardState keyboardState;
private KeyboardState prevKeyboardState;
private static List<Character> characters = new List<Character>()
{
new Character("- shadow \"blinky\"", new Point(0, 144), new Point(22, 22), Color.Red),
new Character("- speedy \"pinky\"", new Point(0, 192), new Point(22, 22), Color.Pink),
new Character("- bashfull \"inky\"", new Point(192, 192), new Point(22, 22), Color.Cyan),
new Character("- pokey \"clyde\"", new Point(0, 216), new Point(22, 22), Color.Orange)
};
private static string[] menuElements
= { "play", "how to play", "quit" };
private int selectedItem = 0;
public void LoadContent(ContentManager content)
{
logo = content.Load<Texture2D>("logo");
}
public void Update()
{
keyboardState = Keyboard.GetState();
// Move in the menu
if (keyboardState.IsKeyDown(Keys.W) && selectedItem > 0 && keyboardState != prevKeyboardState)
{
selectedItem--;
}
if (keyboardState.IsKeyDown(Keys.S) && selectedItem < menuElements.Length - 1 && keyboardState != prevKeyboardState)
{
selectedItem++;
}
// Select menu item
if (keyboardState.IsKeyDown(Keys.Enter) && keyboardState != prevKeyboardState)
{
if (selectedItem == 0)
{
Game1.gameState = GameState.Game;
Game1.RestartGame(true);
Game1.pacman.Score = 0;
Game1.pacman.ExtraLives = 4;
MediaPlayer.Stop();
}
else if (selectedItem == 1)
{
// How to play
}
else if (selectedItem == 2)
{
Environment.Exit(0);
}
}
prevKeyboardState = keyboardState;
}
public void Draw(SpriteBatch spriteBatch)
{
Label label = new Label($"Hi-score:{Game1.pacman.highScore}",
new Vector2(50, 20),
Color.DarkRed);
label.Draw(spriteBatch);
Rectangle desinationRect = new Rectangle(
new Point((int)Game1.screenSize.X / 2 - 200, 100),
new Point(400, 140));
spriteBatch.Draw(logo,
desinationRect,
Color.White);
for (int i = 0; i < characters.Count; i++)
{
Character character = characters[i];
Rectangle sorceRect = new Rectangle(character.pos, character.size);
spriteBatch.Draw(Game1.spriteSheet,
new Vector2(60, 270 + i * character.size.Y * 1.3f),
sorceRect,
Color.White);
label = new Label(character.description,
new Vector2(75 + character.size.X, 270 + i * character.size.Y * 1.3f),
character.color);
label.Draw(spriteBatch);
}
for (int i = 0; i < menuElements.Length; i++)
{
string element = menuElements[i];
if (selectedItem == i)
{
element = "> " + element + " <";
}
label = new Label(element,
new Vector2(0, 500 + i * 35),
Color.White);
label.HorizontalCenter((int)Game1.screenSize.X);
label.Draw(spriteBatch);
}
}
}
}

View file

@ -13,6 +13,68 @@
#---------------------------------- Content ---------------------------------#
#begin chompSound.wav
/importer:WavImporter
/processor:SoundEffectProcessor
/processorParam:Quality=Best
/build:chompSound.wav
#begin deathSound.wav
/importer:WavImporter
/processor:SoundEffectProcessor
/processorParam:Quality=Best
/build:deathSound.wav
#begin fruitEaten.mp3
/importer:Mp3Importer
/processor:SoundEffectProcessor
/processorParam:Quality=Best
/build:fruitEaten.mp3
#begin gameFont.spritefont
/importer:FontDescriptionImporter
/processor:FontDescriptionProcessor
/processorParam:PremultiplyAlpha=True
/processorParam:TextureFormat=Compressed
/build:gameFont.spritefont
#begin gameOverFont.spritefont
/importer:FontDescriptionImporter
/processor:FontDescriptionProcessor
/processorParam:PremultiplyAlpha=True
/processorParam:TextureFormat=Compressed
/build:gameOverFont.spritefont
#begin ghostDeathSound.mp3
/importer:Mp3Importer
/processor:SoundEffectProcessor
/processorParam:Quality=Best
/build:ghostDeathSound.mp3
#begin intermissionSound.wav
/importer:WavImporter
/processor:SongProcessor
/processorParam:Quality=Best
/build:intermissionSound.wav
#begin logo.png
/importer:TextureImporter
/processor:TextureProcessor
/processorParam:ColorKeyColor=255,0,255,255
/processorParam:ColorKeyEnabled=True
/processorParam:GenerateMipmaps=False
/processorParam:PremultiplyAlpha=True
/processorParam:ResizeToPowerOfTwo=False
/processorParam:MakeSquare=False
/processorParam:TextureFormat=Color
/build:logo.png
#begin mainSong.wav
/importer:WavImporter
/processor:SongProcessor
/processorParam:Quality=Best
/build:mainSong.wav
#begin sprites.png
/importer:TextureImporter
/processor:TextureProcessor

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,35 @@
#if OPENGL
#define SV_POSITION POSITION
#define VS_SHADERMODEL vs_3_0
#define PS_SHADERMODEL ps_3_0
#else
#define VS_SHADERMODEL vs_4_0_level_9_1
#define PS_SHADERMODEL ps_4_0_level_9_1
#endif
Texture2D SpriteTexture;
sampler2D SpriteTextureSampler = sampler_state
{
Texture = <SpriteTexture>;
};
struct VertexShaderOutput
{
float4 Position : SV_POSITION;
float4 Color : COLOR0;
float2 TextureCoordinates : TEXCOORD0;
};
float4 MainPS(VertexShaderOutput input) : COLOR
{
return tex2D(SpriteTextureSampler,input.TextureCoordinates) * input.Color;
}
technique SpriteDrawing
{
pass P0
{
PixelShader = compile PS_SHADERMODEL MainPS();
}
};

View file

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file contains an xml description of a font, and will be read by the XNA
Framework Content Pipeline. Follow the comments to customize the appearance
of the font in your game, and to change the characters which are available to draw
with.
-->
<XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics">
<Asset Type="Graphics:FontDescription">
<!--
Modify this string to change the font that will be imported.
-->
<FontName>Emulogic</FontName>
<!--
Size is a float value, measured in points. Modify this value to change
the size of the font.
-->
<Size>16</Size>
<!--
Spacing is a float value, measured in pixels. Modify this value to change
the amount of spacing in between characters.
-->
<Spacing>0</Spacing>
<!--
UseKerning controls the layout of the font. If this value is true, kerning information
will be used when placing characters.
-->
<UseKerning>true</UseKerning>
<!--
Style controls the style of the font. Valid entries are "Regular", "Bold", "Italic",
and "Bold, Italic", and are case sensitive.
-->
<Style>Regular</Style>
<!--
If you uncomment this line, the default character will be substituted if you draw
or measure text that contains characters which were not included in the font.
-->
<!-- <DefaultCharacter>*</DefaultCharacter> -->
<!--
CharacterRegions control what letters are available in the font. Every
character from Start to End will be built and made available for drawing. The
default range is from 32, (ASCII space), to 126, ('~'), covering the basic Latin
character set. The characters are ordered according to the Unicode standard.
See the documentation for more information.
-->
<CharacterRegions>
<CharacterRegion>
<Start>&#32;</Start>
<End>&#126;</End>
</CharacterRegion>
</CharacterRegions>
</Asset>
</XnaContent>

View file

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file contains an xml description of a font, and will be read by the XNA
Framework Content Pipeline. Follow the comments to customize the appearance
of the font in your game, and to change the characters which are available to draw
with.
-->
<XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics">
<Asset Type="Graphics:FontDescription">
<!--
Modify this string to change the font that will be imported.
-->
<FontName>Emulogic</FontName>
<!--
Size is a float value, measured in points. Modify this value to change
the size of the font.
-->
<Size>36</Size>
<!--
Spacing is a float value, measured in pixels. Modify this value to change
the amount of spacing in between characters.
-->
<Spacing>0</Spacing>
<!--
UseKerning controls the layout of the font. If this value is true, kerning information
will be used when placing characters.
-->
<UseKerning>true</UseKerning>
<!--
Style controls the style of the font. Valid entries are "Regular", "Bold", "Italic",
and "Bold, Italic", and are case sensitive.
-->
<Style>Bold</Style>
<!--
If you uncomment this line, the default character will be substituted if you draw
or measure text that contains characters which were not included in the font.
-->
<!-- <DefaultCharacter>*</DefaultCharacter> -->
<!--
CharacterRegions control what letters are available in the font. Every
character from Start to End will be built and made available for drawing. The
default range is from 32, (ASCII space), to 126, ('~'), covering the basic Latin
character set. The characters are ordered according to the Unicode standard.
See the documentation for more information.
-->
<CharacterRegions>
<CharacterRegion>
<Start>&#32;</Start>
<End>&#126;</End>
</CharacterRegion>
</CharacterRegions>
</Asset>
</XnaContent>

Binary file not shown.

Binary file not shown.

BIN
Pacman/Content/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

BIN
Pacman/Content/mainSong.wav Normal file

Binary file not shown.

View file

@ -4,9 +4,27 @@
<Platform>Windows</Platform>
<Config />
<SourceFiles>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/chompSound.wav</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/deathSound.wav</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/fruitEaten.mp3</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/gameFont.spritefont</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/gameOverFont.spritefont</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/ghostDeathSound.mp3</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/intermissionSound.wav</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/logo.png</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/mainSong.wav</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/sprites.png</File>
</SourceFiles>
<DestFiles>
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
</DestFiles>
</SourceFileCollection>

View file

@ -1,2 +1,11 @@
Source File,Dest File,Processor Type,Content Type,Source File Size,Dest File Size,Build Seconds
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/sprites.png","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/sprites.xnb","TextureProcessor","Texture2DContent",5012,368725,0.1996307
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/chompSound.wav","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/chompSound.xnb","SoundEffectProcessor","SoundEffectContent",21528,21457,0.9651652
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/deathSound.wav","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/deathSound.xnb","SoundEffectProcessor","SoundEffectContent",17008,17021,0.6668953
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/fruitEaten.mp3","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/fruitEaten.xnb","SoundEffectProcessor","SoundEffectContent",10057,13929,0.9344639
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/gameFont.spritefont","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/gameFont.xnb","FontDescriptionProcessor","SpriteFontContent",2011,70690,0.3369461
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/gameOverFont.spritefont","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/gameOverFont.xnb","FontDescriptionProcessor","SpriteFontContent",2008,267298,0.085875
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/ghostDeathSound.mp3","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/ghostDeathSound.xnb","SoundEffectProcessor","SoundEffectContent",11728,16233,0.8279983
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/intermissionSound.wav","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/intermissionSound.xnb","SongProcessor","SongContent",57600,135,0.7278905
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/logo.png","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/logo.xnb","TextureProcessor","Texture2DContent",161105,1776085,0.1889831
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/mainSong.wav","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/mainSong.xnb","SongProcessor","SongContent",46592,126,0.6260953
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/sprites.png","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/sprites.xnb","TextureProcessor","Texture2DContent",5012,368725,0.0677785

View file

@ -4,9 +4,27 @@
<Platform>Windows</Platform>
<Config />
<SourceFiles>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/chompSound.wav</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/deathSound.wav</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/fruitEaten.mp3</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/gameFont.spritefont</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/gameOverFont.spritefont</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/ghostDeathSound.mp3</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/intermissionSound.wav</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/logo.png</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/mainSong.wav</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/sprites.png</File>
</SourceFiles>
<DestFiles>
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
</DestFiles>
</SourceFileCollection>

View file

@ -1,2 +1,11 @@
Source File,Dest File,Processor Type,Content Type,Source File Size,Dest File Size,Build Seconds
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/chompSound.wav","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/chompSound.xnb","SoundEffectProcessor","SoundEffectContent",21528,21457,0.7019035
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/deathSound.wav","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/deathSound.xnb","SoundEffectProcessor","SoundEffectContent",17008,17021,0.6754085
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/fruitEaten.mp3","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/fruitEaten.xnb","SoundEffectProcessor","SoundEffectContent",10057,13929,0.7637201
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/gameFont.spritefont","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/gameFont.xnb","FontDescriptionProcessor","SpriteFontContent",2011,70690,0.3852959
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/gameOverFont.spritefont","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/gameOverFont.xnb","FontDescriptionProcessor","SpriteFontContent",2008,267298,0.4839005
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/ghostDeathSound.mp3","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/ghostDeathSound.xnb","SoundEffectProcessor","SoundEffectContent",11728,16233,1.1415013
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/intermissionSound.wav","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/intermissionSound.xnb","SongProcessor","SongContent",57600,135,0.7034911
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/logo.png","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/logo.xnb","TextureProcessor","Texture2DContent",161105,1776085,0.6158541
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/mainSong.wav","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/mainSong.xnb","SongProcessor","SongContent",46592,126,0.4894537
"C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/sprites.png","C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/sprites.xnb","TextureProcessor","Texture2DContent",5012,368725,0.2415895

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/chompSound.wav</SourceFile>
<SourceTime>2022-07-02T23:38:17.5676669+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/chompSound.xnb</DestFile>
<DestTime>2022-07-02T23:38:35.6800123+03:00</DestTime>
<Importer>WavImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>SoundEffectProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>Quality</Key>
<Value>Best</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/deathSound.wav</SourceFile>
<SourceTime>2004-04-03T11:29:18+04:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/deathSound.xnb</DestFile>
<DestTime>2022-07-02T00:26:19.258734+03:00</DestTime>
<Importer>WavImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>SoundEffectProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>Quality</Key>
<Value>Best</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/fruitEaten.mp3</SourceFile>
<SourceTime>2022-07-02T16:22:50.1623369+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/fruitEaten.xnb</DestFile>
<DestTime>2022-07-02T16:23:38.8102232+03:00</DestTime>
<Importer>Mp3Importer</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>SoundEffectProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>Quality</Key>
<Value>Best</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/gameFont.spritefont</SourceFile>
<SourceTime>2022-07-01T14:42:48.0529101+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/gameFont.xnb</DestFile>
<DestTime>2022-07-01T14:42:53.8426175+03:00</DestTime>
<Importer>FontDescriptionImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>FontDescriptionProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>PremultiplyAlpha</Key>
<Value>True</Value>
</Parameters>
<Parameters>
<Key>TextureFormat</Key>
<Value>Compressed</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/gameOverFont.spritefont</SourceFile>
<SourceTime>2022-07-02T14:55:47.6326791+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/gameOverFont.xnb</DestFile>
<DestTime>2022-07-02T14:55:53.1383332+03:00</DestTime>
<Importer>FontDescriptionImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>FontDescriptionProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>PremultiplyAlpha</Key>
<Value>True</Value>
</Parameters>
<Parameters>
<Key>TextureFormat</Key>
<Value>Compressed</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/ghostDeathSound.mp3</SourceFile>
<SourceTime>2022-07-02T16:15:02.5759174+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/ghostDeathSound.xnb</DestFile>
<DestTime>2022-07-02T16:18:38.8754877+03:00</DestTime>
<Importer>Mp3Importer</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>SoundEffectProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>Quality</Key>
<Value>Best</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/intermissionSound.wav</SourceFile>
<SourceTime>2004-04-03T11:27:18+04:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/intermissionSound.xnb</DestFile>
<DestTime>2022-07-02T15:18:56.4442102+03:00</DestTime>
<Importer>WavImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>SongProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>Quality</Key>
<Value>Best</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput>
<string>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/intermissionSound.wma</string>
</BuildOutput>
</PipelineBuildEvent>

View file

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/logo.png</SourceFile>
<SourceTime>2022-07-01T17:57:24.2958134+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/logo.xnb</DestFile>
<DestTime>2022-07-01T17:57:45.589837+03:00</DestTime>
<Importer>TextureImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>TextureProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>ColorKeyColor</Key>
<Value>255,0,255,255</Value>
</Parameters>
<Parameters>
<Key>ColorKeyEnabled</Key>
<Value>True</Value>
</Parameters>
<Parameters>
<Key>GenerateMipmaps</Key>
<Value>False</Value>
</Parameters>
<Parameters>
<Key>PremultiplyAlpha</Key>
<Value>True</Value>
</Parameters>
<Parameters>
<Key>ResizeToPowerOfTwo</Key>
<Value>False</Value>
</Parameters>
<Parameters>
<Key>MakeSquare</Key>
<Value>False</Value>
</Parameters>
<Parameters>
<Key>TextureFormat</Key>
<Value>Color</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/mainSong.wav</SourceFile>
<SourceTime>2004-04-03T11:26:48+04:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/mainSong.xnb</DestFile>
<DestTime>2022-07-02T00:26:20.0579639+03:00</DestTime>
<Importer>WavImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>SongProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>Quality</Key>
<Value>Best</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput>
<string>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/Content/mainSong.wma</string>
</BuildOutput>
</PipelineBuildEvent>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/chompSound.wav</SourceFile>
<SourceTime>2022-07-02T23:38:17.5676669+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/chompSound.xnb</DestFile>
<DestTime>2022-07-02T23:38:41.2925098+03:00</DestTime>
<Importer>WavImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>SoundEffectProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>Quality</Key>
<Value>Best</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/deathSound.wav</SourceFile>
<SourceTime>2004-04-03T11:29:18+04:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/deathSound.xnb</DestFile>
<DestTime>2022-07-02T23:38:41.9761102+03:00</DestTime>
<Importer>WavImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>SoundEffectProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>Quality</Key>
<Value>Best</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/fruitEaten.mp3</SourceFile>
<SourceTime>2022-07-02T16:22:50.1623369+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/fruitEaten.xnb</DestFile>
<DestTime>2022-07-02T23:38:42.903116+03:00</DestTime>
<Importer>Mp3Importer</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>SoundEffectProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>Quality</Key>
<Value>Best</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/gameFont.spritefont</SourceFile>
<SourceTime>2022-07-01T14:42:48.0529101+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/gameFont.xnb</DestFile>
<DestTime>2022-07-02T23:38:43.2601128+03:00</DestTime>
<Importer>FontDescriptionImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>FontDescriptionProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>PremultiplyAlpha</Key>
<Value>True</Value>
</Parameters>
<Parameters>
<Key>TextureFormat</Key>
<Value>Compressed</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/gameOverFont.spritefont</SourceFile>
<SourceTime>2022-07-02T14:55:47.6326791+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/gameOverFont.xnb</DestFile>
<DestTime>2022-07-02T23:38:43.3461128+03:00</DestTime>
<Importer>FontDescriptionImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>FontDescriptionProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>PremultiplyAlpha</Key>
<Value>True</Value>
</Parameters>
<Parameters>
<Key>TextureFormat</Key>
<Value>Compressed</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/ghostDeathSound.mp3</SourceFile>
<SourceTime>2022-07-02T16:15:02.5759174+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/ghostDeathSound.xnb</DestFile>
<DestTime>2022-07-02T23:38:44.1746886+03:00</DestTime>
<Importer>Mp3Importer</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>SoundEffectProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>Quality</Key>
<Value>Best</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/intermissionSound.wav</SourceFile>
<SourceTime>2004-04-03T11:27:18+04:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/intermissionSound.xnb</DestFile>
<DestTime>2022-07-02T23:38:44.8981732+03:00</DestTime>
<Importer>WavImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>SongProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>Quality</Key>
<Value>Best</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput>
<string>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/intermissionSound.wma</string>
</BuildOutput>
</PipelineBuildEvent>

View file

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/logo.png</SourceFile>
<SourceTime>2022-07-01T17:57:24.2958134+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/logo.xnb</DestFile>
<DestTime>2022-07-02T23:38:45.0901659+03:00</DestTime>
<Importer>TextureImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>TextureProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>ColorKeyColor</Key>
<Value>255,0,255,255</Value>
</Parameters>
<Parameters>
<Key>ColorKeyEnabled</Key>
<Value>True</Value>
</Parameters>
<Parameters>
<Key>GenerateMipmaps</Key>
<Value>False</Value>
</Parameters>
<Parameters>
<Key>PremultiplyAlpha</Key>
<Value>True</Value>
</Parameters>
<Parameters>
<Key>ResizeToPowerOfTwo</Key>
<Value>False</Value>
</Parameters>
<Parameters>
<Key>MakeSquare</Key>
<Value>False</Value>
</Parameters>
<Parameters>
<Key>TextureFormat</Key>
<Value>Color</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/mainSong.wav</SourceFile>
<SourceTime>2004-04-03T11:26:48+04:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/mainSong.xnb</DestFile>
<DestTime>2022-07-02T23:38:45.7231693+03:00</DestTime>
<Importer>WavImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>SongProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>Quality</Key>
<Value>Best</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput>
<string>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/mainSong.wma</string>
</BuildOutput>
</PipelineBuildEvent>

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/sprites.png</SourceFile>
<SourceTime>2022-06-29T15:40:31.6851922+03:00</SourceTime>
<SourceTime>2022-06-29T15:43:37.3648634+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/Pacman/Pacman/Content/bin/Windows/sprites.xnb</DestFile>
<DestTime>2022-06-29T15:40:36.0296157+03:00</DestTime>
<DestTime>2022-07-02T23:38:45.7951722+03:00</DestTime>
<Importer>TextureImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>TextureProcessor</Processor>

View file

@ -1,33 +1,84 @@
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using System.Collections.Generic;
using Pacman.Classes;
using Pacman.Classes.UI;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Audio;
using System.IO;
namespace Pacman
{
public enum GameState
{
Game, Menu, GameOver, NextLevel
}
public class Game1 : Game
{
public static GameState gameState = GameState.Menu;
public static Vector2 screenSize = new Vector2(672, 850);
public static Texture2D spriteSheet;
// Default fields
private GraphicsDeviceManager _graphics;
private SpriteBatch _spriteBatch;
public Map _map;
public int Level = 0;
public static Pacman pacman = new Pacman();
public static List<Food> Foods = new List<Food>();
public static List<Ghost> Ghosts = new List<Ghost>();
// UI fields
private Menu menu;
private HUD hud;
private GameOver gameOver;
// Music fields
public static SoundEffect deathSong;
public static SoundEffect chompSound;
public static SoundEffect ghostDiedSound;
public static SoundEffect fruitEatenSound;
public static Song mainSong;
public static Song intermissionSong;
public Game1()
{
_graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
IsMouseVisible = true;
_map = new Map();
}
protected override void Initialize()
{
// TODO: Add your initialization logic here
_graphics.PreferredBackBufferWidth = 668;
_graphics.PreferredBackBufferHeight = 744;
// Set window size
_graphics.PreferredBackBufferWidth = (int)screenSize.X;
_graphics.PreferredBackBufferHeight = (int)screenSize.Y;
_graphics.ApplyChanges();
// Initialize map and convert map for pathfinder
Map.LoadMap();
PathFinder.ConvertMap(Map.map);
// Add ghosts
Ghosts.Add(new Ghost("Blinky"));
Ghosts.Add(new Ghost("Pinky"));
Ghosts.Add(new Ghost("Inky"));
Ghosts.Add(new Ghost("Clyde"));
pacman.highScore = LoadHighScore();
// Initialize menu and HUD
menu = new Menu();
hud = new HUD(new Vector2(0, 740));
gameOver = new GameOver();
base.Initialize();
}
@ -35,32 +86,158 @@ namespace Pacman
{
_spriteBatch = new SpriteBatch(GraphicsDevice);
// TODO: use this.Content to load your game content here
Map.LoadContent(Content);
_map.LoadMap();
// Load sprites
spriteSheet = Content.Load<Texture2D>("sprites");
menu.LoadContent(Content);
Label.LoadContent(Content);
for (int i = 0; i < Foods.Count; i++)
{
Foods[i].LoadContent();
}
// Load music
mainSong = Content.Load<Song>("mainSong");
deathSong = Content.Load<SoundEffect>("deathSound");
chompSound = Content.Load<SoundEffect>("chompSound");
intermissionSong = Content.Load<Song>("intermissionSound");
ghostDiedSound = Content.Load<SoundEffect>("ghostDeathSound");
fruitEatenSound = Content.Load<SoundEffect>("fruitEaten");
MediaPlayer.IsRepeating = true;
MediaPlayer.MediaStateChanged += MediaPlayer_MediaStateChanged;
MediaPlayer.Play(mainSong);
}
private void MediaPlayer_MediaStateChanged(object sender, System.EventArgs e)
{
MediaPlayer.Volume = 40;
}
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
switch (gameState)
{
case GameState.Menu:
menu.Update();
break;
case GameState.Game:
UpdateGame();
break;
case GameState.GameOver:
gameOver.Update();
break;
}
base.Update(gameTime);
}
private void UpdateGame()
{
for (int i = 0; i < Foods.Count; i++)
{
Foods[i].Update();
}
for (int i = 0; i < Ghosts.Count; i++)
{
Ghosts[i].Update();
}
pacman.Update();
KeyboardState state = Keyboard.GetState();
if (state.IsKeyDown(Keys.Space))
{
int a = 0;
}
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
// TODO: Add your drawing code here
_spriteBatch.Begin();
_map.Draw(_spriteBatch);
GraphicsDevice.Clear(Color.Black);
_spriteBatch.Begin();
switch (gameState)
{
case GameState.Menu:
menu.Draw(_spriteBatch);
break;
case GameState.Game:
DrawGame();
break;
case GameState.GameOver:
gameOver.Draw(_spriteBatch);
break;
}
_spriteBatch.End();
base.Draw(gameTime);
}
private void DrawGame()
{
// Draw map and HUD
Map.Draw(_spriteBatch);
hud.Draw(_spriteBatch, pacman.Score, pacman.ExtraLives);
for (int i = 0; i < Foods.Count; i++)
{
Foods[i].Draw(_spriteBatch);
}
for (int i = 0; i < Ghosts.Count; i++)
{
Ghosts[i].Draw(_spriteBatch);
}
pacman.Draw(_spriteBatch);
}
public static void RestartGame(bool IsLevelComplete)
{
if (IsLevelComplete)
{
for (int i = 0; i < Foods.Count; i++)
{
if (Foods[i].FoodType != "Fruit")
{
Foods[i].isAlive = true;
}
else
{
Foods[i].Prize += 200;
}
}
pacman.PointsEaten = 0;
}
else
{
pacman.ExtraLives -= 1;
}
pacman.Position = new Vector2(324, 564);
for (int i = 0; i < Ghosts.Count; i++)
{
Ghosts[i].Position = Ghosts[i].StartPosition;
Ghosts[i].AfraidTime = 0;
Ghosts[i].IsAfraidEffectOn = false;
Ghosts[i].IsAlive = true;
Ghosts[i].Directions.Clear();
Ghosts[i].CurrentDirection = DirectionsEnum.Stop;
Ghosts[i].Speed = 1.5f;
}
}
public static void UpdateHighScore(int highScore)
{
File.WriteAllText("highScore.txt", highScore.ToString());
}
public static int LoadHighScore()
{
if (!File.Exists("highScore.txt"))
File.Create("highscore.txt").Dispose();
string data = File.ReadAllText("highScore.txt");
if (string.IsNullOrEmpty(data)) return 0;
return int.Parse(data);
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1 @@
4220

View file

@ -1,5 +1,5 @@
┏━━━━━━━━━━━━┓┏━━━━━━━━━━━━┓
┃........... ┃┃............┃
┃............┃┃............┃
┃.┏━━┓.┏━━━┓.┃┃.┏━━━┓.┏━━┓.┃
┃O┃ ┃.┃ ┃.┃┃.┃ ┃.┃ ┃O┃
┃.┗━━┛.┗━━━┛.┗┛.┗━━━┛.┗━━┛.┃
@ -10,9 +10,9 @@
┗━━━━┓.┃┗━━┓ ┃┃ ┏━━┛┃.┏━━━━┛
┃.┃┏━━┛ ┗┛ ┗━━┓┃.┃
┃.┃┃ ┃┃.┃
┃.┃┃ ┏━---━┓ ┃┃.┃
┃.┃┃ ┏━----━┓ ┃┃.┃
━━━━━┛.┗┛ ┃ ┃ ┗┛.┗━━━━━
. ┃ ┃ .
1 . ┃ ┃ . 2
━━━━━┓.┏┓ ┃ ┃ ┏┓.┏━━━━━
┃.┃┃ ┗━━━━━━┛ ┃┃.┃
┃.┃┃ ┃┃.┃
@ -28,4 +28,4 @@
┃.┏━━━━┛┗━━┓.┃┃.┏━━┛┗━━━━┓.┃
┃.┗━━━━━━━━┛.┗┛.┗━━━━━━━━┛.┃
┃..........................┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━
┗━━━━━━━━━━━━━━━━━━━━━━━━━━

View file

@ -1 +1 @@
9decbe0d7391156d6300689225fe8c5e76b65e5a
c9ee6a37358296c75d1682f0de32f3e0317744c8

View file

@ -41,3 +41,15 @@ C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\wall.xnb
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\graph.xnb
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\sprites.xnb
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\gameFont.xnb
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\logo.xnb
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\chompSound.xnb
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\deathSound.xnb
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\mainSong.wma
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\mainSong.xnb
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\gameOverFont.xnb
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\intermissionSound.wma
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\intermissionSound.xnb
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\ghostDeathSound.xnb
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\fruitEaten.xnb
C:\Users\Semejkin_AV\Documents\Github_repos\Pacman\Pacman\bin\Debug\netcoreapp3.1\Content\chompSound.wma

Some files were not shown because too many files have changed in this diff Show more