NormalBall * nb = new NormalBall; * bb = new BadBall; * c = new Catch;
char time [3], score [3], level [2];// Рядкові змінні, для відображення у "інформаційній зоні"
fin = fopen ("temp.dat", "rb") ;//Зчитування даних про поточний профілі
fread (& ns, sizeof (ns), 1, fin); (fin); _t t2, t1; 1 = clock () ;//Час початку гри
if (g! = 0)// перевірка на "нова гра" або "продовжити"
{save = fopen (savepath, "rb") ;//Продовжити, завантаження збереження
fread (& sg, sizeof (sg), 1, save); = sg.time; = sg.n; = sg.score; = sg.time; = sg.step; (save); p>
}
else// Нова гра, присвоєння "Звичайних" значень
{for (i = 0; i <= n-1; i + +)
{sg.x [i] = 20 + rand ()% 620;. y [i] = 0;
}. x [5] = 20 + rand ()% 620;. y [5] = 0;. x [N] = 320;. y [N] = 400; = 60; = 0; p>
} (1, GREEN);// Мертва зона (0,401,640,420);
// Інформаційна зона (1, WHITE); (0,420,640,480); (DEFAULT_FONT, HORIZ_DIR, - Пастка вліво. "); (300,440," -> - Пастка вправо. "); p> outtextxy (300,460, "Esc - Пауза, вихід в меню.");
setcolor (5);
outtextxy (150,440, ns.name);
// В принципі, гра починається з цього моменту, отрисовка об'єктів у початкових положеннях
for
{for (i = 0; i <= n-1; i + +)// Ховаємо всі об'єкти> hide (sg.x [i], sg.y [i]);> hide (sg.x [ 5], sg.y [5]); (st)// "тимчасова" перевірка
{
case 45: {step = 2 ;//швидкість
n = N-1;// кількість куль
break;
} 30: {step = 4 ;//--/-- = N-2;// --/--;
} 15: {step = 6 ;//--/-- = N-3;// --/--;
}
case 0: {flag = 1;// Кінець гри
}
}
// Запис значень в структуру для здійснення збережень
sg.n = n;. time = st;. score = sn;. step = step; = getch (); (key)
{37: {if (sg.x [N]! = 20)// Пастка вліво
{c-> hide (sg.x [N], sg.y [N]);. x [N] - = 20;> show (sg.x [N], sg.y [N ]);
};
} 39: {if (sg.x [N]! = 620)// Пастка вправо
{c-> hide (sg.x [N], sg.y [N]);. x [N] + = 20;> show (sg.x [N], sg.y [N ]);
};
} 27: {save = fopen (savepath, "wb") ;//Пауза (& sg, sizeof (sg), 1, save) ;//Запис збереження
fclose (save);
Pause ();
break;
}
}
for (i = 0; i <= n-1; i + +)// Провека на зіткнення куль з пасткою
if ((sg.y [i]> = 390) && (sg.x [i]> = sg.x [4] -20) && (sg.x [i ] <= sg.x [4] +20)) sn + +;// Звичайний куля (sn> 0 && (sg.y [5]> = 390) && (sg.x [5 ]> = sg.x [4] -20) && (sg.x [5] <= sg.x [4] +20)) sn -;// Шкідливий куля
// перевірка на дотяженіе куль "мертвої зони"
for (i = 0; i <= n-1; i + +)
{if (sg.y [i] <390) sg.y [i] + = (1 + i) * step; {. x [i] = 20 + rand ()% 620;. y [ i] = 0;
}
} (sg.y [5] <390) sg.y [5] + = (1 + i) * step; {. x [5] = 20 + rand ()% 620;. y [5 ] = 0;}
// Отрісовка об'єктів
for (i = 0; i <= n-1; i + +)
{nb-> show (sg.x [i], sg.y [i]);
}> show (sg.x [5], sg.y [5]);
// час = clock () ;//Поточний час = stt-(t2-t1)/CLOCKS_PER_SEC;// Обчислення залишився
bar (60,424,78,436) ;//Зафарбовування старої інформації
bar (60,444,78,456); (150,424,160,436); (DEFAULT_FONT, HORIZ_DIR, 16); (5);
setfillstyle (1, BLUE);// Запис нової інформації
outtextxy (60,420, time) ;//Інформаційна зона, Час
outtextxy (60,440, score) ;//Інформаційна зона, Окуляри
outtextxy (150,420, level) ;//Інформаційна зона, Рівень
setfillstyle (1, GREEN);
bar (0,401,640,420);
sleep (10);
}
ns.score = sn;// Запис кол-ва набраних очок
cleardevice (); nb; bb;// Шкідливий шарc; (DEFAULT_FONT, HORIZ_DIR, 20); (YELLOW) ;//Висновок вікна "завершення гри"
outtextxy (60,60, "Гра закінчена!");
outtextxy (60,120, "Ви набрали:");
outtextxy (300,230, "очок");
outtextxy (60,400, "Натисніть будь-яку клавішу ...");
remove (savepath) ;//Видалення збереження, оскільки гра закінчена
settextstyle (DEFAULT_FONT, HORIZ_DIR, 50); (GREEN); (230,200, score) ;//Висновок очок = 0; ();// Запис результатів (key == 0)
{key = getch ();
} ();// Висновок таблиці результатів
} Menu :: Pause (void)// Функція "Паузи"
outtextxy (x0, y0 +40, "Вийти в головне меню");
int key = 1, pos = 1, flagexit = 1; (RED); (x0-10, y0 +12 + (pos-1) * 20,4); (flagexit)// Навігація по меню p>
{key = getch (); (key)
{case 38: {if (pos> 1) {setcolor (BLACK); (x0-10, y0 +12 + (pos-1) * 20,4); -; (RED); (x0-10 , y0 +12 + (pos-1) * 20,4);
};
} 40: {if (pos <3) {setcolor (BLACK); (x0-10, y0 +12 + (pos-1) * 20,4); + +; (RED); (x0-10 , y0 +12 + (pos-1) * 20,4);
};
} (27): {ExitOutGame ();} (13): {if (pos == 1) {Game (1); return;} (pos == 2) {remove (savepath); Game (0 ); return;} (pos == 3) {MenuGam...