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;Food.cs
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();
}
}
}
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