コード例 #1
0
        private Sprite GetNumberSprite(int number)
        {
            if (number <= 0 || number > 9)
            {
                return(scoresheet.GetAt(0, 0));
            }

            int x = number % 5;
            int y = number > 4 ? 1 : 0;

            return(scoresheet.GetAt(x, y));
        }
コード例 #2
0
ファイル: Level.cs プロジェクト: Ploxie/Pacman
        public void CalculateSprites()
        {
            for (int y = 0; y < height; y++)
            {
                for (int x = 0; x < width; x++)
                {
                    bool leftBlocked   = true;
                    bool rightBlocked  = true;
                    bool topBlocked    = true;
                    bool bottomBlocked = true;

                    if (!tileMap[x, y].Blocked)
                    {
                        tileMap[x, y].Sprite = Tile.NULL_SPRITE;
                        continue;
                    }

                    if (x - 1 >= 0 && tileMap[x - 1, y].Blocked)
                    {
                        leftBlocked = false;
                    }

                    if (x + 1 < width && tileMap[x + 1, y].Blocked)
                    {
                        rightBlocked = false;
                    }

                    if (y - 1 >= 0 && tileMap[x, y - 1].Blocked)
                    {
                        topBlocked = false;
                    }

                    if (y + 1 < height && tileMap[x, y + 1].Blocked)
                    {
                        bottomBlocked = false;
                    }

                    int xBlock = 0;
                    xBlock += !rightBlocked ? 1 : 0;
                    xBlock += !topBlocked ? 2 : 0;

                    int yBlock = 0;
                    yBlock += !leftBlocked ? 1 : 0;
                    yBlock += !bottomBlocked ? 2 : 0;

                    tileMap[x, y].Sprite = tileSheet.GetAt(xBlock, yBlock);
                }
            }
        }
コード例 #3
0
ファイル: Level.cs プロジェクト: Ploxie/Pacman
        public static Level LoadLevel(SpriteSheet spritesheet, SpriteSheet sprites, string filePath)
        {
            StreamReader reader   = new StreamReader(filePath);
            int          x        = 0;
            int          y        = 0;
            int          width    = int.Parse(reader.ReadLine());
            int          height   = int.Parse(reader.ReadLine());
            int          tileSize = int.Parse(reader.ReadLine());

            Level level = new Level(spritesheet, width, height, tileSize, filePath);

            level.tileMap = new Tile[width, height];

            string currentLine;

            while ((currentLine = reader.ReadLine()) != null && y < height)
            {
                x = 0;
                foreach (char c in currentLine)
                {
                    int  value        = int.Parse(c.ToString());
                    bool blocked      = value == 1;
                    bool food         = value == 2;
                    bool bigFood      = value == 3;
                    bool powerupGhost = value == 4;
                    bool powerupWall  = value == 5;
                    bool pacspawn     = value == 6;
                    bool ghostspawn   = value == 7;

                    Powerup powerup = null;
                    level.tileMap[x, y]         = new Tile(blocked, null, new Vector2(x, y) * tileSize, tileSize);
                    powerup                     = food ? new Powerup(PowerUpType.Food, sprites.GetAt(3, 0), 50) : powerup;
                    powerup                     = bigFood ? new Powerup(PowerUpType.BigFood, sprites.GetAt(4, 0), 100) : powerup;
                    powerup                     = powerupGhost ? new Powerup(PowerUpType.GhostEater, sprites.GetAt(0, 6), 500) : powerup;
                    powerup                     = powerupWall ? new Powerup(PowerUpType.WallEater, sprites.GetAt(1, 6), 500) : powerup;
                    level.tileMap[x, y].Powerup = powerup;

                    level.PacmanSpawn = pacspawn ? level.tileMap[x, y] : level.PacmanSpawn;
                    if (ghostspawn)
                    {
                        level.GhostSpawns.Add(level.tileMap[x, y]);
                    }
                    x++;
                }
                y++;
            }
            reader.Close();

            level.CalculateSprites();

            return(level);
        }
コード例 #4
0
ファイル: Game1.cs プロジェクト: Ploxie/Pacman
        protected override void LoadContent()
        {
            int hudTop = 70;
            int hudBot = 70;

            graphics.PreferredBackBufferWidth  = 768;
            graphics.PreferredBackBufferHeight = 768 + hudTop + hudBot;
            graphics.ApplyChanges();

            spriteBatch = new SpriteBatch(GraphicsDevice);

            spritesheetTexture      = Content.Load <Texture2D>("SpriteSheet");
            tilesetTexture          = Content.Load <Texture2D>("Tileset");
            pacmanBackgroundTexture = Content.Load <Texture2D>("pacmanBackground");
            pacmanLoseScreen        = Content.Load <Texture2D>("LoseScreen");
            pacmanWinScreen         = Content.Load <Texture2D>("WinScreen");
            Texture2D scoreTexture = Content.Load <Texture2D>("score-numbers");

            menuFont = Content.Load <SpriteFont>("menuFont");

            Tile.NULL_SPRITE = new SpriteSheet(CreateFilledTexture(32, 32, new Color(0, 0, 64, 128))).Sprite;

            this.spritesheet = new SpriteSheet(spritesheetTexture, Vector2.Zero, new Vector2(135, 112), new Vector2(16, 16));
            this.tilesheet   = new SpriteSheet(tilesetTexture, Vector2.Zero, new Vector2(128, 128), new Vector2(32, 32), 1);

            this.levelPaths = new List <string>()
            {
                "Content\\Level1.txt",
                "Content\\Level2.txt",
                "Content\\Level3.txt",
                "Content\\Level4.txt",
                "Content\\Level5.txt"
            };

            this.currentLevelPath = this.levelPaths[0];

            Level level = Level.LoadLevel(tilesheet, spritesheet, currentLevelPath);

            highscores = new List <int>();
            int    highscore  = LoadHighscore();
            Sprite lifeSprite = spritesheet.GetAt(1, 0);

            hud = new HUD(Window, hudTop, hudBot, scoreTexture, lifeSprite, highscore);

            game = new InGameState(Window, hud, spritesheet);
            game.SetLevel(level);

            editor = new Editor(Window);
            editor.SetLevel(level);
            editor.GridTexture            = CreateRectangleTexture(32, 32, new Color(128, 128, 128, 128));
            editor.HighlightTexture       = CreateFilledTexture(32, 32, new Color(128, 128, 128, 128));
            editor.FoodSprite             = spritesheet.GetAt(3, 0);
            editor.BigFoodSprite          = spritesheet.GetAt(4, 0);
            editor.PowerupGhostSprite     = spritesheet.GetAt(0, 6);
            editor.PowerupWallEaterSprite = spritesheet.GetAt(1, 6);
            editor.PacmanSpawnSprite      = spritesheet.GetAt(1, 0);
            editor.GhostSpawnSprite       = spritesheet.GetAt(0, 1);

            menu            = new MenuGameState(hud, pacmanBackgroundTexture, pacmanWinScreen, pacmanLoseScreen, menuFont, Window);
            menu.Highscores = highscores;

            gameState = menu;
        }