lse MenuGame () ;//Повернення в головне меню, якщо на позиції "Ні"
}
}
}
}
void Menu :: Score (void)// Таблиця результатів
{x0 = 400, y0 = 300, i = 0, flag = 0, j = 1; * fin; number [3]; (); (DEFAULT_FONT, HORIZ_DIR, 16); p>
// Висновок пунктів
outtextxy (x0, y0 +40, "Друк результатів");
outtextxy (x0, y0 +60, "Вийти в головне меню");
// Побудова таблиці
setcolor (WHITE);
outtextxy (x0-295, y0-225, "№");
outtextxy (x0-270, y0-225, "Ім'я");
outtextxy (x0-95, y0-225, "Окуляри");
{line (x0-300, i, x0-50, i); (number, "% d", j); (x0-295, i +5, number); p>
}
// Сам висновок результатів
fin = fopen ("score.dat", "rb");
if (fin)
{(i = y0-200; fread (& ns, sizeof (ns), 1, fin); i + = 30)
{sprintf (number, "% d", ns.score); (x0-270, i +5, ns.name); (x0-95, i +5, number);
} (fin);
}
// Навігація по менюkey, pos = 3, flagexit = 1; (RED); (x0-10, y0 +10 + (pos-1) * 20,4); (flag! = 1)
{key = getch (); (key)
{case 38: {if (pos> 2) {setcolor (BLACK); (x0-10, y0 +10 + (pos-1) * 20,4); -; (RED) ; (x0-10, y0 +10 + (pos-1) * 20,4);
};
} 40: {if (pos <4) {setcolor (BLACK); (x0-10, y0 +10 + (pos-1) * 20,4); + +; (RED) ; (x0-10, y0 +10 + (pos-1) * 20,4);
};
} (27): {MenuGame ();} (13): {(pos == 4) {MenuGame (); break;}// Вийти в головне меню (pos == 3) {PrintScore (); break;}// Друк результатів (pos == 2) {remove ("score.dat");// Очищення результатів ();;
}
}
}
}
} Menu :: About (void)// Меню "Про гру"
{x0 = 300, y0 = 220, key = 0; * d; (); (DEFAULT_FONT, HORIZ_DIR,
outtextxy (250,170, "Правила гри");
outtextxy (250,330, "Приємної гри :)"); (BROWN); (60,80, "<- Пастка вліво.");
outtextxy (60,100, "-> - Пастка вправо.");
outtextxy (60,120, "Esc - Пауза, вихід в меню.");
setcolor (3);
outtextxy (60,200, "З верхньої частини екрану падають кулі. Керуючи пасткою, гравець");
outtextxy (60,220, "повинен зібрати якомога більше куль за одну хвилину. З плином");
outtextxy (60,240, "часу, кожні 15 секунд, щільність падіння куль зменшується,");
outtextxy (60,260, "а швидкість збільшується. Якщо гравець ловить 'Хороший кулька', то");
outtextxy (60,280, "додається одне очко, якщо ж 'Поганий кулька', то одне очко");
outtextxy (60,300, "віднімається.");
d = new NormalBall; d-> show (550,92); outtextxy (300,80, "Хороший кульку, +1 очко");
d = new BadBall; d-> show (550,112); outtextxy (300,100, "Поганий кульку, -1 очко"); = new Catch; d-> show (550,132); outtextxy (300,120, " ; Пастка "); (325,450," Натисніть Esc для виходу в головне меню ");
while (key == 0)
{key = getch ();
} d; ();
} Menu :: AddScore (void)// Запис результатів
{FILE * fin; nss [10]; i, j = 0, n = 0; temp [16]; = fopen ("score.dat", "rb"); (fread (& nss [n], sizeof (ns), 1, fin) && n <= 10)// Прочитуємо дані і вважаємо кількість вже записаних
{n + +;}
fclose (fin);
for (i = 0; i <= n-1 && (ns.score <= nss [i]. score); i + +) j + + ;//Знаходимо позицію, куди вписати наш результат
for (i = n; i> = j +1; i -)
{
}
// Запис результату в масив
nss [j]. score = ns.score;
sprintf (temp, "% s", ns.name); (nss [j]. name, "% s", temp);
// Очищення файлу і запис в нього всіх результатів
fin = fopen ("score.dat", "wb"); (n == 10) n -; (& nss, sizeof (ns), n +1, fin); (); (fin);
} Menu :: PrintScore (void)// Друк результатів
{FILE *
} Menu :: Game (int g)// Функція "Ігри"
{* fin, * save; (); n = N, key = 0, i, step = 1, stt, st, sn, flag = 0 ;//n-кількість кульок
// key - "клавішна" змінна
// i - мінлива для циклів
// step - швидкість куль
// stt - звіт часу (60 - якщо гра нова, або із збереження)
// st - час, що залишився
// sn - кількість очок
// flag - визначення на "Паузу" або "Кінець гри"...