@ase2015

Как сделать рейтинг в игре?

Есть игра "Найди элементы на картинке" есть две разных картинки,где нужно искать элементы.

Получается что нужно как то сделать рейтинг,но у меня не получается

Суть такова: у меня не получается посчитать их время прохождения (у таймера обратный отсчет,т.е. с 3-х минут). И тут есть проблемы. Нужно как то посчитать за какое время они нашли все предметы и нужно запоминать каждую игру! (чтобы потом в дальнейшем выводить результат каждой игры)

Вот код всего процесса:
public Form3()
    {
        InitializeComponent();
        objects = new List<MapObject>();

        objects.Add(new MapObject()
        {
            Name = "Парусник",
            X = 180,
            Y = 34,
            Width = 27,
            Height = 37
        });

        objects.Add(new MapObject()
        {
            Name = "Пароход",
            X = 304,
            Y = 20,
            Width = 49,
            Height = 19
        });

        objects.Add(new MapObject()
        {
            Name = "Кактус",
            X = 369,
            Y = 127,
            Width = 11,
            Height = 20
        });

        objects.Add(new MapObject()
        {
            Name = "Лошадь",
            X = 336,
            Y = 80,
            Width = 18,
            Height = 18
        });

        objects.Add(new MapObject()
        {
            Name = "Дирижер",
            X = 228,
            Y = 156,
            Width = 17,
            Height = 19
        });

        objects.Add(new MapObject()
        {
            Name = "Мяч",
            X = 213,
            Y = 261,
            Width = 20,
            Height = 20
        });

    }

List<MapObject> objects;
private void Timer1_Tick(object sender, EventArgs e)
    {
        tk = --i;
        TimeSpan span = TimeSpan.FromSeconds(tk);
        string label = span.ToString(@"mm\:ss");
        label1.Text = label.ToString();
        if (i <= 0)
        {
            label9.Visible = true;
            label1.Visible = false;
            timer1.Stop();
            pictureBox1.Visible = false;
            pictureBox2.Visible = true;

        }


    }
int i;
int tk;
string c;
private void Button2_Click(object sender, EventArgs e)
    {
        button2.Visible = false;
        pictureBox1.Visible = true;
        i = 180;
        c = "3:00";

        label1.Text = c;
        timer1.Interval = 1000;
        timer1.Enabled = true;
        timer1.Start();
    }
private void PictureBox1_MouseClick(object sender, MouseEventArgs e)
    {
        int currentX = e.X;
        int currentY = e.Y;
        bool FindSome = false;
        for (int i = 0; i < objects.Count; i++)
        {
            if (currentX > (objects[i].X - objects[i].Width / 2) & currentX < (objects[i].X + objects[i].Width / 2)
            & currentY > (objects[i].Y - objects[i].Height / 2) & currentY < (objects[i].Y + objects[i].Height / 2))
            {
                MessageBox.Show("Вы нашли слово : " + objects[i].Name);
                objects[i].IsClicked = true;
                FindSome = true;
            }


        }

        if (!FindSome) TimeDec();



        if (IsAllClicked())
        {
            label8.Visible = true;
            label1.Visible = false;
            timer1.Stop();
            pictureBox1.Visible = false;
            pictureBox2.Visible = false;
        }
    }

private void TimeDec()
    {
        MessageBox.Show("Никуда не попали");

        i -= 5;

    }

private bool IsAllClicked()
    {
        bool AllObjectsClicked = true;
        foreach (MapObject item in objects)
        {
            if (!item.IsClicked)
            {
                AllObjectsClicked = false; break;
            }
        }
        return AllObjectsClicked;
    }

вот код из класса(mapobject):
class MapObject
{
    public string Name;

    public int X;
    public int Y;

    public int Width;
    public int Height;
    public bool IsClicked = false;
}
  • Вопрос задан
  • 252 просмотра
Пригласить эксперта
Ответы на вопрос 1
Возможно поможет такая конструкция:

//При старте задания
var stopWatch = new Stopwatch();
stopWatch.Start();

// do stuff

//При окончании задания
stopWatch.Stop();
var elapsed = stopWatch.Elapsed;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы