Создание игры. С чего начать? - C#

Узнай цену своей работы

Формулировка задачи:

наверное щас глупый вопрос задам: можно по пунктам создание простейшей игры на gdi+ или каком нибудь движке (unity / xna и т.п.)? буквально подробно от составления плана до кода... просто программирую уже несколько лет, но до сих пор не могу написать даже простейшего тетриса, другие приложения пишу без проблем, но все что связано с графикой у меня вообще никак не выходит, каждый раз начинаю, напишу половину, где нибудь застопорюсь и бросаю а так хотелось бы...

Решение задачи: «Создание игры. С чего начать?»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
using System.IO;
using System.Drawing;
 
public enum DirectionOfSnake : int
{
    Up, Left, Down, Right
}
 
public static class Game
{
    public static int LevelOfSpeed { get; set; }
    public static SnakeCell SnakeCell { get; set; }
    public static DirectionOfSnake DirectionOfSnake { get; set; }
    private static List<SnakeCell> SnakeCells = new List<SnakeCell>();
 
    public static void MoveSnake(DirectionOfSnake d)
    {
        if (d == DirectionOfSnake.Reverse() || 
            !Enum.IsDefined(typeof(DirectionOfSnake), d))
            throw new ArgumentException("d");
 
        for (int i = 0; i < SnakeCells.Count - 1; i++)
            SnakeCells[i] = SnakeCells[i + 1];
 
        //SnakeCells[SnakeCells.Count - 1] = 
    }
 
    public static void DrawSnake(Graphics g)
    {
        foreach (var c in SnakeCells)
            c.Draw(g);
    }
 
    public static DirectionOfSnake Reverse(this DirectionOfSnake value)
    {
        switch (value)
        {
            case DirectionOfSnake.Up: return DirectionOfSnake.Down;
            case DirectionOfSnake.Left: return DirectionOfSnake.Right;
            case DirectionOfSnake.Down: return DirectionOfSnake.Up;
            case DirectionOfSnake.Right: return DirectionOfSnake.Left;
            default: throw new ArgumentException("value");
        }
    }
}
 
public class GameSettings
{
    public int NumberOfCellsInWidth { get; set; }
    public int NumberOfCellsInHeight { get; set; }
    public int CellSize { get; set; }
    public int[] LevelsOfSpeed { get; set; }
    public int NumberOfLives { get; set; }
 
    GameSettings() { }
 
    public static GameSettings Default
    {
        get
        {
            var settings = new GameSettings();
            settings.NumberOfCellsInWidth = 10;
            settings.NumberOfCellsInHeight = 20;
            settings.CellSize = 30;
            settings.LevelsOfSpeed = new int[10]
            {
                500, 475, 450, 425, 400, 375, 350, 325, 300, 275
            };
            settings.NumberOfLives = 3;
            return settings;
        }
    }
 
    public static GameSettings Load(string filename)
    {
        var serializer = new XmlSerializer(typeof(GameSettings));
        var stream = File.OpenRead(filename);
        return serializer.Deserialize(stream) as GameSettings;
    }
 
    public void Save(string filename)
    {
        var serializer = new XmlSerializer(typeof(GameSettings));
        var stream = File.OpenWrite(filename);
        serializer.Serialize(stream, this);
    }
}
 
public struct SnakeCell
{
    public int Size { get; set; }
    public Point Location { get; set; }
    public Color Color { get; set; }
 
    public void Draw(Graphics g)
    {
        var brush = new SolidBrush(Color);
        g.FillRectangle(brush, Location.X, Location.Y, Size, Size);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы