niedziela, 9 czerwca 2013

Snake v2 - obsługa plansz, szybkości top10 - Visual Studio C#

Snake v2 - level, bonus, top10, opcje

Rozbudowana wersja poprzedniego snejka o wiele dobrych rzeczy.

Możliwość tworzenia leveli , w aplikacji jest możliwość jedynie ich wczytywania - za pomocą edytora tekstowego - trzeba trochę użyć wyobraźni i matematyki - ale nie jest to trudne - na dole podam przykład.

Bonus pojawiający na określony czas - po zebraniu punktów pojawi się bonus zaznaczony na inny kolor niż zwykłe "jedzenie"

Top10 i zapisywanie wyników

Zmiana prędkości gry


Do przejrzenia i pobrania wszystkie pliki projektu - link

Tworzenie poziomów - generalnie chodzi o to aby ustawić współrzędne punktu A oraz szerokość i wysokość od tego punktu. Będzie malowany taki prostokąt.
Szerokość i wysokość planszy ustalona jest na sztywno w kodzie - trzeba brać to pod uwagę.


Przykładowy plik z levelami:
<level>
zwykły
<elements>
</elements>
<level>
nazwa level1
<elements>
0;0;300;10;
50;30;20;100;
80;80;30;20;
</elements>
<level>
nazwa level k2
<elements>
0;0;300;10;
50;30;20;100;
80;80;100;200;
</elements>
<level>
nazwa level k3
<elements>
0;0;300;10;
50;30;70;200;
80;80;100;20;
</elements>
<end>


A to kilka kawałków kodu dla niecierpliwych:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace SnakeGameII
{
    public class Snake
    {
        private Rectangle[] snakeRec;
        private SolidBrush brush;
        private int x, y, width, height;

        public Rectangle[] SnakeRec
        {
            get
            {
                return snakeRec;
            }
        }

        public Snake()
        {
            snakeRec = new Rectangle[3];
            brush = new SolidBrush(Color.Blue);

            x = 30;
            y = 60;
            width = 10;
            height = 10;

            for (int i = 0; i < snakeRec.Length; i++)
            {               
                snakeRec[i] = new Rectangle(x, y, width, height);
                x -= 10;
            }
        }

        public void drawSnake(Graphics paper)
        {
            foreach (Rectangle rec in snakeRec)
            {
                paper.FillRectangle(brush, rec);
            }
        }

        public void drawSnake()
        {
            for (int i = snakeRec.Length - 1; i > 0; i--)
            {
                snakeRec[i] = snakeRec[i - 1];
            }
        }
        public void moveDown()
        {
            drawSnake();
            snakeRec[0].Y += 10;
        }
        public void moveUp()
        {
            drawSnake();
            snakeRec[0].Y -= 10;
        }
        public void moveRight()
        {
            drawSnake();
            snakeRec[0].X += 10;
        }
        public void moveLeft()
        {
            drawSnake();
            snakeRec[0].X -= 10;
        }

        public void growSnake()
        {
            List<Rectangle> rec = snakeRec.ToList();
            rec.Add(new Rectangle(snakeRec[snakeRec.Length-1].X, snakeRec[snakeRec.Length-1].Y,width,height));
            snakeRec = rec.ToArray();
        }
    }
}

Food.cs

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace SnakeGameII
{
    public class Food
    {
        private int x, y, width, height;
        private SolidBrush brush;
        public Rectangle foodRec;
        public Rectangle specialfoodRec;
        private SolidBrush specialbrush;

        public Food(Random randFood)
        {
            x = randFood.Next(1, 30) * 10;
            y = randFood.Next(5, 34) * 10;
            brush = new SolidBrush(Color.Black);

            width = 10;
            height = 10;

            foodRec = new Rectangle(x, y, width, height);
        }

        public Food(Random randFood, Color color)
        {
          
            x = randFood.Next(1, 30) * 10;
            y = randFood.Next(5, 34) * 10;
            specialbrush = new SolidBrush(color);

            width = 10;
            height = 10;

            specialfoodRec = new Rectangle(x, y, width, height);
        
        }

        public void foodLocation(Random randFood)
        {
            x = randFood.Next(1, 30) * 10;
            y = randFood.Next(5, 34) * 10;
        }

        public void drawFood(Graphics paper)
        {
            foodRec.X = x;
            foodRec.Y = y;

            paper.FillRectangle(brush, foodRec);
        }

         public void drawSpecialFood(Graphics paper)
        {
            specialfoodRec.X = x;
            specialfoodRec.Y = y;

            paper.FillRectangle(specialbrush, specialfoodRec );
        }

    }
}

Brak komentarzy:

Prześlij komentarz