Commits

Anonymous committed 7432eff

First commit

  • Participants

Comments (0)

Files changed (13)

+syntax: glob
+*/obj/*
+*/bin/*
+tools/*
+*.user
+*.suo
+*/_ReSharper*/
+src/packages/*
+*.docstates
+build/*
+StyleCop.Cache
+*.vs10x
+*.orig
+*.dotCover
+*.csproj.Debug.cachefile

AStar_complete.sln

+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AStar_complete", "AStar_complete\AStar_complete\AStar_complete.csproj", "{92F7E9CB-7B6B-4BAB-9E69-F5E2DB0E246E}"
+EndProject
+Project("{96E2B04D-8817-42C6-938A-82C39BA4D311}") = "AStar_completeContent", "AStar_complete\AStar_completeContent\AStar_completeContent.contentproj", "{D5CD8357-4C1B-4464-A0A5-4F24B5976CE9}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x86 = Debug|x86
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{92F7E9CB-7B6B-4BAB-9E69-F5E2DB0E246E}.Debug|x86.ActiveCfg = Debug|x86
+		{92F7E9CB-7B6B-4BAB-9E69-F5E2DB0E246E}.Debug|x86.Build.0 = Debug|x86
+		{92F7E9CB-7B6B-4BAB-9E69-F5E2DB0E246E}.Release|x86.ActiveCfg = Release|x86
+		{92F7E9CB-7B6B-4BAB-9E69-F5E2DB0E246E}.Release|x86.Build.0 = Release|x86
+		{D5CD8357-4C1B-4464-A0A5-4F24B5976CE9}.Debug|x86.ActiveCfg = Debug|x86
+		{D5CD8357-4C1B-4464-A0A5-4F24B5976CE9}.Release|x86.ActiveCfg = Release|x86
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

AStar_complete/AStar_complete/AStar.cs

+using System.Collections.Generic;
+using System.Linq;
+
+namespace AStarPathFinding
+{
+	public class AStar
+	{
+		private readonly Map _map;
+
+		private readonly List<Node> _openList = new List<Node>();
+		private readonly List<Node> _closedList = new List<Node>();
+		private Node _currentNode;
+
+		public AStar(Map map)
+		{
+			_map = map;
+		}
+
+		public void CalculatePath()
+		{
+			var targetReached = false;
+			var firstNode = new Node(_map.StartCell, null);
+			_openList.Add(firstNode);
+			_currentNode = firstNode;
+			
+			while(true)
+			{
+				if (_currentNode.CellIndex == _map.TargetCell)
+				{
+					targetReached = true;
+					break;
+				}
+
+				AddAdjacentCellToOpenList(_currentNode, -1, -1, 14);
+				AddAdjacentCellToOpenList(_currentNode, 0, -1, 10);
+				AddAdjacentCellToOpenList(_currentNode, 1, -1, 14);
+				AddAdjacentCellToOpenList(_currentNode, -1, 0, 10);
+				AddAdjacentCellToOpenList(_currentNode, 1, 0, 10);
+				AddAdjacentCellToOpenList(_currentNode, -1, 1, 14);
+				AddAdjacentCellToOpenList(_currentNode, 0, 1, 10);
+				AddAdjacentCellToOpenList(_currentNode, 1, 1, 14);
+
+				_openList.Remove(_currentNode);
+				_closedList.Add(_currentNode);
+
+				var tempSmallest = FindSmallestF();
+				if(tempSmallest == null || tempSmallest.CellIndex == _currentNode.CellIndex)
+				{
+					break;
+				}
+
+				_currentNode = tempSmallest;
+
+				_openList.Remove(_currentNode);
+				_closedList.Add(_currentNode);
+			}
+
+			_map.HighlightPath(_currentNode);
+		}
+
+		private Node FindSmallestF()
+		{
+			var smallestF = int.MaxValue;
+			Node selectedNode = null;
+
+			foreach (var node in _openList)
+			{
+				if (node.F < smallestF)
+				{
+					selectedNode = node;
+					smallestF = node.F;
+				}
+			}
+
+			return selectedNode;
+		}
+
+		private void AddAdjacentCellToOpenList(Node parentNode, int columnOffset, int rowOffset, int gCost)
+		{
+			var adjacentCellIndex = _map.GetAdjacentCellIndex(parentNode.CellIndex, columnOffset, rowOffset);
+			
+			// ignore unwalkable nodes (or nodes outside the grid)
+			if (adjacentCellIndex == -1)
+				return;
+
+			// ignore nodes on the closed list
+			if (_closedList.Any(n => n.CellIndex == adjacentCellIndex))
+				return;
+
+			var adjacentNode = _openList.SingleOrDefault(n => n.CellIndex == adjacentCellIndex);
+			if (adjacentNode != null)
+			{
+				if(parentNode.G + gCost < adjacentNode.G)
+				{
+					adjacentNode.Parent = parentNode;
+					adjacentNode.G = parentNode.G + gCost;
+					adjacentNode.F = adjacentNode.G + adjacentNode.H;
+				}
+
+				return;
+			}
+
+			var node = new Node(adjacentCellIndex, parentNode) { G = gCost, H = _map.GetDistance(adjacentCellIndex, _map.TargetCell) };
+			node.F = node.G + node.H;
+			_openList.Add(node);
+		}
+	}
+}

AStar_complete/AStar_complete/AStarGame.cs

+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+
+namespace AStarPathFinding
+{
+	public class AStarGame : Game
+	{
+		private GraphicsDeviceManager _graphics;
+		private SpriteBatch _spriteBatch;
+		private Map _map;
+		private AStar _aStar;
+		private KeyboardState _previousKeyboardState;
+
+		public AStarGame()
+		{
+			_graphics = new GraphicsDeviceManager(this);
+			Content.RootDirectory = "Content";
+			IsMouseVisible = true;
+		}
+
+		protected override void Initialize()
+		{
+			_spriteBatch = new SpriteBatch(GraphicsDevice);
+			Services.AddService(typeof(SpriteBatch), _spriteBatch);
+			
+			_map = new Map(20, 20, 20, this);
+			_aStar = new AStar(_map);
+
+			Components.Add(_map);
+			
+			base.Initialize();
+		}
+
+		protected override void Update(GameTime gameTime)
+		{
+			if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
+				Exit();
+
+			var keyboardState = Keyboard.GetState();
+
+			if(keyboardState.IsKeyDown(Keys.P) && _previousKeyboardState.IsKeyDown(Keys.P) == false)
+			{
+				_aStar.CalculatePath();
+			}
+
+			if (keyboardState.IsKeyDown(Keys.R) && _previousKeyboardState.IsKeyDown(Keys.R) == false)
+			{
+				_map.Reset();
+				_aStar = new AStar(_map);
+			}
+
+			_previousKeyboardState = keyboardState;
+
+			base.Update(gameTime);
+		}
+
+		protected override void Draw(GameTime gameTime)
+		{
+			GraphicsDevice.Clear(Color.Black);
+			_spriteBatch.Begin();
+			base.Draw(gameTime);
+			_spriteBatch.End();
+		}
+	}
+}

AStar_complete/AStar_complete/AStar_complete.csproj

+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectGuid>{92F7E9CB-7B6B-4BAB-9E69-F5E2DB0E246E}</ProjectGuid>
+    <ProjectTypeGuids>{6D335F3A-9D43-41b4-9D22-F6F17C4BE596};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>AStar_complete</RootNamespace>
+    <AssemblyName>AStar_complete</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
+    <XnaFrameworkVersion>v4.0</XnaFrameworkVersion>
+    <XnaPlatform>Windows</XnaPlatform>
+    <XnaProfile>HiDef</XnaProfile>
+    <XnaCrossPlatformGroupID>62e2c90f-a367-4ae0-bcb6-17d7bdf73a23</XnaCrossPlatformGroupID>
+    <XnaOutputType>Game</XnaOutputType>
+    <ApplicationIcon>Game.ico</ApplicationIcon>
+    <Thumbnail>GameThumbnail.png</Thumbnail>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\x86\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;WINDOWS</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoStdLib>true</NoStdLib>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <PlatformTarget>x86</PlatformTarget>
+    <XnaCompressContent>false</XnaCompressContent>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\x86\Release</OutputPath>
+    <DefineConstants>TRACE;WINDOWS</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoStdLib>true</NoStdLib>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <PlatformTarget>x86</PlatformTarget>
+    <XnaCompressContent>true</XnaCompressContent>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Graphics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.GamerServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Xact, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Video, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Avatar, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Storage, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="mscorlib">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System.Core">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System.Net">
+      <Private>False</Private>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="AStar.cs" />
+    <Compile Include="Cell.cs" />
+    <Compile Include="Map.cs" />
+    <Compile Include="Node.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Program.cs" />
+    <Compile Include="AStarGame.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Game.ico" />
+    <Content Include="GameThumbnail.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\AStar_completeContent\AStar_completeContent.contentproj">
+      <Name>AStar_completeContent</Name>
+      <XnaReferenceType>Content</XnaReferenceType>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client">
+      <Visible>False</Visible>
+      <ProductName>Microsoft .NET Framework 4 Client Profile %28x86 and x64%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Xna.Framework.4.0">
+      <Visible>False</Visible>
+      <ProductName>Microsoft XNA Framework Redistributable 4.0</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\Microsoft.Xna.GameStudio.targets" />
+  <!--
+      To modify your build process, add your task inside one of the targets below and uncomment it. 
+      Other similar extension points exist, see Microsoft.Common.targets.
+      <Target Name="BeforeBuild">
+      </Target>
+      <Target Name="AfterBuild">
+      </Target>
+    -->
+</Project>

AStar_complete/AStar_complete/Cell.cs

+namespace AStarPathFinding
+{
+	public class Cell
+	{
+		public bool Walkable;
+		public int[] NeighbourCellIds;
+		public int NumNeighbours;
+	}
+}

AStar_complete/AStar_complete/Game.ico

Binary file added.

AStar_complete/AStar_complete/GameThumbnail.png

Added
New image

AStar_complete/AStar_complete/Map.cs

+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+
+namespace AStarPathFinding
+{
+	public class Map : DrawableGameComponent
+	{
+		private readonly int _columnCount;
+		private readonly int _rowCount;
+		private readonly int _cellSize;
+
+		private Texture2D _texture;
+		private List<int> _path = new List<int>();
+		private bool[] _cells;
+		
+		private SpriteBatch _spriteBatch;
+		private bool _draggingStartCell;
+		private bool _draggingTargetCell;
+		private Color _gridLineColor = new Color(30, 30, 30);
+
+		public Map(int rowCount, int columnCount, int cellSize, Game game) : base(game)
+		{
+			_rowCount = rowCount;
+			_columnCount = columnCount;
+			_cellSize = cellSize;
+
+			_cells = new bool[_columnCount * _rowCount];
+		}
+
+
+		public int StartCell { get; private set; }
+		public int TargetCell { get; private set; }
+
+
+		public override void Initialize()
+		{
+			base.Initialize();
+
+			_spriteBatch = Game.Services.GetService(typeof (SpriteBatch)) as SpriteBatch;
+			StartCell = 0;
+			TargetCell = (_rowCount * _columnCount) - 1;
+
+			for (var i = 0; i < _columnCount * _rowCount; i++)
+			{
+				_cells[i] = true;
+			}
+
+			_texture = new Texture2D(Game.GraphicsDevice, 1, 1);
+			_texture.SetData(new[] { Color.White });
+		}
+
+		public override void Update(GameTime gameTime)
+		{
+			base.Update(gameTime);
+
+			var mouseState = Mouse.GetState();
+			if (mouseState.LeftButton != ButtonState.Pressed)
+			{
+				_draggingStartCell = false;
+				_draggingTargetCell = false;
+				return;
+			}
+
+			if (IsMouseOverGrid(mouseState) == false)
+				return;
+
+			var index = (mouseState.X /_cellSize) + (mouseState.Y /_cellSize) *_columnCount;
+
+			if(index == StartCell)
+			{
+				_draggingStartCell = true;
+			}
+			else if(index == TargetCell)
+			{
+				_draggingTargetCell = true;
+			}
+
+			if (_draggingStartCell)
+			{
+				StartCell = index;
+				return;
+			}
+			
+			if (_draggingTargetCell)
+			{
+				TargetCell = index;
+				return;
+			}
+
+			_cells[index] = false;
+		}
+
+		private bool IsMouseOverGrid(MouseState mouseState)
+		{
+			return mouseState.X > 0 && mouseState.X < _columnCount * _cellSize &&
+			       mouseState.Y > 0 && mouseState.Y < _rowCount * _cellSize;
+		}
+
+		public override void Draw(GameTime gameTime)
+		{
+			base.Draw(gameTime);
+
+			DrawGridLines();
+			DrawCells();
+		}
+
+		private void DrawGridLines()
+		{
+			for (int i = 0; i <= _columnCount; i++)
+			{
+				var linepositionRectangle = new Rectangle(i*_cellSize, 0, 1, _cellSize* _rowCount);
+				_spriteBatch.Draw(_texture, linepositionRectangle, _gridLineColor);
+			}
+			
+			for (int i = 0; i <= _rowCount; i++)
+			{
+				var linepositionRectangle = new Rectangle(0, i * _cellSize, _cellSize * _rowCount, 1);
+				_spriteBatch.Draw(_texture, linepositionRectangle, _gridLineColor);
+			}
+		}
+
+		private void DrawCells()
+		{
+			for (var i = 0; i < _columnCount; i++)
+			{
+				for (var j = 0; j < _rowCount; j++)
+				{
+					var cellIndex = (i*_columnCount) + j;
+					if (_path.Contains(cellIndex))
+						_spriteBatch.Draw(_texture, new Rectangle(j * _cellSize + 1, i * _cellSize + 1, _cellSize - 1, _cellSize - 1),
+						                  Color.Blue);
+
+					if(cellIndex == StartCell)
+						_spriteBatch.Draw(_texture, new Rectangle(j * _cellSize + 1, i * _cellSize + 1, _cellSize - 1, _cellSize - 1),
+										  Color.Green);
+
+					if(cellIndex == TargetCell)
+						_spriteBatch.Draw(_texture, new Rectangle(j * _cellSize + 1, i * _cellSize + 1, _cellSize - 1, _cellSize - 1),
+										  Color.Red);
+
+					if (_cells[cellIndex])
+						continue;
+
+					_spriteBatch.Draw(_texture, new Rectangle(j * _cellSize + 1, i * _cellSize + 1, _cellSize - 1, _cellSize - 1),
+					                  Color.White);
+				}
+			}
+		}
+
+		public int GetAdjacentCellIndex(int cellIndex, int columnOffset, int rowOffset)
+		{
+			var x = cellIndex % _columnCount;
+			var y = cellIndex / _columnCount;
+
+			if ((x + columnOffset < 0 || x + columnOffset > _columnCount - 1) ||
+				(y + rowOffset < 0 || y + rowOffset > _rowCount - 1))
+				return -1;
+
+			if (_cells[((y + rowOffset) * _columnCount) + (x + columnOffset)] == false)
+				return -1;
+			
+			return cellIndex + columnOffset + (rowOffset * _columnCount);
+		}
+
+		public int GetDistance(int startCell, int endCell)
+		{
+			var startX = startCell % _columnCount;
+			var startY = startCell / _columnCount;
+
+			var endX = endCell % _columnCount;
+			var endY = endCell / _columnCount;
+
+			return Math.Abs(startX - endX) + Math.Abs(startY - endY);
+		}
+
+		public void HighlightPath(Node node)
+		{
+			var currentNode = node;
+			while(currentNode != null)
+			{
+				_path.Add(currentNode.CellIndex);
+				currentNode = currentNode.Parent;
+			}
+		}
+
+		public void Reset()
+		{
+			_path.Clear();
+
+			for (var i = 0; i < _columnCount * _rowCount; i++)
+			{
+				_cells[i] = true;
+			}
+		}
+	}
+}

AStar_complete/AStar_complete/Node.cs

+namespace AStarPathFinding
+{
+	public class Node
+	{
+		public Node(int cellIndex, Node parent)
+		{
+			CellIndex = cellIndex;
+			Parent = parent;
+		}
+
+		public int F { get; set; }
+		public int G { get; set; }
+		public int H { get; set; }
+		public Node Parent { get; set; }
+		public int CellIndex { get; set; }
+	}
+}

AStar_complete/AStar_complete/Program.cs

+using System;
+
+namespace AStarPathFinding
+{
+#if WINDOWS || XBOX
+    static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        static void Main(string[] args)
+        {
+            using (AStarGame game = new AStarGame())
+            {
+                game.Run();
+            }
+        }
+    }
+#endif
+}
+

AStar_complete/AStar_complete/Properties/AssemblyInfo.cs

+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("AStar_complete")]
+[assembly: AssemblyProduct("AStar_complete")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type. Only Windows
+// assemblies support COM.
+[assembly: ComVisible(false)]
+
+// On Windows, the following GUID is for the ID of the typelib if this
+// project is exposed to COM. On other platforms, it unique identifies the
+// title storage container when deploying this assembly to the device.
+[assembly: Guid("8aa1ba3e-6d9c-488f-80e6-0ccd381d5792")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]

AStar_complete/AStar_completeContent/AStar_completeContent.contentproj

+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectGuid>{D5CD8357-4C1B-4464-A0A5-4F24B5976CE9}</ProjectGuid>
+    <ProjectTypeGuids>{96E2B04D-8817-42c6-938A-82C39BA4D311};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <XnaFrameworkVersion>v4.0</XnaFrameworkVersion>
+    <OutputPath>bin\$(Platform)\$(Configuration)</OutputPath>
+    <ContentRootDirectory>Content</ContentRootDirectory>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup>
+    <RootNamespace>AStar_completeContent</RootNamespace>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.EffectImporter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.FBXImporter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.TextureImporter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.XImporter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.AudioImporters, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.VideoImporters, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+  </ItemGroup>
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" />
+  <!--  To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>